MockBotBaseTest.kt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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.Mirai
  11. import net.mamoe.mirai.contact.MemberPermission
  12. import net.mamoe.mirai.event.events.MemberPermissionChangeEvent
  13. import net.mamoe.mirai.mock.contact.MockNormalMember
  14. import net.mamoe.mirai.mock.test.MockBotTestBase
  15. import net.mamoe.mirai.mock.userprofile.buildUserProfile
  16. import net.mamoe.mirai.mock.utils.simpleMemberInfo
  17. import org.junit.jupiter.api.Test
  18. import kotlin.test.assertEquals
  19. import kotlin.test.assertSame
  20. import kotlin.test.assertTrue
  21. internal class MockBotBaseTest : MockBotTestBase() {
  22. @Test
  23. internal fun testMockBotMocking() = runTest {
  24. repeat(50) { i ->
  25. bot.addFriend(20000L + i, "usr$i")
  26. bot.addStranger(10000L + i, "stranger$i")
  27. bot.addGroup(798100000L + i, "group$i")
  28. }
  29. assertEquals(50, bot.friends.size)
  30. assertEquals(50, bot.strangers.size)
  31. assertEquals(50, bot.groups.size)
  32. repeat(50) { i ->
  33. assertEquals("usr$i", bot.getFriendOrFail(20000L + i).nick)
  34. assertEquals("stranger$i", bot.getStrangerOrFail(10000L + i).nick)
  35. val group = bot.getGroupOrFail(798100000L + i)
  36. assertEquals("group$i", group.name)
  37. assertSame(group.botAsMember, group.owner)
  38. assertSame(MemberPermission.OWNER, group.botPermission)
  39. assertEquals(0, group.members.size)
  40. }
  41. val mockGroup = bot.getGroupOrFail(798100000L)
  42. repeat(50) { i ->
  43. mockGroup.appendMember(simpleMemberInfo(3700000L + i, "member$i", permission = MemberPermission.MEMBER))
  44. }
  45. repeat(50) { i ->
  46. val member = mockGroup.getOrFail(3700000L + i)
  47. assertEquals(MemberPermission.MEMBER, member.permission)
  48. assertEquals("member$i", member.nick)
  49. assertTrue(member.nameCard.isEmpty())
  50. assertEquals(MemberPermission.OWNER, mockGroup.botPermission)
  51. }
  52. val newOwner: MockNormalMember
  53. runAndReceiveEventBroadcast {
  54. newOwner = mockGroup.addMember(simpleMemberInfo(84485417, "root", permission = MemberPermission.OWNER))
  55. }.let { events ->
  56. assertEquals(0, events.size)
  57. }
  58. assertEquals(MemberPermission.OWNER, newOwner.permission)
  59. assertEquals(MemberPermission.MEMBER, mockGroup.botPermission)
  60. assertSame(newOwner, mockGroup.owner)
  61. val newNewOwner = mockGroup.getOrFail(3700000L)
  62. runAndReceiveEventBroadcast {
  63. mockGroup.changeOwner(newNewOwner)
  64. }.let { events ->
  65. assertEquals(2, events.size)
  66. assertIsInstance<MemberPermissionChangeEvent>(events[0]) {
  67. assertSame(newNewOwner, member)
  68. assertSame(MemberPermission.OWNER, new)
  69. assertSame(MemberPermission.MEMBER, origin)
  70. }
  71. assertIsInstance<MemberPermissionChangeEvent>(events[1]) {
  72. assertSame(newOwner, member)
  73. assertSame(MemberPermission.OWNER, origin)
  74. assertSame(MemberPermission.MEMBER, new)
  75. }
  76. }
  77. assertEquals(MemberPermission.OWNER, newNewOwner.permission)
  78. assertEquals(MemberPermission.MEMBER, newOwner.permission)
  79. assertEquals(MemberPermission.MEMBER, mockGroup.botPermission)
  80. assertSame(newNewOwner, mockGroup.owner)
  81. }
  82. @Test
  83. internal fun testQueryProfile() = runTest {
  84. val service = bot.userProfileService
  85. val profile = buildUserProfile {
  86. nickname("Test0")
  87. }
  88. service.putUserProfile(1, profile)
  89. assertSame(profile, Mirai.queryProfile(bot, 1))
  90. }
  91. }