import type { Note } from "$lib/model"; import { cleanup, render, screen } from "@solidjs/testing-library"; import { afterEach, describe, expect, it, vi } from "vitest"; import { NotesGraph } from "../NotesGraph"; vi.mock("@solidjs/router", () => ({ useNavigate: () => vi.fn() })); const mockNotes: Note[] = [{ id: "note-1", owner_did: "did:plc:test", title: "First Note", body: "Content with [[Second Note]] link", tags: ["test"], visibility: { type: "Private" }, created_at: "2026-01-01T00:00:00Z", updated_at: "2026-01-01T00:00:00Z", }, { id: "note-2", owner_did: "did:plc:test", title: "Second Note", body: "This links to [[First Note]]", tags: ["test", "linked"], visibility: { type: "Private" }, created_at: "2026-01-01T00:00:00Z", updated_at: "2026-01-01T00:00:00Z", }, { id: "note-3", owner_did: "did:plc:test", title: "Orphan Note", body: "No wikilinks here", tags: [], visibility: { type: "Private" }, created_at: "2026-01-01T00:00:00Z", updated_at: "2026-01-01T00:00:00Z", }]; describe("NotesGraph", () => { afterEach(cleanup); it("renders the graph container", () => { render(() => ); expect(screen.getByTestId("notes-graph")).toBeInTheDocument(); }); it("renders SVG element", () => { render(() => ); const container = screen.getByTestId("notes-graph"); const svg = container.querySelector("svg"); expect(svg).toBeInTheDocument(); }); it("creates nodes group", () => { render(() => ); const container = screen.getByTestId("notes-graph"); const nodesGroup = container.querySelector(".nodes"); expect(nodesGroup).toBeInTheDocument(); }); it("creates links group", () => { render(() => ); const container = screen.getByTestId("notes-graph"); const linksGroup = container.querySelector(".links"); expect(linksGroup).toBeInTheDocument(); }); it("renders with custom dimensions", () => { render(() => ); const container = screen.getByTestId("notes-graph"); expect(container).toBeInTheDocument(); }); it("handles empty notes array", () => { render(() => ); expect(screen.getByTestId("notes-graph")).toBeInTheDocument(); }); it("highlights current note when provided", () => { render(() => ); expect(screen.getByTestId("notes-graph")).toBeInTheDocument(); }); });