Update driver app photo handling

This commit is contained in:
admin
2026-07-01 19:26:28 +02:00
parent 76326bbc27
commit ee9d8cdbaf
50 changed files with 579 additions and 101 deletions
@@ -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,
)
}
@@ -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))
}
}