Skip to content

Commit 4ff80b2

Browse files
committed
Fix infinite test task
1 parent b6eb04b commit 4ff80b2

File tree

3 files changed

+15
-2
lines changed
  • firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals/database
  • firebase-database/src
    • commonTest/kotlin/dev.gitlive.firebase.database
    • jsTest/kotlin/dev.gitlive.firebase.database

3 files changed

+15
-2
lines changed

firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals/database/database.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ external fun limitToLast(limit: Int): QueryConstraint
3939

4040
external fun off(query: Query, eventType: String?, callback: Any?)
4141

42+
external fun goOffline(db: Database)
43+
44+
external fun goOnline(db: Database)
45+
4246
external fun onChildAdded(
4347
query: Query,
4448
callback: ChangeSnapshotCallback,

firebase-database/src/commonTest/kotlin/dev.gitlive.firebase.database/database.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ package dev.gitlive.firebase.database
66

77
import dev.gitlive.firebase.*
88
import kotlinx.coroutines.flow.first
9+
import kotlinx.coroutines.withTimeout
910
import kotlinx.serialization.*
1011
import kotlin.test.*
12+
import kotlin.time.Duration.Companion.seconds
1113

1214
expect val emulatorHost: String
1315
expect val context: Any
@@ -71,7 +73,9 @@ class FirebaseDatabaseTest {
7173

7274
private suspend fun awaitDatabaseConnection() {
7375
// workaround to avoid "Database not connected" exception with Firebase emulator
74-
Firebase.database.reference(".info/connected").valueEvents.first { it.value() }
76+
withTimeout(5.seconds) {
77+
Firebase.database.reference(".info/connected").valueEvents.first { it.value() }
78+
}
7579
}
7680

7781
private suspend fun setupRealtimeData() {

firebase-database/src/jsTest/kotlin/dev.gitlive.firebase.database/database.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
package dev.gitlive.firebase.database
66

7+
import dev.gitlive.firebase.externals.database.getDatabase
8+
import dev.gitlive.firebase.externals.database.goOffline
9+
import dev.gitlive.firebase.externals.database.goOnline
710
import kotlinx.coroutines.GlobalScope
811
import kotlinx.coroutines.promise
912

@@ -14,7 +17,10 @@ actual val context: Any = Unit
1417
actual fun runTest(test: suspend () -> Unit) = GlobalScope
1518
.promise {
1619
try {
20+
val db = getDatabase()
21+
goOnline(db)
1722
test()
23+
goOffline(db) // infinitely running test task workaround
1824
} catch (e: Throwable) {
1925
e.log()
2026
throw e
@@ -28,4 +34,3 @@ internal fun Throwable.log() {
2834
it.log()
2935
}
3036
}
31-

0 commit comments

Comments
 (0)