Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit adfa2a4

Browse files
committedMar 21, 2025·
Unit tests for active instance store
1 parent 0089ccb commit adfa2a4

File tree

2 files changed

+80
-1
lines changed

2 files changed

+80
-1
lines changed
 

‎core/src/commonMain/kotlin/com/powersync/db/ActiveInstanceStore.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ internal class ActiveDatabaseGroup(
4242
Please check your PowerSync client instantiation logic if this is not intentional.
4343
""".trimIndent()
4444

45-
private val allGroups = mutableListOf<ActiveDatabaseGroup>()
45+
internal val allGroups = mutableListOf<ActiveDatabaseGroup>()
4646

4747
private fun findGroup(
4848
warnOnDuplicate: Logger,
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.powersync.db
2+
3+
import co.touchlab.kermit.ExperimentalKermitApi
4+
import co.touchlab.kermit.Logger
5+
import co.touchlab.kermit.Severity
6+
import co.touchlab.kermit.TestConfig
7+
import co.touchlab.kermit.TestLogWriter
8+
import kotlin.test.BeforeTest
9+
import kotlin.test.Test
10+
import kotlin.test.assertEquals
11+
import kotlin.test.assertNotNull
12+
13+
@OptIn(ExperimentalKermitApi::class)
14+
class ActiveDatabaseGroupTest {
15+
16+
private val logWriter =
17+
TestLogWriter(
18+
loggable = Severity.Debug,
19+
)
20+
21+
private val logger =
22+
Logger(
23+
TestConfig(
24+
minSeverity = Severity.Debug,
25+
logWriterList = listOf(logWriter),
26+
),
27+
)
28+
29+
@BeforeTest
30+
fun setupDatabase() {
31+
logWriter.reset()
32+
}
33+
34+
@Test
35+
fun testTrackDatabase() {
36+
val usage = ActiveDatabaseGroup.referenceDatabase(logger, "test")
37+
assertEquals(1, ActiveDatabaseGroup.allGroups.size)
38+
39+
usage.first.dispose()
40+
assertEquals(0, ActiveDatabaseGroup.allGroups.size)
41+
}
42+
43+
@Test
44+
fun testWarnsOnDuplicate() {
45+
val usage = ActiveDatabaseGroup.referenceDatabase(logger, "test")
46+
assertEquals(1, ActiveDatabaseGroup.allGroups.size)
47+
48+
assertEquals(0, logWriter.logs.size)
49+
50+
val another = ActiveDatabaseGroup.referenceDatabase(logger, "test")
51+
assertNotNull(
52+
logWriter.logs.find {
53+
it.message == ActiveDatabaseGroup.multipleInstancesMessage
54+
},
55+
)
56+
57+
assertEquals(usage.first.group, another.first.group)
58+
59+
usage.first.dispose()
60+
assertEquals(1, ActiveDatabaseGroup.allGroups.size)
61+
another.first.dispose()
62+
assertEquals(0, ActiveDatabaseGroup.allGroups.size)
63+
}
64+
65+
@Test
66+
fun testDoesNotWarnForDifferentIdentifiers() {
67+
val usage = ActiveDatabaseGroup.referenceDatabase(logger, "test")
68+
assertEquals(1, ActiveDatabaseGroup.allGroups.size)
69+
val another = ActiveDatabaseGroup.referenceDatabase(logger, "test2")
70+
assertEquals(2, ActiveDatabaseGroup.allGroups.size)
71+
72+
assertEquals(0, logWriter.logs.size)
73+
74+
usage.first.dispose()
75+
assertEquals(1, ActiveDatabaseGroup.allGroups.size)
76+
another.first.dispose()
77+
assertEquals(0, ActiveDatabaseGroup.allGroups.size)
78+
}
79+
}

0 commit comments

Comments
 (0)
Please sign in to comment.