@@ -16,6 +16,7 @@ import com.mbta.tid.mbta_app.model.response.AlertsStreamDataResponse
1616import com.mbta.tid.mbta_app.model.response.MapFriendlyRouteResponse
1717import com.mbta.tid.mbta_app.model.routeDetailsPage.RouteDetailsContext
1818import com.mbta.tid.mbta_app.repositories.ISentryRepository
19+ import com.mbta.tid.mbta_app.repositories.MockTripRepository
1920import com.mbta.tid.mbta_app.routes.SheetRoutes
2021import com.mbta.tid.mbta_app.utils.EasternTimeInstant
2122import com.mbta.tid.mbta_app.utils.IMapLayerManager
@@ -35,6 +36,7 @@ import kotlin.test.AfterTest
3536import kotlin.test.Ignore
3637import kotlin.test.Test
3738import kotlin.test.assertEquals
39+ import kotlin.test.assertNull
3840import kotlin.time.Clock
3941import kotlin.time.Duration.Companion.hours
4042import 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