Skip to content

Commit b0e7f96

Browse files
committed
Added initial tests
1 parent 0df4dc0 commit b0e7f96

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

app/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import org.gradle.kotlin.dsl.support.zipTo
22
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
3+
import org.jetbrains.compose.ExperimentalComposeLibrary
34
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
45
import org.jetbrains.compose.desktop.application.tasks.AbstractJPackageTask
56
import org.jetbrains.compose.internal.de.undercouch.gradle.tasks.download.Download
@@ -121,6 +122,9 @@ dependencies {
121122
testImplementation(libs.mockitoKotlin)
122123
testImplementation(libs.junitJupiter)
123124
testImplementation(libs.junitJupiterParams)
125+
126+
@OptIn(ExperimentalComposeLibrary::class)
127+
testImplementation(compose.uiTest)
124128
}
125129

126130
tasks.test {

app/src/processing/app/Preferences.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ class ReactiveProperties: Properties() {
3232
}
3333

3434
operator fun get(key: String): String? = getProperty(key)
35+
36+
operator fun set(key: String, value: String) {
37+
setProperty(key, value)
38+
}
3539
}
3640
val LocalPreferences = compositionLocalOf<ReactiveProperties> { error("No preferences provided") }
3741
@OptIn(FlowPreview::class)
@@ -53,7 +57,7 @@ fun PreferencesProvider(content: @Composable () -> Unit){
5357
LaunchedEffect(properties) {
5458
snapshotFlow { properties._stateMap.toMap() }
5559
.dropWhile { it == initialState }
56-
.debounce(1000)
60+
.debounce(100)
5761
.collect {
5862
preferencesFile.outputStream().use { output ->
5963
output.write(
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package processing.app
2+
3+
import androidx.compose.material.Button
4+
import androidx.compose.material.Text
5+
import androidx.compose.ui.Modifier
6+
import androidx.compose.ui.platform.testTag
7+
import androidx.compose.ui.test.*
8+
import kotlin.test.Test
9+
10+
class PreferencesKtTest{
11+
@OptIn(ExperimentalTestApi::class)
12+
@Test
13+
fun testKeyReactivity() = runComposeUiTest {
14+
val newValue = (0..Int.MAX_VALUE).random().toString()
15+
val testKey = "test.preferences.reactivity.$newValue"
16+
setContent {
17+
PreferencesProvider {
18+
val preferences = LocalPreferences.current
19+
Text(preferences[testKey] ?: "default", modifier = Modifier.testTag("text"))
20+
21+
Button(onClick = {
22+
preferences[testKey] = newValue
23+
}, modifier = Modifier.testTag("button")) {
24+
Text("Change")
25+
}
26+
}
27+
}
28+
29+
onNodeWithTag("text").assertTextEquals("default")
30+
onNodeWithTag("button").performClick()
31+
onNodeWithTag("text").assertTextEquals(newValue)
32+
}
33+
34+
}

0 commit comments

Comments
 (0)