@@ -16,6 +16,7 @@ import kotlin.test.Test
1616import kotlin.test.assertEquals
1717import kotlin.test.assertFalse
1818import kotlin.test.assertIs
19+ import kotlin.test.assertNotNull
1920import kotlin.test.assertNull
2021import kotlin.test.assertTrue
2122import kotlinx.coroutines.flow.MutableSharedFlow
@@ -60,7 +61,11 @@ class HomePresenterTest {
6061 }
6162 private val toolCardPresenter: ToolCardPresenter = mockk {
6263 everyComposable { present(tool = any(), eventSink = any()) }.answers {
63- ToolCard .State (toolCode = firstArg<Tool >().code, eventSink = arg(4 ))
64+ ToolCard .State (
65+ toolCode = firstArg<Tool >().code,
66+ translation = randomTranslation(languageCode = Locale .ENGLISH ),
67+ eventSink = arg(4 )
68+ )
6469 }
6570 }
6671
@@ -178,14 +183,6 @@ class HomePresenterTest {
178183 // endregion State.spotlightLessons
179184
180185 // region State.favoriteTools
181- private val favoriteTool = randomTool(type = Tool .Type .TRACT , isHidden = false )
182- private val favoriteToolTranslation = randomTranslation(favoriteTool.code, languageCode = Locale .FRENCH )
183- init {
184- everyComposable { toolCardPresenter.present(tool = favoriteTool, eventSink = any()) }.answers {
185- ToolCard .State (toolCode = favoriteTool.code, translation = favoriteToolTranslation, eventSink = arg(4 ))
186- }
187- }
188-
189186 @Test
190187 fun `State - favoriteTools` () = runTest {
191188 val tools = List (3 ) { randomTool(type = Tool .Type .TRACT , isHidden = false ) }
@@ -211,37 +208,64 @@ class HomePresenterTest {
211208
212209 @Test
213210 fun `State - favoriteTools - Event - Click` () = runTest {
214- presenter.test {
215- toolsFlow.emit(listOf (favoriteTool))
216- expectMostRecentItem().favoriteTools[0 ].eventSink(ToolCard .Event .Click )
211+ val tool = randomTool(type = Tool .Type .TRACT , primaryLocale = null , parallelLocale = null )
217212
218- assertIs<IntentScreen >(navigator.awaitNextScreen()).let {
219- val expected = favoriteTool.createToolIntent(context, listOf (favoriteToolTranslation.languageCode))
220- assertTrue(expected equalsIntent it.intent)
213+ presenter.test {
214+ toolsFlow.emit(listOf (tool))
215+ assertNotNull(expectMostRecentItem().favoriteTools[0 ]) { toolState ->
216+ toolState.eventSink(ToolCard .Event .Click )
217+
218+ assertIs<IntentScreen >(navigator.awaitNextScreen()).let { screen ->
219+ val expected = tool.createToolIntent(context, listOf (toolState.translation!! .languageCode))
220+ assertTrue(expected equalsIntent screen.intent)
221+ }
221222 }
222223 }
223224 }
224225
225226 @Test
226227 fun `State - favoriteTools - Event - OpenTool` () = runTest {
228+ val tool = randomTool(type = Tool .Type .TRACT , primaryLocale = null , parallelLocale = null )
229+
227230 presenter.test {
228- toolsFlow.emit(listOf (favoriteTool))
229- expectMostRecentItem().favoriteTools[0 ].eventSink(ToolCard .Event .OpenTool )
231+ toolsFlow.emit(listOf (tool))
232+ assertNotNull(expectMostRecentItem().favoriteTools[0 ]) { toolState ->
233+ toolState.eventSink(ToolCard .Event .OpenTool )
234+
235+ assertIs<IntentScreen >(navigator.awaitNextScreen()).let { screen ->
236+ val expected = tool.createToolIntent(context, listOf (toolState.translation!! .languageCode))
237+ assertTrue(expected equalsIntent screen.intent)
238+ }
239+ }
240+ }
241+ }
230242
231- assertIs<IntentScreen >(navigator.awaitNextScreen()).let {
232- val expected = favoriteTool.createToolIntent(context, listOf (favoriteToolTranslation.languageCode))
233- assertTrue(expected equalsIntent it.intent)
243+ @Test
244+ fun `State - favoriteTools - Event - OpenTool - Saved Languages` () = runTest {
245+ val tool = randomTool(type = Tool .Type .TRACT , primaryLocale = Locale .GERMAN , parallelLocale = Locale .FRENCH )
246+
247+ presenter.test {
248+ toolsFlow.emit(listOf (tool))
249+ assertNotNull(expectMostRecentItem().favoriteTools[0 ]) { toolState ->
250+ toolState.eventSink(ToolCard .Event .OpenTool )
251+
252+ assertIs<IntentScreen >(navigator.awaitNextScreen()).let { screen ->
253+ val expected = tool.createToolIntent(context, listOf (Locale .GERMAN , Locale .FRENCH ))
254+ assertTrue(expected equalsIntent screen.intent)
255+ }
234256 }
235257 }
236258 }
237259
238260 @Test
239261 fun `State - favoriteTools - Event - OpenToolDetails` () = runTest {
262+ val tool = randomTool(type = Tool .Type .TRACT )
263+
240264 presenter.test {
241- toolsFlow.emit(listOf (favoriteTool ))
265+ toolsFlow.emit(listOf (tool ))
242266 expectMostRecentItem().favoriteTools[0 ].eventSink(ToolCard .Event .OpenToolDetails )
243267
244- assertEquals(ToolDetailsScreen (favoriteTool .code!! ), navigator.awaitNextScreen())
268+ assertEquals(ToolDetailsScreen (tool .code!! ), navigator.awaitNextScreen())
245269 }
246270 }
247271 // endregion State.favoriteTools
0 commit comments