test: align mobile multi-act lifecycle with F4 sealing
This commit is contained in:
@@ -4,7 +4,7 @@ import test from 'node:test';
|
||||
|
||||
const read = (path: string) => readFileSync(path, 'utf8');
|
||||
|
||||
test('F3.2 mantiene múltiples Actas con un solo borrador simultáneo por inspección', () => {
|
||||
test('F3.2/F4 mantiene múltiples Actas con un solo borrador simultáneo por inspección', () => {
|
||||
const migration = read('src/database/migrations/1789495200000-phase-f1-1-multi-act-inspections.ts');
|
||||
assert.match(migration, /DROP CONSTRAINT IF EXISTS uq_inspection_acts_visit/);
|
||||
assert.match(migration, /CREATE UNIQUE INDEX uq_inspection_acts_one_draft_per_visit/);
|
||||
@@ -24,19 +24,25 @@ test('F3.2 permite seleccionar el Acta explícitamente al trabajar Hallazgos des
|
||||
assert.match(service, /FIELD_FINDING_ASSET_NOT_IN_ACT/);
|
||||
});
|
||||
|
||||
test('F3.2 conserva el cierre documental inmutable de cada Acta', () => {
|
||||
test('F4 conserva el cierre documental inmutable de cada Acta como LOCKED y luego SEALED', () => {
|
||||
const closing = read('src/inspection-closing/inspection-closing.service.ts');
|
||||
assert.match(closing, /status='LOCKED'/);
|
||||
assert.match(closing, /INSPECTION_ACT_INSPECTOR_SIGNATURE_REQUIRED/);
|
||||
assert.match(closing, /INSPECTION_ACT_COMPANY_OUTCOME_REQUIRED/);
|
||||
assert.match(closing, /finalSha256 = sha256CanonicalJson\(finalSnapshot\)/);
|
||||
assert.match(closing, /status = 'CLOSED'/);
|
||||
assert.match(closing, /status='SEALED'/);
|
||||
assert.match(closing, /INSPECTION_ACT_LOCK_IS_IMMUTABLE/);
|
||||
assert.match(closing, /ensureFrozenReport/);
|
||||
assert.match(closing, /ensureWordForAct/);
|
||||
});
|
||||
|
||||
test('F3.2 cierra la inspección sólo cuando no quedan borradores ni Actas sin firma de inspector', () => {
|
||||
const visits = read('src/inspection-visits/inspection-visits.service.ts');
|
||||
assert.match(visits, /INSPECTION_VISIT_DRAFT_ACTS_PENDING/);
|
||||
assert.match(visits, /INSPECTION_VISIT_INSPECTOR_SIGNATURE_PENDING/);
|
||||
assert.match(visits, /actsMayCompleteCompanySignatureLater: true/);
|
||||
test('F4 cierra la inspección sólo cuando todas las Actas no canceladas están selladas y las verificaciones resueltas', () => {
|
||||
const lifecycle = read('src/inspection-visits/inspection-visit-lifecycle.service.ts');
|
||||
const closeBody = lifecycle.slice(lifecycle.indexOf(' async close('), lifecycle.indexOf(' async cancel('));
|
||||
assert.match(closeBody, /INSPECTION_REQUIRES_ACT/);
|
||||
assert.match(closeBody, /INSPECTION_ACTS_NOT_SEALED/);
|
||||
assert.match(closeBody, /act\.status !== 'SEALED'/);
|
||||
assert.match(closeBody, /assertVerificationResultsComplete\(manager, id\)/);
|
||||
assert.match(closeBody, /visit\.status = InspectionVisitStatus\.CLOSED/);
|
||||
assert.doesNotMatch(closeBody, /actsMayCompleteCompanySignatureLater/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user