42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
import {
|
|
automaticProjectSnapshotIntervalRevisions,
|
|
automaticProjectSnapshotRetentionCount,
|
|
shouldCaptureAutomaticProjectSnapshot,
|
|
} from "../src/domain/models/project-snapshot-policy.model.js";
|
|
|
|
describe("automatic project snapshot policy", () => {
|
|
it("captures every 25 revisions and retains twelve automatic snapshots", () => {
|
|
assert.equal(automaticProjectSnapshotIntervalRevisions, 25);
|
|
assert.equal(automaticProjectSnapshotRetentionCount, 12);
|
|
assert.equal(
|
|
shouldCaptureAutomaticProjectSnapshot(24, null),
|
|
false
|
|
);
|
|
assert.equal(
|
|
shouldCaptureAutomaticProjectSnapshot(25, null),
|
|
true
|
|
);
|
|
assert.equal(
|
|
shouldCaptureAutomaticProjectSnapshot(49, 25),
|
|
false
|
|
);
|
|
assert.equal(
|
|
shouldCaptureAutomaticProjectSnapshot(50, 25),
|
|
true
|
|
);
|
|
});
|
|
|
|
it("rejects invalid or inconsistent revision inputs", () => {
|
|
assert.throws(
|
|
() => shouldCaptureAutomaticProjectSnapshot(-1, null),
|
|
/non-negative integer/
|
|
);
|
|
assert.throws(
|
|
() => shouldCaptureAutomaticProjectSnapshot(25, 26),
|
|
/exceeds current revision/
|
|
);
|
|
});
|
|
});
|