80 lines
2.0 KiB
TypeScript
80 lines
2.0 KiB
TypeScript
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<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");
|
|
});
|
|
});
|