Update driver app photo handling
This commit is contained in:
@@ -5,6 +5,8 @@ import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import pl.firmatpp.kierowca.data.model.DriverRouteDto
|
||||
import pl.firmatpp.kierowca.data.upload.PhotoUploadEntity
|
||||
|
||||
class DriverUiRulesTest {
|
||||
private val today = LocalDate.parse("2026-06-30")
|
||||
@@ -22,6 +24,16 @@ class DriverUiRulesTest {
|
||||
assertFalse(canManageRoutePhotos("not-a-date", today))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun allowsRouteCompletionOnlyForTodayPlannedOrInProgressRoutes() {
|
||||
assertTrue(canCompleteRouteFromDriverApp(route(status = "ZAPLANOWANA"), "2026-06-30", today))
|
||||
assertTrue(canCompleteRouteFromDriverApp(route(status = "W TRAKCIE"), "2026-06-30", today))
|
||||
assertFalse(canCompleteRouteFromDriverApp(route(status = "ZAKOŃCZONA"), "2026-06-30", today))
|
||||
assertFalse(canCompleteRouteFromDriverApp(route(status = "NIEROZPOZNANA"), "2026-06-30", today))
|
||||
assertFalse(canCompleteRouteFromDriverApp(route(status = "ZAPLANOWANA"), "2026-07-01", today))
|
||||
assertFalse(canCompleteRouteFromDriverApp(route(status = "ZAPLANOWANA"), "2026-06-29", today))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun calculatesPhotoGridRowsForTwoColumnInlineGallery() {
|
||||
assertEquals(0, inlinePhotoGridRows(0))
|
||||
@@ -87,4 +99,57 @@ class DriverUiRulesTest {
|
||||
assertEquals(null, confirmedUploadServerPhotoId("UPLOADING", "42"))
|
||||
assertEquals(null, confirmedUploadServerPhotoId("FAILED_RETRYABLE", "42"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun createsFullScreenPreviewForLocalUploadBeforeRouteRefresh() {
|
||||
val photo = localUploadPreviewPhoto(upload(status = "CONFIRMED", serverPhotoId = "55"))
|
||||
|
||||
requireNotNull(photo)
|
||||
assertEquals("local-upload-123", photo.id)
|
||||
assertEquals("10", photo.routeId)
|
||||
assertEquals("file:/tmp/photo.jpg", photo.url)
|
||||
assertEquals("2026-07-01T08:00:00Z", photo.takenAt)
|
||||
assertEquals(50.1, photo.latitude ?: 0.0, 0.0)
|
||||
assertEquals(true, photo.canDelete)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun preciseLocationRequirementAllowsCameraOnlyWithFineLocation() {
|
||||
assertTrue(canLaunchCameraWithLocationPolicy(requirePreciseLocation = false, hasFineLocation = false))
|
||||
assertTrue(canLaunchCameraWithLocationPolicy(requirePreciseLocation = true, hasFineLocation = true))
|
||||
assertFalse(canLaunchCameraWithLocationPolicy(requirePreciseLocation = true, hasFineLocation = false))
|
||||
}
|
||||
|
||||
private fun route(status: String): DriverRouteDto =
|
||||
DriverRouteDto(
|
||||
id = "1",
|
||||
startsAt = "",
|
||||
originName = "Baza",
|
||||
destinationName = "Instalacja",
|
||||
contractorName = "TPP",
|
||||
contractName = "Kontrakt",
|
||||
contractCode = "TPP-1",
|
||||
relationLabel = "Baza -> Instalacja",
|
||||
status = status,
|
||||
distanceKm = 1.0,
|
||||
notes = null,
|
||||
truck = null,
|
||||
)
|
||||
|
||||
private fun upload(status: String, serverPhotoId: String? = null): PhotoUploadEntity =
|
||||
PhotoUploadEntity(
|
||||
clientRequestId = "local-upload-123",
|
||||
routeId = "10",
|
||||
localPath = "/tmp/photo.jpg",
|
||||
source = "camera",
|
||||
takenAt = "2026-07-01T08:00:00Z",
|
||||
latitude = 50.1,
|
||||
longitude = 19.9,
|
||||
locationAccuracyMeters = 8.0,
|
||||
mimeType = "image/jpeg",
|
||||
size = 1200,
|
||||
contentSha256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
status = status,
|
||||
serverPhotoId = serverPhotoId,
|
||||
)
|
||||
}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package pl.firmatpp.kierowca.ui
|
||||
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class PolishPhoneNumberVisualTransformationTest {
|
||||
@Test
|
||||
fun formatsPhoneDigitsWithoutChangingUnderlyingTextOffsets() {
|
||||
val transformed = PolishPhoneNumberVisualTransformation.filter(AnnotatedString("1234"))
|
||||
|
||||
assertEquals("123 4", transformed.text.text)
|
||||
assertEquals(5, transformed.offsetMapping.originalToTransformed(4))
|
||||
assertEquals(4, transformed.offsetMapping.transformedToOriginal(5))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mapsOffsetsAcrossBothInsertedSpaces() {
|
||||
val transformed = PolishPhoneNumberVisualTransformation.filter(AnnotatedString("123456789"))
|
||||
|
||||
assertEquals("123 456 789", transformed.text.text)
|
||||
assertEquals(7, transformed.offsetMapping.originalToTransformed(6))
|
||||
assertEquals(11, transformed.offsetMapping.originalToTransformed(9))
|
||||
assertEquals(6, transformed.offsetMapping.transformedToOriginal(7))
|
||||
assertEquals(9, transformed.offsetMapping.transformedToOriginal(11))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user