import { describe, it, expect } from "vitest"; import { prisma } from "@/lib/db"; import { GET } from "./route"; describe("discover feed API", () => { it("returns pending artists and albums split, highest score first, excluding non-pending", async () => { await prisma.discoverySuggestion.createMany({ data: [ { kind: "artist", artistMbid: "a1", artistName: "Low", score: 0.2, seedCount: 1, sources: ["listenbrainz"], secondaryTypes: [], dedupeKey: "artist:a1:" }, { kind: "artist", artistMbid: "a2", artistName: "High", score: 0.9, seedCount: 2, sources: ["listenbrainz"], secondaryTypes: [], dedupeKey: "artist:a2:" }, { kind: "album", artistMbid: "a3", artistName: "Band", rgMbid: "rg1", album: "Rec", score: 0.5, seedCount: 1, sources: ["listenbrainz"], secondaryTypes: [], dedupeKey: "album:a3:rg1" }, { kind: "artist", artistMbid: "a4", artistName: "Gone", score: 5, seedCount: 1, sources: ["listenbrainz"], secondaryTypes: [], status: "dismissed", dedupeKey: "artist:a4:" }, ], }); const body = await (await GET()).json(); expect(body.artists.map((a: any) => a.artistName)).toEqual(["High", "Low"]); // dismissed excluded expect(body.albums.map((a: any) => a.album)).toEqual(["Rec"]); expect(body.artists[0]).toMatchObject({ artistMbid: "a2", seedCount: 2, sources: ["listenbrainz"] }); }); });