mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
test: prove three defensive contracts fail red
Issue: #421 User-Visible: no
This commit is contained in:
@@ -3,7 +3,7 @@ import test from 'node:test';
|
||||
import { createHash } from 'node:crypto';
|
||||
import { readFileSync } from 'node:fs';
|
||||
|
||||
import { verifyDocsCandidate } from '../scripts/docs-accept.mjs';
|
||||
import { acceptedDocsManifest, verifyDocsCandidate } from '../scripts/docs-accept.mjs';
|
||||
import { DOC_SCREENSHOT_VERSION, DOC_SCREENSHOTS } from '../demo/docs/screenshots.mjs';
|
||||
|
||||
// Приёмка — единственное место, где картинки попадают в репозиторий, поэтому
|
||||
@@ -146,3 +146,49 @@ test('правило среды в шапках совпадает с реали
|
||||
assert.equal(/снимать только в CI|только из артефакта CI/.test(workflow), false,
|
||||
'старое правило про место съёмки осталось в тексте');
|
||||
});
|
||||
|
||||
test('#421 acceptance trace records a new pixel review exactly', () => {
|
||||
const manifest = candidate();
|
||||
const decision = {
|
||||
replace: ['view-desktop'], witnesses: ['view-touch', 'editor'], floor: 2,
|
||||
};
|
||||
const accepted = acceptedDocsManifest({
|
||||
manifest,
|
||||
previousAcceptance: { declared: ['old'], future: 'preserve only on refresh' },
|
||||
decision,
|
||||
skipWitnesses: true,
|
||||
skipReason: 'reviewed renderer transition',
|
||||
});
|
||||
assert.deepEqual(accepted.acceptance, {
|
||||
declared: ['view-desktop'],
|
||||
witnesses: 2,
|
||||
floor: 2,
|
||||
witnessesSkippedBecause: 'reviewed renderer transition',
|
||||
});
|
||||
assert.equal('acceptance' in manifest, false, 'candidate manifest is not mutated');
|
||||
assert.notEqual(accepted, manifest);
|
||||
});
|
||||
|
||||
test('#421 fingerprint-only refresh preserves the complete previous acceptance trace', () => {
|
||||
const manifest = candidate();
|
||||
const previousAcceptance = {
|
||||
declared: ['view-desktop'], witnesses: 7, floor: 1, future: { kept: true },
|
||||
};
|
||||
const previousSnapshot = structuredClone(previousAcceptance);
|
||||
const accepted = acceptedDocsManifest({
|
||||
manifest,
|
||||
previousAcceptance,
|
||||
decision: { replace: [], witnesses: ['unchanged'], floor: 1 },
|
||||
});
|
||||
assert.deepEqual(accepted.acceptance, {
|
||||
...previousSnapshot, lastWriteWasFingerprintOnly: true,
|
||||
});
|
||||
assert.deepEqual(previousAcceptance, previousSnapshot, 'previous trace is not mutated');
|
||||
assert.equal('acceptance' in manifest, false, 'candidate manifest is not mutated');
|
||||
|
||||
const firstRefresh = acceptedDocsManifest({
|
||||
manifest, previousAcceptance: undefined,
|
||||
decision: { replace: [], witnesses: [], floor: 0 },
|
||||
});
|
||||
assert.deepEqual(firstRefresh.acceptance, { lastWriteWasFingerprintOnly: true });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user