1
1
package org.xmtp.android.library
2
2
3
- import android.util.Log
4
3
import androidx.test.ext.junit.runners.AndroidJUnit4
5
4
import androidx.test.platform.app.InstrumentationRegistry
6
- import kotlinx.coroutines.runBlocking
7
- import org.junit.Assert
5
+ import app.cash.turbine.test
6
+ import kotlinx.coroutines.ExperimentalCoroutinesApi
8
7
import org.junit.Assert.*
9
8
import org.junit.Before
10
9
import org.junit.Test
11
10
import org.junit.runner.RunWith
11
+ import org.xmtp.android.library.codecs.ContentTypeReaction
12
+ import org.xmtp.android.library.codecs.Reaction
13
+ import org.xmtp.android.library.codecs.ReactionAction
14
+ import org.xmtp.android.library.codecs.ReactionCodec
15
+ import org.xmtp.android.library.codecs.ReactionSchema
12
16
import org.xmtp.android.library.messages.PrivateKey
13
17
import org.xmtp.android.library.messages.PrivateKeyBuilder
14
18
import org.xmtp.android.library.messages.walletAddress
15
19
20
+ @OptIn(ExperimentalCoroutinesApi ::class )
16
21
@RunWith(AndroidJUnit4 ::class )
17
22
class GroupTest {
18
23
lateinit var fakeApiClient: FakeApiClient
@@ -139,24 +144,61 @@ class GroupTest {
139
144
140
145
@Test
141
146
fun testCanSendContentTypesToGroup () {
147
+ Client .register(codec = ReactionCodec ())
148
+
142
149
val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
150
+ group.send(" gm" )
151
+ val messageToReact = group.messages()[0 ]
143
152
144
- }
153
+ val reaction = Reaction (
154
+ reference = messageToReact.id,
155
+ action = ReactionAction .Added ,
156
+ content = " U+1F603" ,
157
+ schema = ReactionSchema .Unicode
158
+ )
145
159
146
- @Test
147
- fun testCanStreamGroupMessages () {
148
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
160
+ group.send(content = reaction, options = SendOptions (contentType = ContentTypeReaction ))
161
+
162
+ val messages = group.messages()
163
+ assertEquals(messages.size, 3 )
164
+ val content: Reaction ? = messages.first().content()
165
+ assertEquals(" U+1F603" , content?.content)
166
+ assertEquals(messageToReact.id, content?.reference)
167
+ assertEquals(ReactionAction .Added , content?.action)
168
+ assertEquals(ReactionSchema .Unicode , content?.schema)
149
169
}
150
170
151
171
@Test
152
- fun testCanStreamGroups () {
172
+ fun testCanStreamGroupMessages () = kotlinx.coroutines.test.runTest {
153
173
val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
154
174
175
+ group.streamMessages().test {
176
+ group.send(" hi" )
177
+ assertEquals(" hi" , awaitItem().body)
178
+ awaitComplete()
179
+ }
155
180
}
156
181
157
182
@Test
158
- fun testCanStreamGroupsAndConversations () {
159
- val group = boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
183
+ fun testCanStreamGroups () = kotlinx.coroutines.test.runTest {
184
+ boClient.conversations.streamGroups().test {
185
+ val conversation =
186
+ boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
187
+ conversation.send(content = " hi" )
188
+ assertEquals(" hi" , awaitItem().messages().first().body)
189
+ awaitComplete()
190
+ }
191
+ }
160
192
193
+ @Test
194
+ fun testCanStreamGroupsAndConversations () = kotlinx.coroutines.test.runTest {
195
+ boClient.conversations.stream(includeGroups = true ).test {
196
+ val group =
197
+ boClient.conversations.newGroup(listOf (alix.walletAddress.lowercase()))
198
+ val conversation =
199
+ boClient.conversations.newConversation(alix.walletAddress.lowercase())
200
+ assertEquals(" hi" , awaitItem().messages().first().body)
201
+ awaitComplete()
202
+ }
161
203
}
162
204
}
0 commit comments