diff --git a/android-app/app/src/test/java/com/korexlabs/dhinspeccion/FinalFieldFlowContractTest.kt b/android-app/app/src/test/java/com/korexlabs/dhinspeccion/FinalFieldFlowContractTest.kt new file mode 100644 index 0000000..a48ed01 --- /dev/null +++ b/android-app/app/src/test/java/com/korexlabs/dhinspeccion/FinalFieldFlowContractTest.kt @@ -0,0 +1,51 @@ +package com.korexlabs.dhinspeccion + +import java.io.File +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Test + +class FinalFieldFlowContractTest { + private val visit = File("src/main/java/com/korexlabs/dhinspeccion/ui/ModernVisitRoot.kt").readText() + private val acts = File("src/main/java/com/korexlabs/dhinspeccion/ui/ModernMobileActsScreen.kt").readText() + private val findings = File("src/main/java/com/korexlabs/dhinspeccion/ui/FieldFindingScreen.kt").readText() + private val home = File("src/main/java/com/korexlabs/dhinspeccion/ui/MobileHomeScreen.kt").readText() + private val labels = File("src/main/java/com/korexlabs/dhinspeccion/ui/UiSpanishLabels.kt").readText() + + @Test + fun inspectionActFindingFlowMatchesFieldProcedure() { + assertTrue(visit.contains("Iniciar inspección")) + assertTrue(acts.contains("Crear nueva Acta")) + assertTrue(acts.contains("Agregar Hallazgo")) + assertTrue(visit.contains("Instalación")) + assertTrue(visit.contains("Subinstalación")) + assertTrue(visit.contains("Guardar y tomar foto")) + assertTrue(acts.contains("Cerrar Acta y dejar pendiente de firma")) + assertTrue(labels.contains("\"LOCKED\" -> \"Pendiente de firma\"")) + } + + @Test + fun fieldCreateKeepsDashboardEquivalentMinimumAndCaptureBarrier() { + assertTrue(visit.contains("Nombre técnico *")) + assertTrue(visit.contains("Nombre habitual (opcional)")) + assertTrue(visit.contains("Descripción (opcional)")) + assertTrue(visit.contains("familyReady")) + assertTrue(visit.contains("attributesReady")) + assertTrue(visit.contains("GPS + foto")) + assertTrue(visit.contains("La foto es obligatoria antes de registrar Hallazgos")) + } + + @Test + fun currentFieldUiDoesNotExposeBackendEnglishStates() { + assertTrue(home.contains("visitStatusLabelEs(visit.status)")) + assertTrue(findings.contains("findingStatusLabelEs(finding.status)")) + assertTrue(acts.contains("documentTypeLabelEs(kind)")) + assertTrue(labels.contains("\"PASSPORT\" -> \"Pasaporte\"")) + assertTrue(labels.contains("\"OTHER\" -> \"Otro\"")) + assertFalse(acts.contains("Finalizar y BLOQUEAR Acta")) + assertFalse(acts.contains("Acta BLOQUEADA")) + assertFalse(acts.contains("SELLAR Acta")) + assertFalse(acts.contains("Acta SELLADA")) + assertFalse(acts.contains("Text(\"Email\")")) + } +}