import assert from 'node:assert/strict'; import { readFileSync } from 'node:fs'; import { test } from 'node:test'; const service = readFileSync('src/act-administration/field-briefing.service.ts', 'utf8'); const controller = readFileSync('src/act-administration/field-briefing.controller.ts', 'utf8'); const moduleSource = readFileSync('src/act-administration/act-administration.module.ts', 'utf8'); test('F1.3 agrupa pendientes de campo por Acta y Hallazgo', () => { assert.match(service, /inspection_act_deadline_events/); assert.match(service, /inspection_act_company_responses/); assert.match(service, /source_visit\.operational_area_id = \$2::uuid/); assert.match(service, /source_visit\.operator_company_id = \$3::uuid/); assert.match(service, /ACT_RESPONSE_OVERDUE/); assert.match(service, /COMPANY_COMMITMENT_OVERDUE/); assert.match(service, /VERIFICATION_PENDING/); assert.match(service, /findings: \[\]/); }); test('F1.3 expone el briefing para una inspección planificada', () => { assert.match(controller, /inspection-visits\/:visitId\/field-briefing/); assert.match(controller, /RequirePermissions\('inspections\.read'\)/); assert.match(moduleSource, /FieldBriefingController/); assert.match(moduleSource, /FieldBriefingService/); }); test('F1.3 no usa el plazo del Hallazgo como plazo administrativo', () => { assert.doesNotMatch(service, /correction_due_on/); assert.match(service, /deadline\.response_due_on/); });