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