Files
leistungsbilanz-ts/tests/project-snapshot-policy.test.ts
T

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/
);
});
});