Skip to content

Commit

Permalink
test: pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
Sunjae95 committed Jan 24, 2025
1 parent 8fced0e commit ed38759
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions src/hooks/useMembers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,3 +189,84 @@ test("filter members by name case-insensitively", async () => {

expect(result.current.members).toEqual([johnDoe]);
});

test("total cohorts calculated correctly", async () => {
const expectedMembers: Member[] = [
createMockMember({ cohorts: [1] }),
createMockMember({ cohorts: [2] }),
createMockMember({ cohorts: [2] }),
createMockMember({ cohorts: [3] }),
createMockMember({ cohorts: [3] }),
];

const getMembers = vi.fn().mockResolvedValue(expectedMembers);

const { result } = renderHook(() => useMembers({ getMembers }));

await waitFor(() => expect(result.current.isLoading).toBe(false));

expect(result.current.totalCohorts).toBe(3);
});

test("pagination members by initialize", async () => {
const expectedMembers: Member[] = [];

const getMembers = vi.fn().mockResolvedValue(expectedMembers);

const { result } = renderHook(() =>
useMembers({ getMembers, isPagination: true }),
);

// Wait for members to load
await waitFor(() => expect(result.current.isLoading).toBe(false));

// Initial state
expect(result.current.members).toEqual(expectedMembers);

expect(result.current.pagination.current).toEqual(0);
expect(result.current.pagination.total).toEqual(0);
});

test("pagination members by current, total and members.lenght", async () => {
const expectedMembers: Member[] = [
createMockMember({ cohorts: [1] }),
createMockMember({ cohorts: [2] }),
createMockMember({ cohorts: [3] }),
createMockMember({ cohorts: [4] }),
createMockMember({ cohorts: [5] }),
createMockMember({ cohorts: [6] }),
createMockMember({ cohorts: [7] }),
createMockMember({ cohorts: [8] }),
createMockMember({ cohorts: [9] }),
createMockMember({ cohorts: [10] }),
createMockMember({ cohorts: [11] }),
createMockMember({ cohorts: [12] }),
createMockMember({ cohorts: [13] }),
];

const getMembers = vi.fn().mockResolvedValue(expectedMembers);

const { result } = renderHook(() =>
useMembers({ getMembers, isPagination: true }),
);

// Wait for members to load
await waitFor(() => expect(result.current.isLoading).toBe(false));

// Initial state 1 / 2
expect(result.current.pagination.current).toEqual(1);
expect(result.current.pagination.total).toEqual(2);
expect(result.current.members.length).toEqual(10);

// Act: Apply Next page 2 / 2
act(() => {
result.current.setPagination(({ current, total }) => ({
current: current + 1,
total,
}));
});

expect(result.current.pagination.current).toEqual(2);
expect(result.current.pagination.total).toEqual(2);
expect(result.current.members.length).toEqual(3);
});

0 comments on commit ed38759

Please sign in to comment.