@@ -31,7 +31,12 @@ expect fun runTest(test: suspend CoroutineScope.() -> Unit)
3131class FirebaseFirestoreTest {
3232
3333 @Serializable
34- data class FirestoreTest (val prop1 : String , val time : Double = 0.0 , val count : Int = 0 )
34+ data class FirestoreTest (
35+ val prop1 : String ,
36+ val time : Double = 0.0 ,
37+ val count : Int = 0 ,
38+ val list : List <String > = emptyList(),
39+ )
3540
3641 @BeforeTest
3742 fun initializeFirebase () {
@@ -254,6 +259,36 @@ class FirebaseFirestoreTest {
254259 assertEquals(5 , dataAfter.count)
255260 }
256261
262+ @Test
263+ fun testArrayUnion () = runTest {
264+ val doc = Firebase .firestore
265+ .collection(" testFirestoreArrayUnion" )
266+ .document(" test1" )
267+
268+ doc.set(FirestoreTest .serializer(), FirestoreTest (" increment1" , list = listOf (" first" )))
269+ val dataBefore = doc.get().data(FirestoreTest .serializer())
270+ assertEquals(listOf (" first" ), dataBefore.list)
271+
272+ doc.update(" list" to FieldValue .arrayUnion(" second" ))
273+ val dataAfter = doc.get().data(FirestoreTest .serializer())
274+ assertEquals(listOf (" first" , " second" ), dataAfter.list)
275+ }
276+
277+ @Test
278+ fun testArrayRemove () = runTest {
279+ val doc = Firebase .firestore
280+ .collection(" testFirestoreArrayRemove" )
281+ .document(" test1" )
282+
283+ doc.set(FirestoreTest .serializer(), FirestoreTest (" increment1" , list = listOf (" first" , " second" )))
284+ val dataBefore = doc.get().data(FirestoreTest .serializer())
285+ assertEquals(listOf (" first" , " second" ), dataBefore.list)
286+
287+ doc.update(" list" to FieldValue .arrayRemove(" second" ))
288+ val dataAfter = doc.get().data(FirestoreTest .serializer())
289+ assertEquals(listOf (" first" ), dataAfter.list)
290+ }
291+
257292 private suspend fun setupFirestoreData () {
258293 Firebase .firestore.collection(" testFirestoreQuerying" )
259294 .document(" one" )
0 commit comments