diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionCountrySelectViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionCountrySelectViewModelTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..6fc0545edb85f385a0cbafe1fad98b23b3d1ed41 --- /dev/null +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionCountrySelectViewModelTest.kt @@ -0,0 +1,59 @@ +package de.rki.coronawarnapp.ui.submission.viewmodel + +import androidx.arch.core.executor.testing.InstantTaskExecutorRule +import de.rki.coronawarnapp.ui.submission.SubmissionCountry +import io.kotest.inspectors.forAll +import io.kotest.inspectors.forAtLeastOne +import io.kotest.inspectors.forAtMostOne +import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.shouldBe +import org.junit.Rule +import org.junit.Test + +class SubmissionCountrySelectViewModelTest { + @get:Rule + val instantTaskExecRule = InstantTaskExecutorRule() + + @Test + fun testFetchCountries() { + val viewModel = SubmissionCountrySelectViewModel() + + viewModel.fetchCountries() + // TODO: implement proper test one backend is merged + viewModel.countries.value!!.shouldHaveSize(2) + } + + @Test + fun testUpdateCountryCheckedState() { + val viewModel = SubmissionCountrySelectViewModel() + + viewModel.fetchCountries() + + viewModel.updateCountryCheckedState(SubmissionCountry("IT", true)) + viewModel.countries.value!!.forAtMostOne { + it.countryCode shouldBe "IT" + it.selected shouldBe true + } + + viewModel.updateCountryCheckedState(SubmissionCountry("IT", false)) + viewModel.countries.value!!.forAtLeastOne { + it.countryCode shouldBe "IT" + it.selected shouldBe false + } + } + + @Test + fun testNoInfoClickRemovesSelections() { + val viewModel = SubmissionCountrySelectViewModel() + + viewModel.fetchCountries() + + viewModel.updateCountryCheckedState(SubmissionCountry("IT", true)) + viewModel.updateCountryCheckedState(SubmissionCountry("ES", true)) + viewModel.countries.value!!.forAll { it.selected shouldBe true } + + viewModel.noInfoClick() + + viewModel.countries.value!!.forAll { it.selected shouldBe false } + } +}