Something went wrong. Try again.
Monorepo for Tangled forked from tangled.org/core
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374import { describe, expect, it, vi } from "vitest";import type { BobbinContext } from "#lib/api/client.ts";import { loadTickets, recommendUsers } from "#lib/components/ui/markdownSuggestions.ts";
const record = (collection: string, rkey: string, createdAt: string) => ({ uri: `at://did:plc:owner/${collection}/${rkey}`, state: "open", value: { title: { text: `ticket ${rkey}` }, createdAt }});
vi.mock("#lib/api/issue.ts", () => ({ listIssues: vi.fn(async () => ({ items: [record("sh.tangled.repo.issue", "12", "2026-01-01T00:00:00Z")] }))}));
vi.mock("#lib/api/records.ts", () => ({ listPulls: vi.fn(async () => ({ items: [record("sh.tangled.repo.pull", "34", "2026-01-02T00:00:00Z")] }))}));
const person = (n: number) => ({ did: `did:plc:${n}`, handle: `user${n}.test` });
describe("recommendUsers", () => { it("keeps the first five distinct people in order", () => { const people = [ person(1), person(2), person(1), person(3), person(4), person(5), person(6) ]; expect(recommendUsers(people, undefined).map((user) => user.handle)).toEqual([ "user1.test", "user2.test", "user3.test", "user4.test", "user5.test" ]); });
it("skips the viewer and people without a usable handle", () => { const people = [ person(1), { did: "did:plc:x" }, { did: "did:plc:y", handle: "handle.invalid" }, person(2) ]; expect(recommendUsers(people, "did:plc:1").map((user) => user.handle)).toEqual([ "user2.test" ]); });
it("inserts a mention with a trailing space", () => { expect(recommendUsers([person(7)], undefined)[0].insert).toBe("@user7.test "); });});
describe("loadTickets", () => { it("links each ticket by its number", async () => { const tickets = await loadTickets({} as BobbinContext, { did: "did:plc:repo", url: "/alice.test/repo" }); expect(tickets.map((ticket) => ticket.insert)).toEqual([ "[#34](/alice.test/repo/pulls/34) ", "[#12](/alice.test/repo/issues/12) " ]); });});