Files

73 lines
4.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
ROOT="${1:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
cd "$ROOT"
checks=0
ok() { checks=$((checks+1)); echo "OK $1"; }
fail() { echo "FAIL $1"; exit 1; }
[[ "$(node -p "require('./api-v3/package.json').version")" == "0.19.6-4" ]] || fail 'API 0.19.6-4'
ok 'API 0.19.6-4'
[[ "$(node -p "require('./web-v2/package.json').version")" == "0.19.6-4" ]] || fail 'WEB 0.19.6-4'
ok 'WEB 0.19.6-4'
grep -Fq "API_PHASE = 'D5.6.4'" api-v3/src/version.ts || fail 'fase API'
ok 'fase API D5.6.4'
grep -Fq "Fase D5.6.4 · Inspecciones simples y combobox buscables" web-v2/src/config/version.ts || fail 'fase WEB'
ok 'fase WEB D5.6.4'
DTO='api-v3/src/inspection-visits/dto/create-inspection-visit.dto.ts'
grep -Fq 'operationalAreaId!' "$DTO" && grep -Fq 'operatorCompanyId!' "$DTO" && grep -Fq 'plannedStartAt!' "$DTO" && grep -Fq 'leadInspectorUserId!' "$DTO" || fail 'DTO mínimo'
! grep -Eq 'code!|title!|plannedEndAt' "$DTO" || fail 'DTO conserva campos eliminados'
ok 'creación mínima Área + Operadora + inicio + Inspector'
grep -Fq 'pg_advisory_xact_lock' api-v3/src/inspection-visits/inspection-visit-code.ts || fail 'lock código'
grep -Fq 'America/Argentina/Mendoza' api-v3/src/inspection-visits/inspection-visit-code.ts || fail 'zona código'
grep -Fq 'INS-${year}-${String(sequence).padStart(6, '\''0'\'')}' api-v3/src/inspection-visits/inspection-visit-code.ts || fail 'formato código'
ok 'código INS anual automático y transaccional'
grep -Fq 'title: code' api-v3/src/inspection-visits/inspection-visits.service.ts || fail 'título interno'
grep -Fq 'plannedEndAt: null' api-v3/src/inspection-visits/inspection-visits.service.ts || fail 'fin null'
ok 'sin título editable ni fin planificado nuevo'
grep -Fq 'leadInspectorUserId: dto.leadInspectorUserId' api-v3/src/inspection-visits/inspection-visits.service.ts || fail 'lead create'
grep -Fq 'await this.replaceMemberLinks(' api-v3/src/inspection-visits/inspection-visits.service.ts || fail 'team create'
grep -Fq 'generateChecklistInternal(manager, visit, principal.userId)' api-v3/src/inspection-visits/inspection-visits.service.ts || fail 'checklist create'
ok 'inspector + equipo + checklist en creación'
grep -Fq "@RequirePermissions('inspections.manage', 'inspections.assign')" api-v3/src/inspection-visits/inspection-visits.controller.ts || fail 'permisos create'
ok 'creación requiere planificación y asignación'
! grep -Fq 'plannedEndAt' api-v3/src/inspection-verifications/dto/plan-verification-visit.dto.ts || fail 'fin verificación DTO'
grep -Fq 'nextInspectionVisitCode(manager, plannedStartAt)' api-v3/src/inspection-verifications/inspection-verifications.service.ts || fail 'código verificación'
ok 'verificaciones usan misma numeración y sólo inicio'
grep -Fq 'CREACIÓN RÁPIDA' web-v2/src/pages/InspectionVisitEditorPage.tsx || fail 'creación rápida UI'
grep -Fq 'Fecha y hora de inicio' web-v2/src/pages/InspectionVisitEditorPage.tsx || fail 'inicio UI'
grep -Fq 'Buscar Inspector…' web-v2/src/pages/InspectionVisitEditorPage.tsx || fail 'inspector buscable'
! grep -Fq 'Fin previsto' web-v2/src/pages/InspectionVisitEditorPage.tsx || fail 'fin UI'
! grep -Fq '<span>Título</span>' web-v2/src/pages/InspectionVisitEditorPage.tsx || fail 'título UI'
ok 'formulario rápido de Inspección'
grep -Fq 'searchable-select-search' web-v2/src/styles.css || fail 'estilos combobox'
test -f web-v2/src/components/SearchableSelect.tsx || fail 'componente combobox'
ok 'componente de combobox buscable'
if grep -R '<select' web-v2/src --include='*.tsx' | grep -v 'components/SearchableSelect.tsx' >/dev/null; then
echo 'Quedaron selects nativos:'
grep -R '<select' web-v2/src --include='*.tsx' | grep -v 'components/SearchableSelect.tsx'
fail 'selects nativos'
fi
ok 'todos los combobox del dashboard usan buscador'
COUNT="$(grep -R '<SearchableSelect' web-v2/src --include='*.tsx' | wc -l | tr -d ' ')"
(( COUNT >= 59 )) || fail 'cantidad combobox migrados'
ok "$COUNT usos de SearchableSelect"
if find api-v3/src/database/migrations -maxdepth 1 -type f -iname '*d5-6-4*' | grep -q .; then fail 'migración inesperada'; fi
ok 'sin migración D5.6.4'
echo
echo "D5.6.4 checks: $checks/$checks OK"