Skip to content

Commit ed7ac01

Browse files
committed
test: Add unit test for trip shape loading
1 parent 135cdfb commit ed7ac01

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

shared/src/commonMain/kotlin/com/mbta/tid/mbta_app/repositories/TripRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ constructor(
100100
internal var tripShape: MapFriendlyRouteResponse = MapFriendlyRouteResponse(emptyList()),
101101
internal val onGetTrip: (String) -> Unit = {},
102102
internal val onGetTripSchedules: (String) -> Unit = {},
103+
internal val onGetTripShape: (String) -> Unit = {},
103104
) : ITripRepository {
104105
override suspend fun getTripSchedules(tripId: String): ApiResult<TripSchedulesResponse> {
105106
onGetTripSchedules(tripId)
@@ -112,6 +113,7 @@ constructor(
112113
}
113114

114115
override suspend fun getTripShape(tripId: String): ApiResult<MapFriendlyRouteResponse> {
116+
onGetTripShape(tripId)
115117
return ApiResult.Ok(tripShape)
116118
}
117119
}

shared/src/commonTest/kotlin/com/mbta/tid/mbta_app/viewModel/MapViewModelTests.kt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.mbta.tid.mbta_app.model.response.AlertsStreamDataResponse
1616
import com.mbta.tid.mbta_app.model.response.MapFriendlyRouteResponse
1717
import com.mbta.tid.mbta_app.model.routeDetailsPage.RouteDetailsContext
1818
import com.mbta.tid.mbta_app.repositories.ISentryRepository
19+
import com.mbta.tid.mbta_app.repositories.MockTripRepository
1920
import com.mbta.tid.mbta_app.routes.SheetRoutes
2021
import com.mbta.tid.mbta_app.utils.EasternTimeInstant
2122
import com.mbta.tid.mbta_app.utils.IMapLayerManager
@@ -35,6 +36,7 @@ import kotlin.test.AfterTest
3536
import kotlin.test.Ignore
3637
import kotlin.test.Test
3738
import kotlin.test.assertEquals
39+
import kotlin.test.assertNull
3840
import kotlin.time.Clock
3941
import kotlin.time.Duration.Companion.hours
4042
import kotlin.time.Duration.Companion.seconds
@@ -298,6 +300,41 @@ internal class MapViewModelTests : KoinTest {
298300
}
299301
}
300302

303+
@Test
304+
fun followingVehicleLoadsShape() = runTest {
305+
val dispatcher = StandardTestDispatcher(testScheduler)
306+
var loadedTripShapeId: String? = null
307+
val tripRepository = MockTripRepository(onGetTripShape = { loadedTripShapeId = it })
308+
setUpKoin(dispatcher) { trip = tripRepository }
309+
val viewportProvider = MockViewportManager()
310+
val viewModel: MapViewModel = get()
311+
val vehicle = TestData.vehicle { currentStatus = Vehicle.CurrentStatus.StoppedAt }
312+
val tripDetailsFilter = TripDetailsFilter("trip", vehicle.id, null, false)
313+
testViewModelFlow(viewModel).test {
314+
assertNull(loadedTripShapeId)
315+
viewModel.setViewportManager(viewportProvider)
316+
viewModel.densityChanged(1f)
317+
assertEquals(MapViewModel.State(MapViewModel.LayerState.Overview, false), awaitItem())
318+
val stop = TestData.stops["70113"]!!
319+
viewModel.selectedTrip(null, stop, tripDetailsFilter, vehicle, true)
320+
assertEquals(
321+
MapViewModel.State(
322+
MapViewModel.LayerState.TripSelected(
323+
stop,
324+
null,
325+
tripDetailsFilter,
326+
vehicle,
327+
true,
328+
),
329+
false,
330+
),
331+
awaitItem(),
332+
)
333+
advanceUntilIdle()
334+
assertEquals(tripDetailsFilter.tripId, loadedTripShapeId)
335+
}
336+
}
337+
301338
@Test
302339
@Ignore // TODO: Address flakiness
303340
fun whenInStopDetailsNotResetToAllRailOnAlertChange() = runTest {

0 commit comments

Comments
 (0)