test: align automatic report contract with F4 sealing
This commit is contained in:
@@ -11,14 +11,15 @@ const controller = read('src/inspection-reports/inspection-reports.controller.ts
|
|||||||
const builder = read('src/inspection-reports/inspection-report-word-builder.ts');
|
const builder = read('src/inspection-reports/inspection-report-word-builder.ts');
|
||||||
const wordService = read('src/inspection-reports/inspection-report-word.service.ts');
|
const wordService = read('src/inspection-reports/inspection-report-word.service.ts');
|
||||||
|
|
||||||
test('D5.3.20 freezes one report automatically in the same act-closing transaction', () => {
|
test('D5.3.20/F4 freezes one report from each sealed act and generates its Word artifact', () => {
|
||||||
assert.match(closing, /await this\.reports\.ensureFrozenReport\(manager, actId, principal, request\)/);
|
assert.match(closing, /await this\.reports\.ensureFrozenReport\(manager, actId, principal, request\)/);
|
||||||
assert.match(closing, /await this\.reports\.ensureWordForAct\(actId\)/);
|
assert.match(closing, /await this\.reports\.ensureWordForAct\(actId\)/);
|
||||||
assert.match(reports, /async ensureFrozenReport\(/);
|
assert.match(reports, /async ensureFrozenReport\(/);
|
||||||
assert.match(reports, /SELECT id FROM inspection_reports WHERE act_id/);
|
assert.match(reports, /SELECT id FROM inspection_reports WHERE act_id/);
|
||||||
|
assert.match(reports, /act\.status = 'SEALED'/);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('D5.3.20 stores an integrity-checked Word artifact without changing the frozen report', () => {
|
test('D5.3.20 stores an integrity-checked Word artifact without changing the frozen source snapshot', () => {
|
||||||
assert.match(migration, /ADD COLUMN word_status varchar\(24\)/);
|
assert.match(migration, /ADD COLUMN word_status varchar\(24\)/);
|
||||||
assert.match(migration, /word_sha256 char\(64\)/);
|
assert.match(migration, /word_sha256 char\(64\)/);
|
||||||
assert.match(migration, /word_generated_at timestamptz/);
|
assert.match(migration, /word_generated_at timestamptz/);
|
||||||
@@ -35,7 +36,8 @@ test('D5.3.20 builds OOXML Word from the frozen act snapshot without external do
|
|||||||
assert.doesNotMatch(builder, /nodemailer|libreoffice|pandoc/i);
|
assert.doesNotMatch(builder, /nodemailer|libreoffice|pandoc/i);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('D5.3.20 keeps frozen report generation act-scoped and leaves email delivery for a configured phase', () => {
|
test('F4 keeps report generation act-scoped while findings and inspection lifecycle remain independent', () => {
|
||||||
assert.match(closing, /findingsRemainOpen: true/);
|
assert.match(closing, /findingsRemainIndependent: true/);
|
||||||
|
assert.match(closing, /inspectionRemainsIndependent: true/);
|
||||||
assert.doesNotMatch(migration, /smtp|email_outbox|mail_delivery/i);
|
assert.doesNotMatch(migration, /smtp|email_outbox|mail_delivery/i);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user