diff --git a/core/ui/src/main/kotlin/nl/q42/template/ui/compose/ViewStateStringResolver.kt b/core/ui/src/main/kotlin/nl/q42/template/ui/compose/ViewStateStringResolver.kt index 245542f..f5000f6 100644 --- a/core/ui/src/main/kotlin/nl/q42/template/ui/compose/ViewStateStringResolver.kt +++ b/core/ui/src/main/kotlin/nl/q42/template/ui/compose/ViewStateStringResolver.kt @@ -1,7 +1,6 @@ package nl.q42.template.ui.compose import androidx.compose.runtime.Composable -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.stringResource import nl.q42.template.ui.presentation.ViewStateString @@ -10,12 +9,12 @@ import nl.q42.template.ui.presentation.ViewStateString * Resolve a ViewStateString to a string from a Compose context. */ @Composable -fun ViewStateString.resolve(): String { +fun ViewStateString.get(): String { return when (this) { is ViewStateString.Res -> { // Map any nested ViewStateStrings to their resolved values. val resolvedArguments = - this.formatArgs.map { if (it is ViewStateString) it.resolve() else it } + this.formatArgs.map { if (it is ViewStateString) it.get() else it } .toTypedArray() stringResource(id = this.stringRes, formatArgs = resolvedArguments) } diff --git a/feature/home/src/main/kotlin/nl/q42/template/ui/home/HomeContent.kt b/feature/home/src/main/kotlin/nl/q42/template/ui/home/HomeContent.kt index bac6483..adf38cf 100644 --- a/feature/home/src/main/kotlin/nl/q42/template/ui/home/HomeContent.kt +++ b/feature/home/src/main/kotlin/nl/q42/template/ui/home/HomeContent.kt @@ -9,7 +9,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import nl.q42.template.presentation.home.HomeViewState -import nl.q42.template.ui.compose.resolve +import nl.q42.template.ui.compose.get import nl.q42.template.ui.presentation.toViewStateString import nl.q42.template.ui.theme.PreviewAppTheme import nl.q42.template.ui.theme.PreviewLightDark @@ -34,7 +34,7 @@ internal fun HomeContent( */ when (viewState) { is HomeViewState.Data -> viewState.userEmailTitle?.let { userEmailTitle -> - Text(text = userEmailTitle.resolve()) + Text(text = userEmailTitle.get()) } HomeViewState.Empty -> {} diff --git a/feature/home/src/test/kotlin/nl/q42/template/presentation/home/HomeViewModelTest.kt b/feature/home/src/test/kotlin/nl/q42/template/presentation/home/HomeViewModelTest.kt index d22c731..e512b27 100644 --- a/feature/home/src/test/kotlin/nl/q42/template/presentation/home/HomeViewModelTest.kt +++ b/feature/home/src/test/kotlin/nl/q42/template/presentation/home/HomeViewModelTest.kt @@ -4,6 +4,7 @@ import app.cash.turbine.test import io.mockk.coEvery import io.mockk.mockk import junit.framework.TestCase.assertEquals +import junit.framework.TestCase.assertTrue import kotlinx.coroutines.delay import kotlinx.coroutines.test.runTest import nl.q42.template.actionresult.domain.ActionResult @@ -30,10 +31,11 @@ class HomeViewModelTest() { val viewModel = HomeViewModel(getUserUseCaseMock, mockk()) viewModel.uiState.test { - val expectedData: HomeViewState = HomeViewState.Data(ViewStateString.Basic("test@test.com")) assertEquals(HomeViewState.Loading, awaitItem()) - assertEquals(expectedData, awaitItem()) + val viewState = awaitItem() + assertTrue(viewState is HomeViewState.Data) + assertTrue((viewState as HomeViewState.Data).userEmailTitle is ViewStateString.Res) } } @@ -49,8 +51,9 @@ class HomeViewModelTest() { val viewModel = HomeViewModel(getUserUseCaseMock, mockk()) viewModel.uiState.test { - val expectedData: HomeViewState = HomeViewState.Data(ViewStateString.Basic("test@test.com")) - assertEquals(expectedData, awaitItem()) + val viewState = awaitItem() + assertTrue(viewState is HomeViewState.Data) + assertTrue((viewState as HomeViewState.Data).userEmailTitle is ViewStateString.Res) } } }