@@ -19,6 +19,7 @@ package com.duckduckgo.duckchat.impl.ui
1919import androidx.test.ext.junit.runners.AndroidJUnit4
2020import app.cash.turbine.test
2121import com.duckduckgo.common.test.CoroutineTestRule
22+ import com.duckduckgo.duckchat.impl.DuckChatInternal
2223import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewViewModel.Command
2324import com.duckduckgo.subscriptions.api.SubscriptionStatus
2425import com.duckduckgo.subscriptions.api.SubscriptionStatus.AUTO_RENEWABLE
@@ -27,7 +28,9 @@ import com.duckduckgo.subscriptions.api.SubscriptionStatus.INACTIVE
2728import com.duckduckgo.subscriptions.api.SubscriptionStatus.UNKNOWN
2829import com.duckduckgo.subscriptions.api.Subscriptions
2930import kotlinx.coroutines.flow.MutableSharedFlow
31+ import kotlinx.coroutines.flow.flowOf
3032import kotlinx.coroutines.test.runTest
33+ import org.junit.Assert.assertFalse
3134import org.junit.Assert.assertTrue
3235import org.junit.Before
3336import org.junit.Rule
@@ -43,14 +46,17 @@ class DuckChatWebViewViewModelTest {
4346 val coroutineTestRule: CoroutineTestRule = CoroutineTestRule ()
4447
4548 private val subscriptions: Subscriptions = mock()
49+ private val duckChat: DuckChatInternal = mock()
4650 private val subscriptionStatusFlow = MutableSharedFlow <SubscriptionStatus >()
4751
4852 private lateinit var viewModel: DuckChatWebViewViewModel
4953
5054 @Before
5155 fun setup () {
5256 whenever(subscriptions.getSubscriptionStatusFlow()).thenReturn(subscriptionStatusFlow)
53- viewModel = DuckChatWebViewViewModel (subscriptions)
57+ whenever(duckChat.observeEnableDuckChatUserSetting()).thenReturn(flowOf(true ))
58+ whenever(duckChat.observeFullscreenModeUserSetting()).thenReturn(flowOf(true ))
59+ viewModel = DuckChatWebViewViewModel (subscriptions, duckChat)
5460 }
5561
5662 @Test
@@ -135,4 +141,38 @@ class DuckChatWebViewViewModelTest {
135141 }
136142 }
137143 }
144+
145+ @Test
146+ fun `fullscreen mode - when flags enabled, then viewstate enabled` () =
147+ runTest {
148+ whenever(duckChat.observeEnableDuckChatUserSetting()).thenReturn(flowOf(true ))
149+ whenever(duckChat.observeFullscreenModeUserSetting()).thenReturn(flowOf(true ))
150+ viewModel = DuckChatWebViewViewModel (
151+ subscriptions,
152+ duckChat = duckChat,
153+ )
154+
155+ viewModel.viewState.test {
156+ val state = awaitItem()
157+ assertTrue(state.isDuckChatUserEnabled)
158+ assertTrue(state.isFullScreenModeEnabled)
159+ }
160+ }
161+
162+ @Test
163+ fun `fullscreen mode - when flags disabled, then viewstate disabled` () =
164+ runTest {
165+ whenever(duckChat.observeEnableDuckChatUserSetting()).thenReturn(flowOf(false ))
166+ whenever(duckChat.observeFullscreenModeUserSetting()).thenReturn(flowOf(false ))
167+ viewModel = DuckChatWebViewViewModel (
168+ subscriptions,
169+ duckChat = duckChat,
170+ )
171+
172+ viewModel.viewState.test {
173+ val state = awaitItem()
174+ assertFalse(state.isDuckChatUserEnabled)
175+ assertFalse(state.isFullScreenModeEnabled)
176+ }
177+ }
138178}
0 commit comments