Files
GearBox/tests/services/manufacturer.service.test.ts
Jean-Luc Makiola 4ccbb2b070
Some checks failed
CI / ci (push) Failing after 1m44s
CI / e2e (push) Has been skipped
CI / deploy (push) Has been skipped
fix: wire catalog add buttons, fix Trans bold rendering, lint cleanup
- CatalogSearchOverlay: replace handleAddStub with real openAddToCollection/openAddToThread routing based on catalogSearchMode
- ConfirmDialog + __root.tsx: swap t() for Trans component on deleteItemMessage, deleteCandidateMessage, pickWinnerMessage — fixes <bold> rendering as literal text
- Biome format pass: fix 23 lint/format errors across scripts, services, tests
- Planning: mark all UAT and verification gaps resolved for phases 07, 11, 16, 20, 21, 22, 24, 32, 34; close debug sessions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 15:36:16 +02:00

81 lines
2.1 KiB
TypeScript

import { beforeEach, describe, expect, it } from "bun:test";
import { manufacturers } from "../../src/db/schema.ts";
import {
createManufacturer,
getManufacturerBySlug,
listManufacturers,
} from "../../src/server/services/manufacturer.service.ts";
import { createTestDb } from "../helpers/db.ts";
let db: Awaited<ReturnType<typeof createTestDb>>["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");
});
});