MockFriendTest.kt 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /*
  2. * Copyright 2019-2022 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/dev/LICENSE
  8. */
  9. package net.mamoe.mirai.mock.test.mock
  10. import net.mamoe.mirai.event.events.*
  11. import net.mamoe.mirai.mock.internal.contact.MockImage
  12. import net.mamoe.mirai.mock.test.MockBotTestBase
  13. import net.mamoe.mirai.utils.cast
  14. import org.junit.jupiter.api.Test
  15. import kotlin.test.assertEquals
  16. import kotlin.test.assertNotEquals
  17. import kotlin.test.assertSame
  18. import kotlin.test.assertTrue
  19. internal class MockFriendTest : MockBotTestBase() {
  20. @Test
  21. internal fun testNewFriendRequest() = runTest {
  22. runAndReceiveEventBroadcast {
  23. bot.broadcastNewFriendRequestEvent(
  24. 1, "Hi", 0, "Hello!"
  25. ).reject()
  26. }.let { events ->
  27. assertEquals(1, events.size)
  28. assertIsInstance<NewFriendRequestEvent>(events[0]) {
  29. assertEquals(1, fromId)
  30. assertEquals("Hi", fromNick)
  31. assertEquals(0, fromGroupId)
  32. assertEquals("Hello!", message)
  33. }
  34. assertEquals(bot.friends.size, 0)
  35. }
  36. runAndReceiveEventBroadcast {
  37. bot.broadcastNewFriendRequestEvent(
  38. 1, "Hi", 0, "Hello!"
  39. ).accept()
  40. }.let { events ->
  41. assertEquals(2, events.size, events.toString())
  42. assertIsInstance<NewFriendRequestEvent>(events[0]) {
  43. assertEquals(1, fromId)
  44. assertEquals("Hi", fromNick)
  45. assertEquals(0, fromGroupId)
  46. assertEquals("Hello!", message)
  47. }
  48. assertIsInstance<FriendAddEvent>(events[1]) {
  49. assertEquals(1, friend.id)
  50. assertEquals("Hi", friend.nick)
  51. assertSame(friend, bot.getFriend(friend.id))
  52. }
  53. assertEquals(1, bot.friends.size)
  54. }
  55. }
  56. @Test
  57. fun testFriendAvatarChangedEvent() = runTest {
  58. runAndReceiveEventBroadcast {
  59. bot.addFriend(111, "a").changeAvatarUrl(MockImage.random(bot).getUrl(bot))
  60. bot.addFriend(222, "b")
  61. }.let { events ->
  62. assertIsInstance<FriendAvatarChangedEvent>(events[0])
  63. assertEquals(111, events[0].cast<FriendAvatarChangedEvent>().friend.id)
  64. assertNotEquals("", bot.getFriend(111)!!.avatarUrl)
  65. assertNotEquals("", bot.getFriend(222)!!.avatarUrl)
  66. assertNotEquals("", bot.getFriend(222)!!.avatarUrl.toUrl().readText())
  67. }
  68. }
  69. @Test
  70. fun testFriendRemarkChangeEvent() = runTest {
  71. runAndReceiveEventBroadcast {
  72. bot.addFriend(1, "").remark = "Test"
  73. }.let { events ->
  74. assertEquals(1, events.size)
  75. assertIsInstance<FriendRemarkChangeEvent>(events[0]) {
  76. assertEquals(1, this.friend.id)
  77. assertEquals("", oldRemark)
  78. assertEquals("Test", newRemark)
  79. }
  80. }
  81. }
  82. @Test
  83. fun testFriendRequestAndAddEvent() = runTest {
  84. runAndReceiveEventBroadcast {
  85. bot.broadcastNewFriendRequestEvent(
  86. 1, "Test", 0, "Hi"
  87. ).accept()
  88. bot.broadcastNewFriendRequestEvent(
  89. 2, "Hi", 1, "0"
  90. ).reject()
  91. }.let { events ->
  92. assertEquals(3, events.size)
  93. assertIsInstance<NewFriendRequestEvent>(events[0]) {
  94. assertEquals(1, fromId)
  95. assertEquals("Test", fromNick)
  96. assertEquals(0, fromGroupId)
  97. assertEquals("Hi", message)
  98. }
  99. assertIsInstance<FriendAddEvent>(events[1]) {
  100. assertEquals(1, friend.id)
  101. assertEquals("Test", friend.nick)
  102. }
  103. assertIsInstance<NewFriendRequestEvent>(events[2]) {
  104. assertEquals(2, fromId)
  105. assertEquals("Hi", fromNick)
  106. assertEquals(1, fromGroupId)
  107. assertEquals("0", message)
  108. }
  109. }
  110. }
  111. @Test
  112. fun testFriendNickChangedEvent() = runTest {
  113. runAndReceiveEventBroadcast {
  114. bot.addFriend(0, "Old").nick = "Test"
  115. }.let { events ->
  116. assertEquals(1, events.size)
  117. assertIsInstance<FriendNickChangedEvent>(events[0]) {
  118. assertEquals("Old", from)
  119. assertEquals("Test", to)
  120. }
  121. }
  122. }
  123. @Test
  124. fun testFriendInputStatusChangedEvent() = runTest {
  125. runAndReceiveEventBroadcast {
  126. bot.addFriend(1, "a").broadcastFriendInputStateChange(true)
  127. }.let { events ->
  128. assertEquals(1, events.size)
  129. assertIsInstance<FriendInputStatusChangedEvent>(events[0]) {
  130. assertTrue(inputting)
  131. assertSame(bot.getFriend(1), friend)
  132. }
  133. }
  134. }
  135. }