import { describe, expect, it } from "vitest"; import { recordedLegacyPages } from "./discover-legacy-pages"; import { HOUSEKEEPING_MIGRATION_MATRIX } from "./matrix"; import { operationsMigrationEntries } from "./operations"; import { peopleMigrationEntries } from "./people"; import { validateMigrationEntries } from "./validate-matrix"; const PEOPLE_PREFIXES = [ "/admin/users", "/admin/online", "/admin/guilds", "/admin/applications", "/admin/teams", "/admin/bans", "/admin/ip", "/admin/vpn", "/admin/wordfilter", "/admin/moderation", "/admin/tickets", "/admin/help-tickets", "/mod", ] as const; describe("peopleMigrationEntries", () => { it("merges every mod page into a people workflow", () => { const modRows = peopleMigrationEntries.filter( (row) => row.surface === "mod", ); expect(modRows).toHaveLength(13); expect(modRows.every((row) => row.decision === "MERGE")).toBe(true); expect( modRows.every((row) => row.targetPath?.startsWith("/ase/people/")), ).toBe(true); }); it("merges duplicate user detail and edit aliases", () => { for (const legacyPath of ["/admin/users/:id", "/admin/users/:id/edit"]) { expect(peopleMigrationEntries).toContainEqual( expect.objectContaining({ legacyPath, decision: "MERGE" }), ); } }); it("records concrete runtime parity evidence for every verified row", () => { expect( peopleMigrationEntries.every( (row) => row.status === "VERIFIED" && row.parityEvidence.includes(`runtime-parity:${row.legacyPath}`), ), ).toBe(true); }); it("covers every Operations and People legacy page exactly once", () => { const expected = recordedLegacyPages(HOUSEKEEPING_MIGRATION_MATRIX).filter( (page) => page.legacyPath === "/admin" || PEOPLE_PREFIXES.some( (prefix) => page.legacyPath === prefix || page.legacyPath.startsWith(`${prefix}/`), ), ); expect( validateMigrationEntries(expected, [ ...operationsMigrationEntries, ...peopleMigrationEntries, ]), ).toEqual([]); }); });