Skip to content

Commit 2d8edcd

Browse files
committed
Add screenshots for all features in sharedfeatures
1 parent ea05f4e commit 2d8edcd

File tree

24 files changed

+219
-7
lines changed

24 files changed

+219
-7
lines changed

sharedfeatures/src/commonMain/kotlin/io/newm/sharedfeatures/screens/WelcomeScreen.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import io.newm.sharedfeatures.parceling.CommonParcelize
88
@CommonParcelize
99
data object WelcomeScreen : Screen {
1010
sealed interface UiState : CircuitUiState {
11-
data object Loading : UiState
12-
1311
data class Content(
1412
val onEvent: (UiEvent) -> Unit,
1513
) : UiState

sharedfeatures/src/commonMain/kotlin/io/newm/sharedfeatures/welcome/WelcomeUi.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,6 @@ fun WelcomeUi(
5454
},
5555
)
5656
}
57-
58-
UiState.Loading -> {
59-
Text("Welcome to Newm!")
60-
}
6157
}
6258
}
6359

sharedfeatures/src/commonTest/kotlin/io/newm/sharedfeatures/welcome/WelcomePresenterTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class WelcomePresenterTest {
5555
@Composable
5656
override fun present(): WelcomeScreen.UiState {
5757
var state: WelcomeScreen.UiState by remember {
58-
mutableStateOf(WelcomeScreen.UiState.Loading)
58+
mutableStateOf(WelcomeScreen.UiState.Content {})
5959
}
6060
CompositionLocalProvider(LocalUriHandler provides uriHandler) {
6161
state = realPresenter.present()
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package io.newm.sharedfeatures.paparazzi
2+
3+
import androidx.compose.ui.Modifier
4+
import com.google.testing.junit.testparameterinjector.TestParameter
5+
import com.google.testing.junit.testparameterinjector.TestParameterInjector
6+
import io.newm.core.test.utils.SnapshotTest
7+
import io.newm.core.test.utils.SnapshotTestConfiguration
8+
import io.newm.sharedfeatures.devmenu.DevMenuUi
9+
import io.newm.sharedfeatures.screens.DevMenuItem
10+
import io.newm.sharedfeatures.screens.DevMenuMainScreen
11+
import io.newm.sharedfeatures.screens.FeatureFlagsListScreen
12+
import org.junit.Test
13+
import org.junit.runner.RunWith
14+
15+
@RunWith(TestParameterInjector::class)
16+
class DevMenuUiTest(
17+
@TestParameter configuration: SnapshotTestConfiguration,
18+
) : SnapshotTest(configuration) {
19+
@Test
20+
fun defaultDevMenuUi() {
21+
snapshot {
22+
DevMenuUi(
23+
state =
24+
DevMenuMainScreen.UiState.Content(
25+
menuItems =
26+
listOf(
27+
DevMenuItem(
28+
"Feature Flags",
29+
FeatureFlagsListScreen,
30+
"Manage feature toggles",
31+
),
32+
DevMenuItem("Debug Info", FeatureFlagsListScreen, "App diagnostics"),
33+
),
34+
onEvent = {},
35+
),
36+
modifier = Modifier,
37+
)
38+
}
39+
}
40+
41+
@Test
42+
fun loadingDevMenuUi() {
43+
snapshot { DevMenuUi(state = DevMenuMainScreen.UiState.Loading, modifier = Modifier) }
44+
}
45+
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package io.newm.sharedfeatures.paparazzi
2+
3+
import androidx.compose.ui.Modifier
4+
import com.google.testing.junit.testparameterinjector.TestParameter
5+
import com.google.testing.junit.testparameterinjector.TestParameterInjector
6+
import io.newm.core.test.utils.SnapshotTest
7+
import io.newm.core.test.utils.SnapshotTestConfiguration
8+
import io.newm.shared.commonPublic.featureflags.EvaluationSource
9+
import io.newm.shared.commonPublic.featureflags.FeatureFlag
10+
import io.newm.shared.commonPublic.featureflags.FlagCategory
11+
import io.newm.sharedfeatures.devmenu.FeatureFlagsListUi
12+
import io.newm.sharedfeatures.screens.FeatureFlagsListScreen
13+
import org.junit.Test
14+
import org.junit.runner.RunWith
15+
16+
@RunWith(TestParameterInjector::class)
17+
class FeatureFlagsListUiTest(
18+
@TestParameter configuration: SnapshotTestConfiguration,
19+
) : SnapshotTest(configuration) {
20+
@Test
21+
fun defaultFeatureFlagsListUi() {
22+
val flags =
23+
listOf(
24+
FeatureFlagsListScreen.FeatureFlagListItem(
25+
featureFlag =
26+
object : FeatureFlag {
27+
override val key = "flag1"
28+
override val displayName = "Test Flag 1"
29+
override val defaultValue = false
30+
override val category = FlagCategory.BUSINESS_LOGIC
31+
override val description = "Description 1"
32+
},
33+
effectiveValue = true,
34+
remoteValue = true,
35+
localOverrideValue = null,
36+
isOverridden = false,
37+
category = FlagCategory.BUSINESS_LOGIC,
38+
description = "Description 1",
39+
evaluationSource = EvaluationSource.REMOTE_SOURCE,
40+
),
41+
FeatureFlagsListScreen.FeatureFlagListItem(
42+
featureFlag =
43+
object : FeatureFlag {
44+
override val key = "flag2"
45+
override val displayName = "Test Flag 2"
46+
override val defaultValue = true
47+
override val category = FlagCategory.UI_FEATURE
48+
override val description = "Description 2"
49+
},
50+
effectiveValue = false,
51+
remoteValue = true,
52+
localOverrideValue = false,
53+
isOverridden = true,
54+
category = FlagCategory.UI_FEATURE,
55+
description = "Description 2",
56+
evaluationSource = EvaluationSource.LOCAL_OVERRIDE,
57+
),
58+
)
59+
snapshot {
60+
FeatureFlagsListUi(
61+
state =
62+
FeatureFlagsListScreen.UiState.Content(
63+
flags = flags,
64+
groupedFlags = flags.groupBy { it.category },
65+
environmentInfo =
66+
FeatureFlagsListScreen.EnvironmentInfo(
67+
environment = "Development",
68+
clientStatus = "Connected",
69+
lastSync = "2023-10-27T10:00:00Z",
70+
),
71+
onEvent = {},
72+
),
73+
modifier = Modifier,
74+
)
75+
}
76+
}
77+
78+
@Test
79+
fun loadingFeatureFlagsListUi() {
80+
snapshot {
81+
FeatureFlagsListUi(state = FeatureFlagsListScreen.UiState.Loading, modifier = Modifier)
82+
}
83+
}
84+
85+
@Test
86+
fun errorFeatureFlagsListUi() {
87+
snapshot {
88+
FeatureFlagsListUi(
89+
state =
90+
FeatureFlagsListScreen.UiState.Error(
91+
message = "Failed to load flags",
92+
onRetry = {},
93+
),
94+
modifier = Modifier,
95+
)
96+
}
97+
}
98+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.newm.sharedfeatures.paparazzi
2+
3+
import androidx.compose.ui.Modifier
4+
import com.google.testing.junit.testparameterinjector.TestParameter
5+
import com.google.testing.junit.testparameterinjector.TestParameterInjector
6+
import io.newm.core.test.utils.SnapshotTest
7+
import io.newm.core.test.utils.SnapshotTestConfiguration
8+
import io.newm.sharedfeatures.screens.WelcomeScreen.UiState
9+
import io.newm.sharedfeatures.welcome.WelcomeUi
10+
import org.junit.Test
11+
import org.junit.runner.RunWith
12+
13+
@RunWith(TestParameterInjector::class)
14+
class WelcomeUiTest(
15+
@TestParameter configuration: SnapshotTestConfiguration,
16+
) : SnapshotTest(configuration) {
17+
@Test
18+
fun defaultWelcomeUi() {
19+
snapshot { WelcomeUi(state = UiState.Content(onEvent = {}), modifier = Modifier) }
20+
}
21+
}
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)