25 lines
1.3 KiB
TypeScript
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);
|
|
});
|
|
});
|