Implement driver route lifecycle flow
This commit is contained in:
@@ -7,6 +7,7 @@ import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import pl.firmatpp.kierowca.data.model.DriverRouteDto
|
||||
import pl.firmatpp.kierowca.data.model.DispatchSheetReminderDto
|
||||
import pl.firmatpp.kierowca.data.model.RoutePhotoDto
|
||||
import pl.firmatpp.kierowca.data.upload.PhotoUploadEntity
|
||||
|
||||
class DriverUiRulesTest {
|
||||
@@ -246,6 +247,44 @@ class DriverUiRulesTest {
|
||||
assertEquals("Popraw", dispatchSheetPrimaryActionLabel(dispatchReminder(status = "uploaded"), hasQueuedUpload = false))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun routeStageFormRequiresPositiveWeightAndAtLeastOnePhotoOrQueuedUpload() {
|
||||
assertTrue(canSubmitRouteStageForm(weightText = "12,5", serverPhotoCount = 1, localUploadCount = 0))
|
||||
assertTrue(canSubmitRouteStageForm(weightText = "12.5", serverPhotoCount = 0, localUploadCount = 1))
|
||||
assertFalse(canSubmitRouteStageForm(weightText = "", serverPhotoCount = 1, localUploadCount = 0))
|
||||
assertFalse(canSubmitRouteStageForm(weightText = "0", serverPhotoCount = 1, localUploadCount = 0))
|
||||
assertFalse(canSubmitRouteStageForm(weightText = "12.5", serverPhotoCount = 0, localUploadCount = 0))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun filtersRoutePhotosByStageWithOtherFallback() {
|
||||
val photos = listOf(
|
||||
photo("1", stage = "loading"),
|
||||
photo("2", stage = "unloading"),
|
||||
photo("3", stage = null),
|
||||
)
|
||||
|
||||
assertEquals(listOf("1"), routePhotosForStage(photos, "loading").map { it.id })
|
||||
assertEquals(listOf("2"), routePhotosForStage(photos, "unloading").map { it.id })
|
||||
assertEquals(listOf("3"), routePhotosForStage(photos, "other").map { it.id })
|
||||
}
|
||||
|
||||
@Test
|
||||
fun choosesAdaptiveGpsUploadIntervalForActiveRoute() {
|
||||
assertEquals(45, activeRouteUploadIntervalSeconds(isMoving = false))
|
||||
assertEquals(20, activeRouteUploadIntervalSeconds(isMoving = true))
|
||||
assertEquals(5, activeRouteUploadIntervalSeconds(isMoving = true, isUrbanOrTurning = true))
|
||||
assertEquals(5, activeRouteUploadIntervalSeconds(isMoving = true, isNearDestination = true))
|
||||
assertEquals(20, activeRouteUploadIntervalSeconds(isMoving = true, isHighwayStable = true))
|
||||
assertEquals(3, activeRouteUploadIntervalSeconds(isMoving = true, isLikelyOffRoute = true))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun notificationTapTargetsFinishScreenOnlyAfterArrival() {
|
||||
assertEquals(DriverScreen.Detail, activeRouteNotificationTarget(arrived = false))
|
||||
assertEquals(DriverScreen.FinishRoute, activeRouteNotificationTarget(arrived = true))
|
||||
}
|
||||
|
||||
private fun route(status: String): DriverRouteDto =
|
||||
DriverRouteDto(
|
||||
id = "1",
|
||||
@@ -279,6 +318,24 @@ class DriverUiRulesTest {
|
||||
serverPhotoId = serverPhotoId,
|
||||
)
|
||||
|
||||
private fun photo(id: String, stage: String?): RoutePhotoDto =
|
||||
RoutePhotoDto(
|
||||
id = id,
|
||||
routeId = "10",
|
||||
clientRequestId = null,
|
||||
contentSha256 = null,
|
||||
source = "camera",
|
||||
stage = stage ?: "other",
|
||||
mimeType = "image/jpeg",
|
||||
size = 1200,
|
||||
url = "https://example.test/$id.jpg",
|
||||
takenAt = null,
|
||||
latitude = null,
|
||||
longitude = null,
|
||||
locationAccuracyMeters = null,
|
||||
createdAt = null,
|
||||
)
|
||||
|
||||
private fun dispatchReminder(status: String, dueToday: Boolean = true): DispatchSheetReminderDto =
|
||||
DispatchSheetReminderDto(
|
||||
enabled = dueToday,
|
||||
|
||||
Reference in New Issue
Block a user