Skip to content

Commit 9f8dc3d

Browse files
authored
Merge pull request #119 from joreilly/cmp_ui_tests
Compose Multiplatform UI test updates
2 parents 6a2f966 + cac3409 commit 9f8dc3d

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed
Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,52 @@
11
package dev.johnoreilly.climatetrace.screen
22

3-
import androidx.compose.material3.Text
43
import androidx.compose.ui.test.ExperimentalTestApi
54
import androidx.compose.ui.test.onNodeWithText
65
import androidx.compose.ui.test.runComposeUiTest
76
import dev.johnoreilly.climatetrace.remote.Country
7+
import dev.johnoreilly.climatetrace.remote.CountryEmissionsInfo
8+
import dev.johnoreilly.climatetrace.remote.EmissionInfo
9+
import dev.johnoreilly.climatetrace.ui.CountryInfoDetailedView
810
import dev.johnoreilly.climatetrace.ui.CountryListView
11+
import dev.johnoreilly.climatetrace.ui.toPercent
12+
import dev.johnoreilly.climatetrace.viewmodel.CountryDetailsUIState
913
import kotlin.test.Test
1014

1115
@OptIn(ExperimentalTestApi::class)
1216
class ClimateTraceScreenTest {
13-
private val countryList = listOf<Country>(Country("IRL", "IE", "Ireland", "Europe"))
17+
private val country = Country("IRL", "IE", "Ireland", "Europe")
18+
private val countryList = listOf<Country>(country)
19+
private val countryEmissions = EmissionInfo(53_000_000.0f, 75_000_000.0f, 100_000_000.0f)
20+
private val worldEmissions = EmissionInfo(53_000_000_000.0f, 75_000_000_000.0f, 100_000_000_000.0f)
21+
private val countryEmissionsInfo = CountryEmissionsInfo(country = country.alpha3,
22+
rank = 73, emissions = countryEmissions, worldEmissions = worldEmissions)
23+
private val year = "2022"
1424

1525
@Test
16-
fun testCountryListScreen() = runComposeUiTest {
26+
fun testCountryListView() = runComposeUiTest {
1727
setContent {
1828
CountryListView(countryList, null, {})
1929
}
2030

21-
onNodeWithText("Ireland").assertExists()
31+
onNodeWithText(country.name).assertExists()
2232
}
33+
34+
35+
@Test
36+
fun testCountryInfoDetailsView() = runComposeUiTest {
37+
val state = CountryDetailsUIState.Success(country,
38+
year, countryEmissionsInfo, emptyList()
39+
)
40+
setContent {
41+
CountryInfoDetailedView(state, {})
42+
}
43+
44+
onNodeWithText(country.name).assertExists()
45+
val millionTonnes = (countryEmissions.co2 / 1_000_000).toInt()
46+
val percentage = (countryEmissions.co2 / worldEmissions.co2).toPercent(2)
47+
onNodeWithText("co2 = $millionTonnes Million Tonnes ($year)").assertExists()
48+
onNodeWithText("rank = ${countryEmissionsInfo.rank} ($percentage)").assertExists()
49+
}
50+
2351
}
2452

0 commit comments

Comments
 (0)