vibeguard/tests/subscriptions.test.ts

25 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { subscriptionIsDue } from "../src/shared/subscriptions";
import { validateDefinitionCollection } from "../src/shared/site-definitions";
const definition = {
id: "example",
name: "Example",
urlPatterns: ["https://example.test/*"],
requiredSelectors: ["main"],
post: { rootSelectors: ["article"], textSelectors: [".content"] }
};
describe("definition subscriptions", () => {
it("validates versioned collections and rejects duplicate IDs", () => {
const result = validateDefinitionCollection({ schemaVersion: 1, collectionId: "example-source", name: "Example", definitions: [definition, definition] });
expect(result.valid).toBe(false);
});
it("is due when never updated or at least seven days old", () => {
const now = Date.parse("2026-08-25T00:00:00Z");
expect(subscriptionIsDue({ id: "x", name: "X", url: "https://example.test/x.json", enabled: true, priority: 0 }, now)).toBe(true);
expect(subscriptionIsDue({ id: "x", name: "X", url: "https://example.test/x.json", enabled: true, priority: 0, lastSuccessfulUpdate: "2026-08-18T00:00:00Z" }, now)).toBe(true);
expect(subscriptionIsDue({ id: "x", name: "X", url: "https://example.test/x.json", enabled: true, priority: 0, lastSuccessfulUpdate: "2026-08-24T00:00:00Z" }, now)).toBe(false);
});
});