45 lines
2.3 KiB
TypeScript
45 lines
2.3 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
import { resolve } from 'node:path';
|
|
import test from 'node:test';
|
|
|
|
function source(path: string): string {
|
|
return readFileSync(resolve(process.cwd(), path), 'utf8');
|
|
}
|
|
|
|
test('F6.1 planning preloads the local start time and resolves Companies projected by Yacimientos', () => {
|
|
const page = source('../web-v2/src/pages/InspectionVisitCreateF61Page.tsx');
|
|
const hierarchy = source('src/inspection-visits/inspection-planning-hierarchy.service.ts');
|
|
|
|
assert.match(page, /function currentLocalDateTime\(\)/);
|
|
assert.match(page, /useState\(currentLocalDateTime\)/);
|
|
assert.match(page, /areas\/\$\{areaId\}\/operators\?at=\$\{at\}/);
|
|
assert.match(page, /response\.data\.length === 1/);
|
|
assert.match(page, /setOperatorId\(response\.data\[0\]\.id\)/);
|
|
assert.match(page, /Sin Operadora vigente para esa fecha/);
|
|
assert.match(hierarchy, /FROM assets yacimiento/);
|
|
assert.match(hierarchy, /yacimiento\.operator_company_id/);
|
|
assert.match(hierarchy, /SELECT DISTINCT company\.id/);
|
|
});
|
|
|
|
test('F6.1 WEB cancellation requires an explicit audited reason and is available while in progress', () => {
|
|
const editor = source('../web-v2/src/pages/InspectionVisitEditorF4Page.tsx');
|
|
const controller = source('src/inspection-visits/inspection-visits.controller.ts');
|
|
const dto = source('src/inspection-visits/dto/cancel-inspection-visit.dto.ts');
|
|
const lifecycle = source('src/inspection-visits/inspection-visit-lifecycle.service.ts');
|
|
|
|
assert.doesNotMatch(editor, /window\.prompt\('Indicá el motivo de cancelación/);
|
|
assert.match(editor, /showCancelForm/);
|
|
assert.match(editor, /cancelReason/);
|
|
assert.match(editor, /<textarea/);
|
|
assert.match(editor, /cancelReason\.trim\(\)\.length < 10/);
|
|
assert.match(editor, /maxLength=\{500\}/);
|
|
assert.match(editor, /'DRAFT', 'PLANNED', 'IN_PROGRESS'/);
|
|
assert.match(editor, /Confirmar cancelación/);
|
|
assert.match(controller, /@Post\(':id\/cancel'\)/);
|
|
assert.match(dto, /@MinLength\(10\)/);
|
|
assert.match(dto, /@MaxLength\(4000\)/);
|
|
assert.match(lifecycle, /\[InspectionVisitStatus\.DRAFT, InspectionVisitStatus\.PLANNED, InspectionVisitStatus\.IN_PROGRESS\]\.includes\(visit\.status\)/);
|
|
assert.match(lifecycle, /INSPECTION_WITH_SEALED_ACT_CANNOT_CANCEL/);
|
|
});
|