@@ -33,7 +33,6 @@ import org.ccci.gto.support.turbine.awaitItemMatching
3333import org.cru.godtools.base.CONFIG_UI_DASHBOARD_PERSONALIZATION_ENABLED
3434import org.cru.godtools.base.Settings
3535import org.cru.godtools.base.ui.circuit.screen.dashboard.page.ToolsScreen
36- import org.cru.godtools.db.repository.ToolsRepository
3736import org.cru.godtools.model.Language
3837import org.cru.godtools.model.Tool
3938import org.cru.godtools.model.randomTool
@@ -59,7 +58,7 @@ import org.robolectric.annotation.Config
5958class ToolsPresenterTest {
6059 private var isPersonalizationEnabled = false
6160 private val countryFlow = MutableStateFlow <String ?>(" US" )
62- private val toolsFlow = MutableStateFlow (emptyList<Tool >())
61+ private val featuredToolsFlow = MutableStateFlow (emptyList<Tool >())
6362 private val filteredToolsFlow = MutableStateFlow (emptyList<Tool >())
6463 private val toolOrderSync = Channel <Boolean >()
6564
@@ -76,16 +75,16 @@ class ToolsPresenterTest {
7675 coEvery { syncToolOrder(any(), any(), any()) } coAnswers { toolOrderSync.receive() }
7776 }
7877 private val favoriteToolsBannerPresenter = FakeBannerPresenter <FavoriteToolsBannerPresenter .UiState >(null )
78+ private val featuredToolsFlowProducer: FeaturedToolsFlowProducer = mockk {
79+ every { getFlow(any(), any()) } returns featuredToolsFlow
80+ }
7981 private val filteredToolsFlowProducer: FilteredToolsFlowProducer = mockk {
8082 every { getFlow(any(), any(), any()) } returns filteredToolsFlow
8183 }
8284 private val navigator = FakeNavigator (ToolsScreen )
8385 private val remoteConfig: FirebaseRemoteConfig = mockk {
8486 every { getBoolean(CONFIG_UI_DASHBOARD_PERSONALIZATION_ENABLED ) } answers { isPersonalizationEnabled }
8587 }
86- private val toolsRepository: ToolsRepository = mockk {
87- every { getNormalToolsFlow() } returns toolsFlow
88- }
8988 private val toolFiltersStateProducer = FakeToolFiltersStateProducer ()
9089 private val toolCardPresenter = FakeToolCardPresenter ()
9190
@@ -94,8 +93,8 @@ class ToolsPresenterTest {
9493 remoteConfig = remoteConfig,
9594 settings = settings,
9695 toolCardPresenter = toolCardPresenter,
97- toolsRepository = toolsRepository,
9896 favoriteToolsBannerPresenter = favoriteToolsBannerPresenter,
97+ featuredToolsFlowProducer = featuredToolsFlowProducer,
9998 filteredToolsFlowProducer = filteredToolsFlowProducer,
10099 toolFiltersStateProducer = toolFiltersStateProducer,
101100 syncService = syncService,
@@ -185,54 +184,30 @@ class ToolsPresenterTest {
185184
186185 // region State.spotlightTools
187186 @Test
188- fun `Property spotlightTools` () = testScope.runTest {
189- val normalTool = randomTool(" normal" , isHidden = false , isSpotlight = false )
190- val spotlightTool = randomTool(" spotlight" , isHidden = false , isSpotlight = true )
191-
192- presenter.test {
193- toolsFlow.value = listOf (normalTool, spotlightTool)
194- assertEquals(listOf (spotlightTool), expectMostRecentItem().spotlightTools.map { it.tool })
195- }
196- }
197-
198- @Test
199- fun `Property spotlightTools - Don't show hidden tools` () = testScope.runTest {
200- val hiddenTool = randomTool(" normal" , isHidden = true , isSpotlight = true )
201- val spotlightTool = randomTool(" spotlight" , isHidden = false , isSpotlight = true )
202-
203- presenter.test {
204- toolsFlow.value = listOf (hiddenTool, spotlightTool)
205- assertEquals(listOf (spotlightTool), expectMostRecentItem().spotlightTools.map { it.tool })
206- }
207- }
208-
209- @Test
210- fun `Property spotlightTools - Sorted by default order` () = testScope.runTest {
211- val tools = List (10 ) {
212- randomTool(" tool$it " , Tool .Type .TRACT , defaultOrder = it, isHidden = false , isSpotlight = true )
213- }
187+ fun `State - spotlightTools - shows tools from featuredToolsFlowProducer` () = testScope.runTest {
188+ val tool = randomTool(isHidden = false , isSpotlight = true )
214189
215190 presenter.test {
216- toolsFlow .value = tools.shuffled( )
217- assertEquals(tools , expectMostRecentItem().spotlightTools.map { it.tool })
191+ featuredToolsFlow .value = listOf (tool )
192+ assertEquals(listOf (tool) , expectMostRecentItem().spotlightTools.map { it.tool })
218193 }
219194 }
220195
221196 @Test
222- fun `Property spotlightTools - Don't show spotlight tools for ALL_TOOLS` () = testScope.runTest {
223- isPersonalizationEnabled = true
224- val normalTool = randomTool(" normal" , isHidden = false , isSpotlight = false )
225- val spotlightTool = randomTool(" spotlight" , isHidden = false , isSpotlight = true )
226- toolsFlow.value = listOf (normalTool, spotlightTool)
227-
228- presenter.test {
229- val initialState = awaitInitialItem()
230- assertEquals(listOf (spotlightTool), initialState.spotlightTools.map { it.tool })
231-
232- initialState.eventSink(UiEvent .ChangeMode (Mode .ALL_TOOLS ))
233- assertEquals(emptyList(), expectMostRecentItem().spotlightTools)
197+ fun `State - spotlightTools - Don't show spotlight tools for ALL_TOOLS when personalization enabled` () =
198+ testScope.runTest {
199+ isPersonalizationEnabled = true
200+ val spotlightTool = randomTool(isHidden = false , isSpotlight = true )
201+ featuredToolsFlow.value = listOf (spotlightTool)
202+
203+ presenter.test {
204+ val initialState = awaitInitialItem()
205+ assertEquals(listOf (spotlightTool), initialState.spotlightTools.map { it.tool })
206+
207+ initialState.eventSink(UiEvent .ChangeMode (Mode .ALL_TOOLS ))
208+ assertEquals(emptyList(), expectMostRecentItem().spotlightTools)
209+ }
234210 }
235- }
236211 // endregion State.spotlightTools
237212
238213 // region State.filters
0 commit comments