@@ -27,13 +27,17 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher
2727import kotlinx.coroutines.test.resetMain
2828import kotlinx.coroutines.test.setMain
2929import org.cru.godtools.base.ui.BasePaparazziTest
30+ import org.cru.godtools.base.ui.circuit.screen.dashboard.page.HomeScreen
3031import org.cru.godtools.base.ui.circuit.screen.dashboard.page.LessonsScreen
3132import org.cru.godtools.base.ui.circuit.screen.dashboard.page.ToolsScreen
3233import org.cru.godtools.model.Language
3334import org.cru.godtools.model.Tool
3435import org.cru.godtools.model.randomTool
36+ import org.cru.godtools.ui.banner.tutorial.TutorialFeaturesBannerPresenter
3537import org.cru.godtools.ui.dashboard.DashboardPresenter.UiState
3638import org.cru.godtools.ui.dashboard.filters.FilterMenu
39+ import org.cru.godtools.ui.dashboard.home.HomeLayout
40+ import org.cru.godtools.ui.dashboard.home.HomePresenter
3741import org.cru.godtools.ui.dashboard.lessons.LessonsLayout
3842import org.cru.godtools.ui.dashboard.lessons.LessonsPresenter
3943import org.cru.godtools.ui.dashboard.tools.ToolFiltersStateProducer.Filters
@@ -188,6 +192,62 @@ class DashboardLayoutPaparazziTest(
188192 }
189193 // endregion ToolsLayout
190194
195+ // region HomeLayout
196+ private var homeState = HomePresenter .UiState (
197+ dataLoaded = true ,
198+ spotlightLessons = listOf (
199+ ToolCardStateTestData .tool.copy(toolCode = " lesson" , translation = null )
200+ ),
201+ favoriteTools = listOf (
202+ ToolCardStateTestData .tool.copy(toolCode = " tool1" , translation = null ),
203+ ToolCardStateTestData .tool.copy(toolCode = " tool2" , translation = null ),
204+ ToolCardStateTestData .tool.copy(toolCode = " tool3" , translation = null ),
205+ ToolCardStateTestData .tool.copy(toolCode = " tool4" , translation = null ),
206+ ToolCardStateTestData .tool.copy(toolCode = " tool5" , translation = null ),
207+ ),
208+ )
209+
210+ @Test
211+ fun `HomeLayout()` () {
212+ assumeTrue(locale == null )
213+ snapshotDashboardLayout(state.copy(initialPage = HomeScreen ))
214+ }
215+
216+ @Test
217+ fun `HomeLayout() - Banner - Tutorial` () {
218+ assumeTrue(locale == null )
219+ homeState = homeState.copy(banner = TutorialFeaturesBannerPresenter .UiState ())
220+ snapshotDashboardLayout(state.copy(initialPage = HomeScreen ))
221+ }
222+
223+ @Test
224+ fun `HomeLayout() - Data Not Loaded` () {
225+ assumeTrue(
226+ " Only do a single screenshot since this is currently a blank screen" ,
227+ deviceConfig == DeviceConfig .NEXUS_5 &&
228+ locale == null &&
229+ nightMode == NightMode .NOTNIGHT &&
230+ accessibilityMode == AccessibilityMode .NO_ACCESSIBILITY
231+ )
232+ homeState = homeState.copy(dataLoaded = false , favoriteTools = emptyList())
233+ snapshotDashboardLayout(state.copy(initialPage = HomeScreen ))
234+ }
235+
236+ @Test
237+ fun `HomeLayout() - No Spotlight Lessons` () {
238+ assumeTrue(locale == null )
239+ homeState = homeState.copy(spotlightLessons = emptyList())
240+ snapshotDashboardLayout(state.copy(initialPage = HomeScreen ))
241+ }
242+
243+ @Test
244+ fun `HomeLayout() - No Favorites` () {
245+ assumeTrue(locale == null )
246+ homeState = homeState.copy(favoriteTools = emptyList())
247+ snapshotDashboardLayout(state.copy(initialPage = HomeScreen ))
248+ }
249+ // endregion HomeLayout
250+
191251 // region LessonsLayout
192252 private val lessonsState = LessonsPresenter .UiState (
193253 languageFilter = FilterMenu .UiState (
@@ -209,6 +269,8 @@ class DashboardLayoutPaparazziTest(
209269 // endregion LessonsLayout
210270
211271 private val circuit = Circuit .Builder ()
272+ .addPresenter<HomeScreen , HomePresenter .UiState > { _, _, _ -> presenterOf { homeState } }
273+ .addUi<HomeScreen , HomePresenter .UiState > { state, modifier -> HomeLayout (state, modifier) }
212274 .addPresenter<ToolsScreen , ToolsPresenter .UiState > { _, _, _ -> presenterOf { toolsState } }
213275 .addUi<ToolsScreen , ToolsPresenter .UiState > { state, modifier -> ToolsLayout (state, modifier) }
214276 .addPresenter<LessonsScreen , LessonsPresenter .UiState > { _, _, _ -> presenterOf { lessonsState } }
0 commit comments