1
+ package org.xmtp.android.library
2
+
3
+ import androidx.test.ext.junit.runners.AndroidJUnit4
4
+ import androidx.test.platform.app.InstrumentationRegistry
5
+ import org.junit.Assert.*
6
+ import org.junit.Before
7
+ import org.junit.Test
8
+ import org.junit.runner.RunWith
9
+ import org.xmtp.android.library.messages.PrivateKey
10
+ import org.xmtp.android.library.messages.PrivateKeyBuilder
11
+ import org.xmtp.android.library.messages.walletAddress
12
+ import uniffi.xmtpv3.org.xmtp.android.library.codecs.GroupMembershipChangeCodec
13
+ import uniffi.xmtpv3.org.xmtp.android.library.codecs.GroupMembershipChanges
14
+
15
+ @RunWith(AndroidJUnit4 ::class )
16
+ class GroupMembershipChangeTest {
17
+ lateinit var fakeApiClient: FakeApiClient
18
+ lateinit var alixWallet: PrivateKeyBuilder
19
+ lateinit var boWallet: PrivateKeyBuilder
20
+ lateinit var alix: PrivateKey
21
+ lateinit var alixClient: Client
22
+ lateinit var bo: PrivateKey
23
+ lateinit var boClient: Client
24
+ lateinit var caroWallet: PrivateKeyBuilder
25
+ lateinit var caro: PrivateKey
26
+ lateinit var caroClient: Client
27
+ lateinit var fixtures: Fixtures
28
+
29
+ @Before
30
+ fun setUp () {
31
+ val context = InstrumentationRegistry .getInstrumentation().targetContext
32
+ fixtures =
33
+ fixtures(
34
+ clientOptions = ClientOptions (
35
+ ClientOptions .Api (XMTPEnvironment .LOCAL , false ),
36
+ enableAlphaMls = true ,
37
+ appContext = context
38
+ )
39
+ )
40
+ alixWallet = fixtures.aliceAccount
41
+ alix = fixtures.alice
42
+ boWallet = fixtures.bobAccount
43
+ bo = fixtures.bob
44
+ caroWallet = fixtures.caroAccount
45
+ caro = fixtures.caro
46
+
47
+ fakeApiClient = fixtures.fakeApiClient
48
+ alixClient = fixtures.aliceClient
49
+ boClient = fixtures.bobClient
50
+ caroClient = fixtures.caroClient
51
+ }
52
+
53
+ @Test
54
+ fun testCanAddMembers () {
55
+ Client .register(codec = GroupMembershipChangeCodec ())
56
+
57
+ val group = alixClient.conversations.newGroup(listOf (bo.walletAddress, caro.walletAddress))
58
+ val messages = group.messages()
59
+ assertEquals(messages.size, 1 )
60
+ val content: GroupMembershipChanges ? = messages.first().content()
61
+ assertEquals(
62
+ listOf (bo.walletAddress, caro.walletAddress),
63
+ content?.membersAdded?.map { it.accountAddress }?.sorted()
64
+ )
65
+ assert (content?.membersRemoved.isNullOrEmpty())
66
+ }
67
+
68
+ @Test
69
+ fun testCanRemoveMembers () {
70
+ Client .register(codec = GroupMembershipChangeCodec ())
71
+
72
+ val group = alixClient.conversations.newGroup(listOf (bo.walletAddress, caro.walletAddress))
73
+ val messages = group.messages()
74
+ assertEquals(messages.size, 1 )
75
+ group.removeMembers(listOf (caro.walletAddress))
76
+ assertEquals(messages.size, 2 )
77
+ val content: GroupMembershipChanges ? = messages.first().content()
78
+ assertEquals(
79
+ listOf (caro.walletAddress),
80
+ content?.membersRemoved?.map { it.accountAddress }?.sorted()
81
+ )
82
+ assert (content?.membersAdded.isNullOrEmpty())
83
+ }
84
+ }
0 commit comments