Skip to content

Commit

Permalink
ADD UT for TimeTableViewModel
Browse files Browse the repository at this point in the history
  • Loading branch information
ksharma-xyz committed Jan 8, 2025
1 parent 0a37dcf commit 2528f95
Showing 1 changed file with 79 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -450,4 +450,83 @@ class TimeTableViewModelTest {

// endregion

// region Test for Retry Button Clicked

@Test
fun `GIVEN trip info WHEN RetryButtonClicked is triggered THEN trip should be reloaded`() =
runTest {
// GIVEN
val tripInfo = Trip(
fromStopId = "stop1",
fromStopName = "Stop 1",
toStopId = "stop2",
toStopName = "Stop 2"
)

viewModel.uiState.test {
skipItems(1) // initial state

// WHEN RetryButtonClicked is triggered
viewModel.onEvent(TimeTableUiEvent.RetryButtonClicked)
awaitItem().run {
assertTrue(isLoading)
assertEquals(tripInfo, trip)
assertTrue(journeyList.isEmpty())
}

viewModel.fetchTrip() // mocking the actual behavior of rateLimiter.triggerEvent()

// THEN
awaitItem().run {
assertFalse(isLoading)
assertFalse(isError)
assertTrue(journeyList.isNotEmpty())
}

cancelAndConsumeRemainingEvents()
}
}

// endregion

// region Test for JourneyCardClicked

@Test
fun `GIVEN a trip with journey list WHEN JourneyCardClicked is triggered THEN analytics event for collapse or expand is triggered`() =
runTest {
// GIVEN
val trip = Trip(
fromStopId = "FROM_STOP_ID_1",
fromStopName = "STOP_NAME_1",
toStopId = "TO_STOP_ID_1",
toStopName = "STOP_NAME_2"
)
val analytics: FakeAnalytics = fakeAnalytics as FakeAnalytics

// THEN journey details should be loaded
viewModel.uiState.test {

skipItems(1)

viewModel.onEvent(TimeTableUiEvent.LoadTimeTable(trip))
viewModel.fetchTrip()
skipItems(4) // silent loading toggle

// WHEN JourneyCardClicked is triggered
viewModel.onEvent(TimeTableUiEvent.JourneyCardClicked("TransportationId0null"))
// THEN
assertTrue(analytics.isEventTracked("journey_card_expand"))
fakeAnalytics.clear()

// WHEN JourneyCardClicked is triggered again
viewModel.onEvent(TimeTableUiEvent.JourneyCardClicked("TransportationId0null"))
// THEN
assertTrue(analytics.isEventTracked("journey_card_collapse"))
fakeAnalytics.clear()

cancelAndConsumeRemainingEvents()
}
}

// endregion
}

0 comments on commit 2528f95

Please sign in to comment.