test(repo): guard timeline live preview boundaries
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
collectArchitectureGuardrailViolations,
|
||||
countLines,
|
||||
evaluateRule,
|
||||
rules,
|
||||
} from "./check-architecture-guardrails.mjs";
|
||||
|
||||
describe("architecture guardrails", () => {
|
||||
@@ -66,4 +67,22 @@ describe("architecture guardrails", () => {
|
||||
"apps/web/src/example.ts: file grew to 4 lines and exceeds maxLines=2; split the ownership surface before expanding it further",
|
||||
]);
|
||||
});
|
||||
|
||||
it("guards the extracted timeline live preview ownership boundary", () => {
|
||||
const dragRule = rules.find((rule) => rule.file === "apps/web/src/hooks/useTimelineDrag.ts");
|
||||
const livePreviewRule = rules.find((rule) => rule.file === "apps/web/src/hooks/timelineLivePreview.ts");
|
||||
|
||||
assert.ok(dragRule);
|
||||
assert.ok(livePreviewRule);
|
||||
|
||||
assert.deepEqual(evaluateRule(dragRule, "function clearLivePreview() {}\n"), [
|
||||
"apps/web/src/hooks/useTimelineDrag.ts: missing guardrail anchor: timeline drag must keep live preview behavior delegated to the extracted helper module",
|
||||
"apps/web/src/hooks/useTimelineDrag.ts: forbidden pattern matched: timeline drag must not re-inline live preview helper implementations",
|
||||
]);
|
||||
|
||||
assert.deepEqual(evaluateRule(livePreviewRule, "export function scheduleLivePreview() {}\n"), [
|
||||
"apps/web/src/hooks/timelineLivePreview.ts: missing guardrail anchor: timeline live preview helpers must keep preview reset logic centralized",
|
||||
"apps/web/src/hooks/timelineLivePreview.ts: missing guardrail anchor: timeline live preview helpers must keep snapshot preservation centralized",
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user