42 lines
1.9 KiB
JavaScript
42 lines
1.9 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
import { activeCatalogPath, decodeJsonBytes, freezeJulyBaseline, julyBaselinePath, resolveBaselinePath } from "./baseline.mjs";
|
|
|
|
test("frozen July capture remains unchanged after active promotion", () => {
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "coa-baseline-"));
|
|
try {
|
|
const active = path.join(root, activeCatalogPath);
|
|
fs.mkdirSync(path.dirname(active), { recursive: true });
|
|
const original = Buffer.from(JSON.stringify({ source: { synchronizedAt: "2026-07-25T05:24:40.596Z" }, entries: [{ id: 1 }] }));
|
|
fs.writeFileSync(active, original);
|
|
assert.equal(resolveBaselinePath(root), activeCatalogPath);
|
|
const frozen = freezeJulyBaseline(root);
|
|
const bytes = fs.readFileSync(frozen);
|
|
assert.deepEqual(decodeJsonBytes(bytes, frozen), original);
|
|
fs.writeFileSync(active, '{"source":{"synchronizedAt":"2026-08-12"}}');
|
|
assert.equal(resolveBaselinePath(root), julyBaselinePath);
|
|
assert.equal(freezeJulyBaseline(root), frozen);
|
|
assert.deepEqual(fs.readFileSync(frozen), bytes);
|
|
} finally {
|
|
assert.ok(root.startsWith(`${path.resolve(os.tmpdir())}${path.sep}`));
|
|
fs.rmSync(root, { recursive: true });
|
|
}
|
|
});
|
|
|
|
test("freezing rejects a later capture rather than mislabelling it July", () => {
|
|
const root = fs.mkdtempSync(path.join(os.tmpdir(), "coa-baseline-"));
|
|
try {
|
|
const active = path.join(root, activeCatalogPath);
|
|
fs.mkdirSync(path.dirname(active), { recursive: true });
|
|
fs.writeFileSync(active, '{"source":{"synchronizedAt":"2026-08-12"}}');
|
|
assert.throws(() => freezeJulyBaseline(root), /not the original July/);
|
|
assert.equal(fs.existsSync(path.join(root, julyBaselinePath)), false);
|
|
} finally {
|
|
assert.ok(root.startsWith(`${path.resolve(os.tmpdir())}${path.sep}`));
|
|
fs.rmSync(root, { recursive: true });
|
|
}
|
|
});
|