import { describe, it, expect } from "vitest"; import { transformLoreData } from "@/lib/transform"; describe("transformLoreData", () => { it("returns empty array for empty data", () => { const result = transformLoreData({ open_issues: [], open_mrs_authored: [], reviewing_mrs: [], }); expect(result).toEqual([]); }); it("puts reviews first, then issues, then authored MRs", () => { const result = transformLoreData({ open_issues: [ { iid: 42, title: "Bug fix", project: "g/p", web_url: "https://gitlab.com/g/p/-/issues/42", }, ], open_mrs_authored: [ { iid: 200, title: "My feature", project: "g/p", web_url: "https://gitlab.com/g/p/-/merge_requests/200", }, ], reviewing_mrs: [ { iid: 100, title: "Review this", project: "g/p", web_url: "https://gitlab.com/g/p/-/merge_requests/100", author_username: "alice", }, ], }); expect(result).toHaveLength(3); expect(result[0].type).toBe("mr_review"); expect(result[0].requestedBy).toBe("alice"); expect(result[1].type).toBe("issue"); expect(result[2].type).toBe("mr_authored"); }); it("generates correct IDs for each type", () => { const result = transformLoreData({ open_issues: [ { iid: 42, title: "Issue", project: "group/repo", web_url: "https://x.com", }, ], open_mrs_authored: [ { iid: 200, title: "MR", project: "group/repo", web_url: "https://x.com", }, ], reviewing_mrs: [ { iid: 100, title: "Review", project: "group/repo", web_url: "https://x.com", }, ], }); // Keys escape / to :: for consistency with backend bridge.rs expect(result[0].id).toBe("mr_review:group::repo:100"); expect(result[1].id).toBe("issue:group::repo:42"); expect(result[2].id).toBe("mr_authored:group::repo:200"); }); it("preserves updated_at_iso from lore data", () => { const result = transformLoreData({ open_issues: [], open_mrs_authored: [], reviewing_mrs: [ { iid: 1, title: "T", project: "g/p", web_url: "https://x.com", updated_at_iso: "2026-02-25T10:00:00Z", }, ], }); expect(result[0].updatedAt).toBe("2026-02-25T10:00:00Z"); }); it("handles missing optional fields gracefully", () => { const result = transformLoreData({ open_issues: [ { iid: 1, title: "T", project: "g/p", web_url: "https://x.com", }, ], open_mrs_authored: [], reviewing_mrs: [], }); expect(result[0].updatedAt).toBeNull(); expect(result[0].contextQuote).toBeNull(); expect(result[0].requestedBy).toBeNull(); }); });