mirror of
https://github.com/kikootwo/ReadMeABook.git
synced 2026-06-02 20:30:10 +00:00
Add test mocks and update delete API assertion
Add missing mocks used by updated code paths: mock PreferencesContext in profile page tests and add useReplaceWithTorrent/replaceWithTorrent mock for InteractiveTorrentSearchModal tests. Update Audiobookshelf API test to expect DELETE to include ?hard=1 and Authorization header. Extend the prisma test helper in audiobook-matcher tests with a reportedIssue.findMany mock and ensure it resolves to an empty array for the test.
This commit is contained in:
@@ -17,6 +17,15 @@ vi.mock('@/lib/hooks/useRequests', () => ({
|
||||
useRequests: useRequestsMock,
|
||||
}));
|
||||
|
||||
vi.mock('@/contexts/PreferencesContext', () => ({
|
||||
usePreferences: () => ({
|
||||
cardSize: 5,
|
||||
setCardSize: vi.fn(),
|
||||
squareCovers: true,
|
||||
setSquareCovers: vi.fn(),
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock('@/components/layout/Header', () => ({
|
||||
Header: () => <div data-testid="header" />,
|
||||
}));
|
||||
|
||||
@@ -17,6 +17,15 @@ const searchEbooksMock = vi.hoisted(() => vi.fn());
|
||||
const selectEbookMock = vi.hoisted(() => vi.fn());
|
||||
const searchEbooksByAsinMock = vi.hoisted(() => vi.fn());
|
||||
const selectEbookByAsinMock = vi.hoisted(() => vi.fn());
|
||||
const replaceWithTorrentMock = vi.hoisted(() => vi.fn());
|
||||
|
||||
vi.mock('@/lib/hooks/useReportedIssues', () => ({
|
||||
useReplaceWithTorrent: () => ({
|
||||
replaceWithTorrent: replaceWithTorrentMock,
|
||||
isLoading: false,
|
||||
error: null,
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock('@/lib/hooks/useRequests', () => ({
|
||||
useInteractiveSearch: () => ({
|
||||
|
||||
@@ -275,9 +275,12 @@ describe('Audiobookshelf API client', () => {
|
||||
});
|
||||
|
||||
await expect(deleteABSItem('item-1')).resolves.toBeUndefined();
|
||||
expect(fetchMock).toHaveBeenCalledWith('http://abs/api/items/item-1', expect.objectContaining({
|
||||
expect(fetchMock).toHaveBeenCalledWith('http://abs/api/items/item-1?hard=1', {
|
||||
method: 'DELETE',
|
||||
}));
|
||||
headers: {
|
||||
'Authorization': 'Bearer token',
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('throws when delete fails', async () => {
|
||||
|
||||
@@ -6,7 +6,12 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { createPrismaMock } from '../helpers/prisma';
|
||||
|
||||
const prismaMock = createPrismaMock();
|
||||
const prismaMock = createPrismaMock() as ReturnType<typeof createPrismaMock> & {
|
||||
reportedIssue: { findMany: ReturnType<typeof vi.fn> };
|
||||
};
|
||||
|
||||
// Add reportedIssue mock (not yet in shared helper) for getOpenIssuesByAsins
|
||||
(prismaMock as any).reportedIssue = { findMany: vi.fn() };
|
||||
|
||||
vi.mock('@/lib/db', () => ({
|
||||
prisma: prismaMock,
|
||||
@@ -122,6 +127,9 @@ describe('audiobook-matcher', () => {
|
||||
},
|
||||
]);
|
||||
|
||||
// Mock reported issues (none for this test)
|
||||
prismaMock.reportedIssue.findMany.mockResolvedValue([]);
|
||||
|
||||
const { enrichAudiobooksWithMatches } = await import('@/lib/utils/audiobook-matcher');
|
||||
const results = await enrichAudiobooksWithMatches(
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user