Skip to content

Commit 2c7ac43

Browse files
committed
write tests for it
1 parent 33bdafa commit 2c7ac43

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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

Comments
 (0)