test(f4): guard inspection legacy fields across backend and web
This commit is contained in:
@@ -7,6 +7,7 @@ import { InspectionVisit } from '../../src/database/entities/inspection-visit.en
|
|||||||
import { F4RemoveInspectionLegacyFields1790000500000 } from '../../src/database/migrations/1790000500000-f4-remove-inspection-legacy-fields';
|
import { F4RemoveInspectionLegacyFields1790000500000 } from '../../src/database/migrations/1790000500000-f4-remove-inspection-legacy-fields';
|
||||||
|
|
||||||
const root = process.cwd();
|
const root = process.cwd();
|
||||||
|
const read = (relative: string) => fs.readFileSync(path.join(root, relative), 'utf8');
|
||||||
|
|
||||||
test('F4: InspectionVisit no vuelve a mapear title ni plannedEndAt', () => {
|
test('F4: InspectionVisit no vuelve a mapear title ni plannedEndAt', () => {
|
||||||
const metadata = getMetadataArgsStorage();
|
const metadata = getMetadataArgsStorage();
|
||||||
@@ -24,10 +25,34 @@ test('F4: InspectionVisit no vuelve a mapear title ni plannedEndAt', () => {
|
|||||||
assert.equal(indexes.includes('idx_inspection_visits_planned_start_at'), true);
|
assert.equal(indexes.includes('idx_inspection_visits_planned_start_at'), true);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('F4: los consumidores activos de Actas no consultan el title físico de la Inspección', () => {
|
test('F4: los consumidores backend activos no consultan el title físico de la Inspección', () => {
|
||||||
const acts = fs.readFileSync(path.join(root, 'src/inspection-acts/inspection-acts.service.ts'), 'utf8');
|
const acts = read('src/inspection-acts/inspection-acts.service.ts');
|
||||||
|
const findings = read('src/inspection-findings/inspection-findings.service.ts');
|
||||||
|
|
||||||
assert.doesNotMatch(acts, /visit\.title/);
|
assert.doesNotMatch(acts, /visit\.title/);
|
||||||
assert.doesNotMatch(acts, /['"]title['"]\s*,\s*visit\.title/);
|
assert.doesNotMatch(acts, /['"]title['"]\s*,\s*visit\.title/);
|
||||||
|
assert.doesNotMatch(findings, /visit\.title/);
|
||||||
|
assert.doesNotMatch(findings, /verification_target\.title/);
|
||||||
|
assert.doesNotMatch(findings, /visitTitle/);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('F4: el contrato WEB de Inspecciones no reintroduce title, visitTitle ni plannedEndAt', () => {
|
||||||
|
const webApi = read('../web-v2/src/lib/api.ts');
|
||||||
|
const start = webApi.indexOf('export type InspectionVisitStatus');
|
||||||
|
const end = webApi.indexOf('let csrfToken: string | null');
|
||||||
|
assert.notEqual(start, -1);
|
||||||
|
assert.notEqual(end, -1);
|
||||||
|
const inspectionContract = webApi.slice(start, end);
|
||||||
|
const visitListStart = inspectionContract.indexOf('export interface InspectionVisitListItem');
|
||||||
|
const visitListEnd = inspectionContract.indexOf('export type InspectionVerificationOutcome');
|
||||||
|
assert.notEqual(visitListStart, -1);
|
||||||
|
assert.notEqual(visitListEnd, -1);
|
||||||
|
const visitListContract = inspectionContract.slice(visitListStart, visitListEnd);
|
||||||
|
|
||||||
|
assert.doesNotMatch(visitListContract, /\btitle\s*:/);
|
||||||
|
assert.doesNotMatch(visitListContract, /\bplannedEndAt\b/);
|
||||||
|
assert.doesNotMatch(inspectionContract, /\bvisitTitle\b/);
|
||||||
|
assert.doesNotMatch(inspectionContract, /\bplannedEndAt\b/);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('F4: la migración retira las columnas legacy y conserva índice de inicio', async () => {
|
test('F4: la migración retira las columnas legacy y conserva índice de inicio', async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user