diff --git a/android/navi-pay/src/androidTest/kotlin/com/navi/pay/onboarding/faq/viewmodel/NaviPayFaqViewModelTest.kt b/android/navi-pay/src/androidTest/kotlin/com/navi/pay/onboarding/faq/viewmodel/NaviPayFaqViewModelTest.kt index 09779e2380..c9263965ee 100644 --- a/android/navi-pay/src/androidTest/kotlin/com/navi/pay/onboarding/faq/viewmodel/NaviPayFaqViewModelTest.kt +++ b/android/navi-pay/src/androidTest/kotlin/com/navi/pay/onboarding/faq/viewmodel/NaviPayFaqViewModelTest.kt @@ -7,12 +7,18 @@ package com.navi.pay.onboarding.faq.viewmodel +import app.cash.turbine.test import com.navi.pay.common.setup.NaviPayCustomerStatusHandler import com.navi.pay.common.utils.DeviceInfoProvider import com.navi.pay.network.testsetup.NaviPayAndroidTest +import com.navi.pay.onboarding.faq.model.view.UpiVideoEntity import dagger.hilt.android.testing.HiltAndroidTest import javax.inject.Inject +import junit.framework.TestCase.assertEquals +import kotlin.time.Duration.Companion.seconds +import kotlinx.coroutines.test.runTest import org.junit.Before +import org.junit.Test @HiltAndroidTest class NaviPayFaqViewModelTest : NaviPayAndroidTest() { @@ -28,4 +34,51 @@ class NaviPayFaqViewModelTest : NaviPayAndroidTest() { naviPayFaqViewModel = NaviPayFaqViewModel(naviPayCustomerStatusHandler = naviPayCustomerStatusHandler) } + + @Test + fun test_bottom_sheet_visibility() = runTest { + naviPayFaqViewModel.isBottomSheetVisible.test(5.seconds) { + // Initially bottom sheet should not visible + assertEquals(false, awaitItem()) + + naviPayFaqViewModel.updateBottomSheetVisibility(isBottomSheetVisible = true) + // bottom sheet should be visible after state update + assertEquals(true, awaitItem()) + + cancelAndIgnoreRemainingEvents() + } + } + + @Test + fun test_ui_options_selected_video() = runTest { + naviPayFaqViewModel.uiOptionsSelectedVideo.test(5.seconds) { + val initialSelectedVideoEntity = + UpiVideoEntity( + languageCode = "en", + languageName = "English", + youtubeVideoId = "X0-QiPD4kqs" + ) + // Initially the default selected video is English + assertEquals(initialSelectedVideoEntity, awaitItem()) + + naviPayFaqViewModel.updateUiOptionsSelectedVideo( + UpiVideoEntity( + languageCode = "hi", + languageName = "Hindi", + youtubeVideoId = "g-Mfbk4j0Y8" + ) + ) + // After updating the selected video to Hindi, the selected video should be Hindi + assertEquals( + UpiVideoEntity( + languageCode = "hi", + languageName = "Hindi", + youtubeVideoId = "g-Mfbk4j0Y8" + ), + awaitItem() + ) + + cancelAndIgnoreRemainingEvents() + } + } }