refactor(web): extract emptyPlaylistsMock + apiClientMock test helpers
The DRY pass audit (#375) found two inline mock patterns repeated across the vitest suite: a default empty-playlists mock for $lib/api/playlists (4 exact copies in menu/card tests) and an api-client spy mock for $lib/api/client (9 callers split between get-only and full-RESTy shapes — unified into one helper that always returns all four verb spies). Mirrors the existing test-utils/mocks/likes.ts and test-utils/mocks/quarantine.ts convention. Tests with intentionally divergent shapes (AddToPlaylistMenu's richer createPlaylist payload, PlaylistCard's getPlaylist, route-specific mocks, events.svelte's specific resolved value) stay inline. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
||||
import { render, screen, fireEvent, waitFor } from '@testing-library/svelte';
|
||||
import { mockQuery } from '../../test-utils/query';
|
||||
import { apiClientMock } from '../../test-utils/mocks/client';
|
||||
import type { LidarrSearchResult } from '$lib/api/types';
|
||||
|
||||
// Lidarr search query factory and createRequest are mocked at the module
|
||||
@@ -18,9 +19,7 @@ vi.mock('$lib/api/requests', () => ({
|
||||
createRequest: vi.fn().mockResolvedValue({ id: 'r1' })
|
||||
}));
|
||||
|
||||
vi.mock('$lib/api/client', () => ({
|
||||
api: { get: vi.fn(), post: vi.fn(), put: vi.fn(), del: vi.fn() }
|
||||
}));
|
||||
vi.mock('$lib/api/client', () => apiClientMock());
|
||||
|
||||
import DiscoverPage from './+page.svelte';
|
||||
import { createLidarrSearchQuery } from '$lib/api/lidarr';
|
||||
|
||||
Reference in New Issue
Block a user