import { beforeEach, describe, expect, it } from "bun:test"; import { createManufacturer, getManufacturerBySlug, listManufacturers, } from "../../src/server/services/manufacturer.service.ts"; import { createTestDb } from "../helpers/db.ts"; let db: Awaited>["db"]; beforeEach(async () => { ({ db } = await createTestDb()); }); describe("createManufacturer", () => { it("inserts a manufacturer and returns it", async () => { const result = await createManufacturer(db, { name: "Apidura", slug: "apidura", website: "https://apidura.com", tier: 1, country: "GB", }); expect(result.id).toBeGreaterThan(0); expect(result.name).toBe("Apidura"); expect(result.slug).toBe("apidura"); expect(result.active).toBe(true); }); it("throws on duplicate slug", async () => { await createManufacturer(db, { name: "Apidura", slug: "apidura", website: "https://apidura.com", }); await expect( createManufacturer(db, { name: "Apidura Copy", slug: "apidura", website: "https://other.com", }), ).rejects.toThrow(); }); }); describe("getManufacturerBySlug", () => { it("returns manufacturer when found", async () => { await createManufacturer(db, { name: "Revelate Designs", slug: "revelate-designs", website: "https://revelatedesigns.com", }); const result = await getManufacturerBySlug(db, "revelate-designs"); expect(result?.name).toBe("Revelate Designs"); }); it("returns null when not found", async () => { const result = await getManufacturerBySlug(db, "nope"); expect(result).toBeNull(); }); }); describe("listManufacturers", () => { it("returns all manufacturers ordered by name", async () => { await createManufacturer(db, { name: "Ortlieb", slug: "ortlieb", website: "https://ortlieb.com", }); await createManufacturer(db, { name: "Apidura", slug: "apidura", website: "https://apidura.com", }); const result = await listManufacturers(db); expect(result[0]?.name).toBe("Apidura"); expect(result[1]?.name).toBe("Ortlieb"); }); });