Skip to content

Commit db89a8c

Browse files
Xaohssvenvandescheur
authored andcommitted
✅ [#35] test: added test
1 parent b605ca9 commit db89a8c

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// useCatalogi.test.tsx
2+
import { renderHook, waitFor } from "@testing-library/react";
3+
import { vi } from "vitest";
4+
import { getCatalogiChoices } from "~/api/catalogi.ts";
5+
6+
import { useCatalogi } from "./useCatalogi";
7+
8+
// Mock API
9+
vi.mock("~/api/catalogi.ts", () => ({
10+
getCatalogiChoices: vi.fn(),
11+
}));
12+
13+
describe("useCatalogi", () => {
14+
const mockService = { label: "Test Service", value: "test-service" };
15+
16+
beforeEach(() => {
17+
vi.clearAllMocks();
18+
});
19+
20+
it("fetches catalogi choices when service is provided", async () => {
21+
const mockCatalogi = [
22+
{ label: "Catalogus A", value: "cat-a" },
23+
{ label: "Catalogus B", value: "cat-b" },
24+
];
25+
(getCatalogiChoices as ReturnType<typeof vi.fn>).mockResolvedValueOnce(
26+
mockCatalogi,
27+
);
28+
29+
const { result } = renderHook(() => useCatalogi(mockService));
30+
31+
await waitFor(() => {
32+
expect(result.current.catalogiChoices.length).toBeGreaterThan(0);
33+
});
34+
35+
expect(getCatalogiChoices).toHaveBeenCalledWith("test-service");
36+
expect(result.current.catalogiChoices).toEqual(mockCatalogi);
37+
});
38+
39+
it("does not fetch catalogi when service is null", async () => {
40+
const { result } = renderHook(() => useCatalogi(null));
41+
42+
await waitFor(() => {
43+
expect(result.current.catalogiChoices).toEqual([]);
44+
});
45+
46+
expect(getCatalogiChoices).not.toHaveBeenCalled();
47+
});
48+
49+
it("sets catalogiChoices to empty array if response is empty", async () => {
50+
(getCatalogiChoices as ReturnType<typeof vi.fn>).mockResolvedValueOnce([]);
51+
52+
const { result } = renderHook(() => useCatalogi(mockService));
53+
54+
await waitFor(() => {
55+
expect(result.current.catalogiChoices).toEqual([]);
56+
});
57+
});
58+
});
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// useService.test.tsx
2+
import { renderHook, waitFor } from "@testing-library/react";
3+
import { vi } from "vitest";
4+
import { getServiceChoices } from "~/api/service.ts";
5+
6+
import { useService } from "./useService";
7+
8+
vi.mock("~/api/service.ts", () => ({
9+
getServiceChoices: vi.fn(),
10+
}));
11+
12+
describe("useService", () => {
13+
it("fetches service choices and sets the first one as selected", async () => {
14+
const mockServices = [
15+
{ label: "Service A", value: "service-a" },
16+
{ label: "Service B", value: "service-b" },
17+
];
18+
(getServiceChoices as ReturnType<typeof vi.fn>).mockResolvedValueOnce(
19+
mockServices,
20+
);
21+
22+
const { result } = renderHook(() => useService());
23+
24+
await waitFor(() => {
25+
expect(result.current.services.length).toBeGreaterThan(0);
26+
});
27+
28+
expect(getServiceChoices).toHaveBeenCalled();
29+
expect(result.current.services).toEqual(mockServices);
30+
expect(result.current.service).toEqual(mockServices[0]);
31+
});
32+
33+
it("sets service to null if no services are returned", async () => {
34+
(getServiceChoices as ReturnType<typeof vi.fn>).mockResolvedValueOnce([]);
35+
36+
const { result } = renderHook(() => useService());
37+
38+
await waitFor(() => {
39+
expect(result.current.services).toEqual([]);
40+
});
41+
42+
expect(result.current.service).toBeNull();
43+
});
44+
});

0 commit comments

Comments
 (0)