Files
admin e6cc719f37
CI (SIAX Cloud) / security (push) Successful in 12s
CI (SIAX Cloud) / contracts (push) Failing after 12s
CI (SIAX Cloud) / quality (push) Failing after 8s
Deploy to Coolify / deploy (push) Failing after 2s
c0py: initial scaffolding for website registry tool
2026-09-16 13:15:21 +02:00

66 lines
1.5 KiB
TypeScript

import { describe, it, expect } from "vitest";
import { analyzePages } from "../src/registry/analyzer";
import type { Page } from "@siax/c0py-types";
const pages: Page[] = [
{
id: "1",
registryId: "r1",
url: "https://example.com/",
path: "/",
title: "Home",
description: null,
statusCode: 200,
contentType: "text/html",
discoveredAt: new Date(),
analysis: null,
},
{
id: "2",
registryId: "r1",
url: "https://example.com/about",
path: "/about",
title: "About",
description: null,
statusCode: 200,
contentType: "text/html",
discoveredAt: new Date(),
analysis: null,
},
{
id: "3",
registryId: "r1",
url: "https://example.com/missing",
path: "/missing",
title: null,
description: null,
statusCode: 404,
contentType: "text/html",
discoveredAt: new Date(),
analysis: null,
},
];
describe("analyzePages", () => {
it("counts pages correctly", () => {
const result = analyzePages(pages);
expect(result.totalPages).toBe(3);
expect(result.brokenLinks).toBe(1);
expect(result.hasBrokenLinks).toBe(true);
expect(result.uniqueDomains).toBe(1);
});
it("aggregates status codes", () => {
const result = analyzePages(pages);
expect(result.statusCodes[200]).toBe(2);
expect(result.statusCodes[404]).toBe(1);
});
it("handles empty input", () => {
const result = analyzePages([]);
expect(result.totalPages).toBe(0);
expect(result.avgStatusCode).toBe(0);
expect(result.hasBrokenLinks).toBe(false);
});
});