@@ -12,7 +12,7 @@ expect fun runTest(test: suspend () -> Unit)
1212class FirebaseDatabaseTest {
1313
1414 @Serializable
15- data class DatabaseTest (val prop : String , val likes : Int = 0 )
15+ data class DatabaseTest (val title : String , val likes : Int = 0 )
1616
1717 @BeforeTest
1818 fun initializeFirebase () {
@@ -34,51 +34,56 @@ class FirebaseDatabaseTest {
3434 }
3535 }
3636
37- @AfterTest
38- fun tearDown () {
39- Firebase
40- .takeIf { Firebase .apps(context).isNotEmpty() }
41- ?.apply { app.delete() }
42- }
43-
4437 @Test
4538 fun testBasicIncrementTransaction () = runTest {
46- val data = DatabaseTest (" post1 " , 2 )
39+ val data = DatabaseTest (" PostOne " , 2 )
4740 val userRef = Firebase .database.reference(" users/user_1/post_id_1" )
4841 setupDatabase(userRef, data, DatabaseTest .serializer())
4942
5043 // Check database before transaction
5144 val userDocBefore = userRef.valueEvents.first().value(DatabaseTest .serializer())
52- assertEquals(data.prop , userDocBefore.prop )
45+ assertEquals(data.title , userDocBefore.title )
5346 assertEquals(data.likes, userDocBefore.likes)
5447
5548 // Run transaction
56- userRef.runTransaction(DatabaseTest .serializer()) { DatabaseTest (data.prop, it.likes + 1 ) }
49+ val transactionSnapshot = userRef.runTransaction(DatabaseTest .serializer()) { DatabaseTest (data.title, it.likes + 1 ) }
50+ val userDocAfter = transactionSnapshot.value(DatabaseTest .serializer())
5751
5852 // Check the database after transaction
59- val userDocAfter = userRef.valueEvents.first().value(DatabaseTest .serializer())
60- assertEquals(data.prop, userDocAfter.prop)
61- assertEquals(data.likes, userDocAfter.likes + 1 )
53+ assertEquals(data.title, userDocAfter.title)
54+ assertEquals(data.likes + 1 , userDocAfter.likes)
55+
56+ // cleanUp Firebase
57+ cleanUp()
6258 }
6359
6460 @Test
6561 fun testBasicDecrementTransaction () = runTest {
66- val data = DatabaseTest (" post2 " , 2 )
62+ val data = DatabaseTest (" PostTwo " , 2 )
6763 val userRef = Firebase .database.reference(" users/user_1/post_id_2" )
6864 setupDatabase(userRef, data, DatabaseTest .serializer())
6965
7066 // Check database before transaction
7167 val userDocBefore = userRef.valueEvents.first().value(DatabaseTest .serializer())
72- assertEquals(data.prop , userDocBefore.prop )
68+ assertEquals(data.title , userDocBefore.title )
7369 assertEquals(data.likes, userDocBefore.likes)
7470
7571 // Run transaction
76- userRef.runTransaction(DatabaseTest .serializer()) { DatabaseTest (data.prop, it.likes - 1 ) }
72+ val transactionSnapshot = userRef.runTransaction(DatabaseTest .serializer()) { DatabaseTest (data.title, it.likes - 1 ) }
73+ val userDocAfter = transactionSnapshot.value(DatabaseTest .serializer())
7774
7875 // Check the database after transaction
79- val userDocAfter = userRef.valueEvents.first().value(DatabaseTest .serializer())
80- assertEquals(data.prop, userDocAfter.prop)
81- assertEquals(data.likes, userDocAfter.likes - 1 )
76+ assertEquals(data.title, userDocAfter.title)
77+ assertEquals(data.likes - 1 , userDocAfter.likes)
78+
79+ // cleanUp Firebase
80+ cleanUp()
81+ }
82+
83+ private fun cleanUp () {
84+ Firebase
85+ .takeIf { Firebase .apps(context).isNotEmpty() }
86+ ?.apply { app.delete() }
8287 }
8388
8489 private suspend fun <T > setupDatabase (ref : DatabaseReference , data : T , strategy : SerializationStrategy <T >) {
0 commit comments