F4.0 · actualizar contratos y pruebas del nuevo flujo
This commit is contained in:
@@ -10,7 +10,7 @@ function permissionFor(method: string): string[] {
|
||||
return Reflect.getMetadata(REQUIRED_PERMISSIONS_KEY, handler) as string[];
|
||||
}
|
||||
|
||||
test('inspection visit endpoints separate reading, planning, assignment and execution', () => {
|
||||
test('inspection visit endpoints separate reading, planning, assignment and explicit execution', () => {
|
||||
assert.deepEqual(permissionFor('list'), ['inspections.read']);
|
||||
assert.deepEqual(permissionFor('get'), ['inspections.read']);
|
||||
assert.deepEqual(permissionFor('assignees'), ['inspections.assign']);
|
||||
@@ -18,7 +18,7 @@ test('inspection visit endpoints separate reading, planning, assignment and exec
|
||||
assert.deepEqual(permissionFor('update'), ['inspections.manage']);
|
||||
assert.deepEqual(permissionFor('replaceAssets'), ['inspections.manage']);
|
||||
assert.deepEqual(permissionFor('replaceTeam'), ['inspections.assign']);
|
||||
assert.deepEqual(permissionFor('changeStatus'), ['inspections.manage']);
|
||||
assert.equal('changeStatus' in InspectionVisitsController.prototype, false);
|
||||
assert.deepEqual(permissionFor('start'), ['inspections.execute']);
|
||||
assert.deepEqual(permissionFor('close'), ['inspections.execute']);
|
||||
});
|
||||
|
||||
@@ -6,11 +6,13 @@ import test from 'node:test';
|
||||
const root = process.cwd();
|
||||
const read = (relative: string) => fs.readFileSync(path.join(root, relative), 'utf8');
|
||||
|
||||
test('D5.6.4 generates inspection codes server-side with an annual transactional sequence', () => {
|
||||
test('F4 keeps server-side annual numbering but emits the institutional INSP-date format', () => {
|
||||
const generator = read('src/inspection-visits/inspection-visit-code.ts');
|
||||
assert.match(generator, /INS-\$\{year\}-\$\{String\(sequence\)\.padStart\(6, '0'\)\}/);
|
||||
assert.match(generator, /INSP-\$\{String\(sequence\)\.padStart\(5, '0'\)\}-\$\{datePart\}/);
|
||||
assert.match(generator, /DD-MM-YY/);
|
||||
assert.match(generator, /pg_advisory_xact_lock/);
|
||||
assert.match(generator, /America\/Argentina\/Mendoza/);
|
||||
assert.match(generator, /INS-\$\{year\}-%/);
|
||||
});
|
||||
|
||||
test('D5.6.4 creates one inspection from Area Operator start and lead inspector without manual title or end date', () => {
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import test from 'node:test';
|
||||
|
||||
const root = process.cwd();
|
||||
const read = (relative: string) => fs.readFileSync(path.join(root, relative), 'utf8');
|
||||
|
||||
test('F4 foundation snapshots Act deadlines and seeds the institutional 5/10 business-day policy', () => {
|
||||
const migration = read('src/database/migrations/1790035200000-phase-f4-document-flow-foundation.ts');
|
||||
assert.match(migration, /deadline_policy_snapshot jsonb/);
|
||||
assert.match(migration, /'URGENT', 5, 'BUSINESS', 'ACT_DATE'/);
|
||||
assert.match(migration, /'NON_URGENT', 10, 'BUSINESS', 'GEDO_LOAD_DATE'/);
|
||||
assert.match(migration, /inspection_non_working_days/);
|
||||
});
|
||||
|
||||
test('F4 foundation models recurrence as a new Finding linked to its antecedent', () => {
|
||||
const finding = read('src/database/entities/inspection-finding.entity.ts');
|
||||
const migration = read('src/database/migrations/1790035200000-phase-f4-document-flow-foundation.ts');
|
||||
assert.match(finding, /isRecurrence!/);
|
||||
assert.match(finding, /antecedentFindingId!/);
|
||||
assert.match(migration, /fk_inspection_findings_antecedent/);
|
||||
assert.match(migration, /chk_inspection_findings_recurrence_link/);
|
||||
});
|
||||
|
||||
test('F4 foundation separates editable INF content, GEDO IF officialization and report-level follow-up', () => {
|
||||
const report = read('src/database/entities/inspection-report.entity.ts');
|
||||
const migration = read('src/database/migrations/1790035200000-phase-f4-document-flow-foundation.ts');
|
||||
assert.match(report, /executiveSummary!/);
|
||||
assert.match(report, /description!/);
|
||||
assert.match(report, /gedoIfIdentifier!/);
|
||||
assert.match(report, /gedoOfficializedOn!/);
|
||||
assert.match(migration, /inspection_report_follow_ups/);
|
||||
assert.match(migration, /COMPANY_NOTE/);
|
||||
assert.doesNotMatch(migration, /finding_id uuid NOT NULL[\s\S]*inspection_report_follow_ups/);
|
||||
});
|
||||
Reference in New Issue
Block a user