diff --git a/web/src/lib/components/AddToPlaylistMenu.test.ts b/web/src/lib/components/AddToPlaylistMenu.test.ts index 5bcff140..11574c71 100644 --- a/web/src/lib/components/AddToPlaylistMenu.test.ts +++ b/web/src/lib/components/AddToPlaylistMenu.test.ts @@ -41,14 +41,6 @@ const playlistsData = vi.hoisted(() => ({ public: [] as unknown[] })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({ invalidateQueries: vi.fn().mockResolvedValue(undefined) }) - }; -}); - vi.mock('$lib/auth/store.svelte', () => ({ user: { value: { id: 'u-self', username: 'me', is_admin: false } } })); diff --git a/web/src/lib/components/AlbumCard.test.ts b/web/src/lib/components/AlbumCard.test.ts index 37bedf51..e4fb0285 100644 --- a/web/src/lib/components/AlbumCard.test.ts +++ b/web/src/lib/components/AlbumCard.test.ts @@ -22,11 +22,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - vi.mock('$app/navigation', () => ({ goto: vi.fn() })); vi.mock('$lib/api/albums', async (orig) => { diff --git a/web/src/lib/components/AlbumMenu.test.ts b/web/src/lib/components/AlbumMenu.test.ts index 9c7091d7..6d8a0ea2 100644 --- a/web/src/lib/components/AlbumMenu.test.ts +++ b/web/src/lib/components/AlbumMenu.test.ts @@ -28,11 +28,6 @@ vi.mock('$lib/player/store.svelte', () => ({ enqueueTracks: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import AlbumMenu from './AlbumMenu.svelte'; import { enqueueTracks } from '$lib/player/store.svelte'; import { listAlbumTracks } from '$lib/api/albums'; diff --git a/web/src/lib/components/ArtistCard.test.ts b/web/src/lib/components/ArtistCard.test.ts index e3aa1513..7faeb502 100644 --- a/web/src/lib/components/ArtistCard.test.ts +++ b/web/src/lib/components/ArtistCard.test.ts @@ -21,11 +21,6 @@ vi.mock('$lib/api/likes', async () => { unlikeEntity: vi.fn().mockResolvedValue(undefined) }; }); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import ArtistCard from './ArtistCard.svelte'; import { api } from '$lib/api/client'; import { playQueue } from '$lib/player/store.svelte'; diff --git a/web/src/lib/components/ArtistMenu.test.ts b/web/src/lib/components/ArtistMenu.test.ts index e729e401..d68669e6 100644 --- a/web/src/lib/components/ArtistMenu.test.ts +++ b/web/src/lib/components/ArtistMenu.test.ts @@ -27,11 +27,6 @@ vi.mock('$lib/player/store.svelte', () => ({ enqueueTracks: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import ArtistMenu from './ArtistMenu.svelte'; import { enqueueTracks } from '$lib/player/store.svelte'; import { listArtistTracks } from '$lib/api/artists'; diff --git a/web/src/lib/components/CompactTrackCard.test.ts b/web/src/lib/components/CompactTrackCard.test.ts index 87bf9969..ab8bf665 100644 --- a/web/src/lib/components/CompactTrackCard.test.ts +++ b/web/src/lib/components/CompactTrackCard.test.ts @@ -34,11 +34,6 @@ vi.mock('$lib/auth/store.svelte', () => ({ vi.mock('$app/navigation', () => ({ goto: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - vi.mock('$lib/player/store.svelte', () => ({ playQueue: vi.fn(), enqueueTrack: vi.fn(), diff --git a/web/src/lib/components/LikeButton.test.ts b/web/src/lib/components/LikeButton.test.ts index 90f724a6..d57c51dd 100644 --- a/web/src/lib/components/LikeButton.test.ts +++ b/web/src/lib/components/LikeButton.test.ts @@ -12,14 +12,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn().mockResolvedValue(undefined) })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({}) - }; -}); - import LikeButton from './LikeButton.svelte'; import { likeEntity, unlikeEntity } from '$lib/api/likes'; diff --git a/web/src/lib/components/PlayerBar.test.ts b/web/src/lib/components/PlayerBar.test.ts index d6ad0941..859666ca 100644 --- a/web/src/lib/components/PlayerBar.test.ts +++ b/web/src/lib/components/PlayerBar.test.ts @@ -61,11 +61,6 @@ vi.mock('$lib/api/quarantine', () => ({ createMyQuarantineQuery: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import PlayerBar from './PlayerBar.svelte'; import { togglePlay, skipNext, skipPrev, seekTo, setVolume, diff --git a/web/src/lib/components/PlaylistCard.test.ts b/web/src/lib/components/PlaylistCard.test.ts index 598a80dd..1213c5f9 100644 --- a/web/src/lib/components/PlaylistCard.test.ts +++ b/web/src/lib/components/PlaylistCard.test.ts @@ -7,14 +7,6 @@ vi.mock('$lib/auth/store.svelte', () => ({ user: { value: { id: 'u-self', username: 'me', is_admin: false } } })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({ invalidateQueries: vi.fn().mockResolvedValue(undefined) }) - }; -}); - vi.mock('$lib/api/playlists', () => ({ getPlaylist: vi.fn().mockResolvedValue({ id: 'p-1', diff --git a/web/src/lib/components/PlaylistTrackRow.test.ts b/web/src/lib/components/PlaylistTrackRow.test.ts index 59ff43b7..d028ab07 100644 --- a/web/src/lib/components/PlaylistTrackRow.test.ts +++ b/web/src/lib/components/PlaylistTrackRow.test.ts @@ -46,11 +46,6 @@ vi.mock('$lib/player/store.svelte', () => ({ playRadio: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import PlaylistTrackRow from './PlaylistTrackRow.svelte'; const live: PlaylistTrack = { diff --git a/web/src/lib/components/TrackMenu.test.ts b/web/src/lib/components/TrackMenu.test.ts index 16eb7054..1b7903d8 100644 --- a/web/src/lib/components/TrackMenu.test.ts +++ b/web/src/lib/components/TrackMenu.test.ts @@ -49,11 +49,6 @@ vi.mock('$lib/player/store.svelte', () => ({ enqueueTrack: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import TrackMenu from './TrackMenu.svelte'; import { playNext, enqueueTrack } from '$lib/player/store.svelte'; diff --git a/web/src/lib/components/TrackRow.test.ts b/web/src/lib/components/TrackRow.test.ts index 84ef1754..054e3bb1 100644 --- a/web/src/lib/components/TrackRow.test.ts +++ b/web/src/lib/components/TrackRow.test.ts @@ -26,11 +26,6 @@ vi.mock('$lib/api/quarantine', () => ({ createMyQuarantineQuery: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import TrackRow from './TrackRow.svelte'; import { playQueue, enqueueTrack, playRadio } from '$lib/player/store.svelte'; diff --git a/web/src/routes/admin/admin.test.ts b/web/src/routes/admin/admin.test.ts index b911a9dc..55e6bfbc 100644 --- a/web/src/routes/admin/admin.test.ts +++ b/web/src/routes/admin/admin.test.ts @@ -60,14 +60,6 @@ vi.mock('$lib/api/admin', async () => { }; }); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({ invalidateQueries: vi.fn() }) - }; -}); - afterEach(() => { cleanup(); vi.clearAllMocks(); diff --git a/web/src/routes/admin/integrations/integrations.test.ts b/web/src/routes/admin/integrations/integrations.test.ts index f4dc9ab9..d54ab06f 100644 --- a/web/src/routes/admin/integrations/integrations.test.ts +++ b/web/src/routes/admin/integrations/integrations.test.ts @@ -7,11 +7,6 @@ import type { CoverProvider, SMTPConfig } from '$lib/api/admin'; // useQueryClient is wrapped so the page can call invalidateQueries() without // a real QueryClient context. Everything else from svelte-query passes through. const invalidateQueries = vi.fn(); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries }) }; -}); - vi.mock('$lib/api/admin', () => ({ createLidarrConfigQuery: vi.fn(), createQualityProfilesQuery: vi.fn(), diff --git a/web/src/routes/admin/quarantine/quarantine.test.ts b/web/src/routes/admin/quarantine/quarantine.test.ts index 51f73ff7..ed3d5a6a 100644 --- a/web/src/routes/admin/quarantine/quarantine.test.ts +++ b/web/src/routes/admin/quarantine/quarantine.test.ts @@ -5,11 +5,6 @@ import type { AdminQuarantineRow } from '$lib/api/types'; // Wrap useQueryClient so the page can call invalidateQueries() without a real // QueryClient context. Everything else from svelte-query passes through. -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - vi.mock('$lib/api/admin', () => ({ createAdminQuarantineQuery: vi.fn(), resolveQuarantine: vi.fn(), diff --git a/web/src/routes/admin/requests/requests.test.ts b/web/src/routes/admin/requests/requests.test.ts index a0a3add1..701a5595 100644 --- a/web/src/routes/admin/requests/requests.test.ts +++ b/web/src/routes/admin/requests/requests.test.ts @@ -5,11 +5,6 @@ import type { LidarrRequest } from '$lib/api/types'; // Wrap useQueryClient so the page can call invalidateQueries() without a // real QueryClient context. Everything else from svelte-query passes through. -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - vi.mock('$lib/api/admin', () => ({ createAdminRequestsQuery: vi.fn(), createQualityProfilesQuery: vi.fn(), diff --git a/web/src/routes/admin/users/users.test.ts b/web/src/routes/admin/users/users.test.ts index b630da3d..08b641b0 100644 --- a/web/src/routes/admin/users/users.test.ts +++ b/web/src/routes/admin/users/users.test.ts @@ -5,11 +5,6 @@ import type { AdminUser, AdminInvite } from '$lib/api/admin'; // Wrap useQueryClient so the page can call invalidateQueries() without a real // QueryClient context. Everything else from svelte-query passes through. -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - vi.mock('$lib/api/admin', () => ({ createAdminUsersQuery: vi.fn(), createAdminInvitesQuery: vi.fn(), diff --git a/web/src/routes/albums/[id]/album.test.ts b/web/src/routes/albums/[id]/album.test.ts index ce57c879..3efc3dc9 100644 --- a/web/src/routes/albums/[id]/album.test.ts +++ b/web/src/routes/albums/[id]/album.test.ts @@ -29,11 +29,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import AlbumPage from './+page.svelte'; import { createAlbumQuery } from '$lib/api/queries'; diff --git a/web/src/routes/artists/[id]/artist.test.ts b/web/src/routes/artists/[id]/artist.test.ts index 35819abd..1bd387d8 100644 --- a/web/src/routes/artists/[id]/artist.test.ts +++ b/web/src/routes/artists/[id]/artist.test.ts @@ -29,11 +29,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import ArtistPage from './+page.svelte'; import { createArtistQuery } from '$lib/api/queries'; diff --git a/web/src/routes/discover/discover.test.ts b/web/src/routes/discover/discover.test.ts index 099acf84..2172d626 100644 --- a/web/src/routes/discover/discover.test.ts +++ b/web/src/routes/discover/discover.test.ts @@ -22,11 +22,6 @@ vi.mock('$lib/api/client', () => ({ api: { get: vi.fn(), post: vi.fn(), put: vi.fn(), del: vi.fn() } })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import DiscoverPage from './+page.svelte'; import { createLidarrSearchQuery } from '$lib/api/lidarr'; import { createSuggestionsQuery } from '$lib/api/suggestions'; diff --git a/web/src/routes/library/albums/page.test.ts b/web/src/routes/library/albums/page.test.ts index 52f7394a..80d2f656 100644 --- a/web/src/routes/library/albums/page.test.ts +++ b/web/src/routes/library/albums/page.test.ts @@ -40,11 +40,6 @@ vi.mock('$lib/api/likes', () => ({ // AlbumCard renders LikeButton, which calls useQueryClient() to get the // cache for invalidation. The page test isn't wrapped in a QueryClientProvider, // so we stub useQueryClient with a noop client. -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import Page from './+page.svelte'; describe('/library/albums', () => { diff --git a/web/src/routes/library/artists/page.test.ts b/web/src/routes/library/artists/page.test.ts index 501aa03d..f99ecbc6 100644 --- a/web/src/routes/library/artists/page.test.ts +++ b/web/src/routes/library/artists/page.test.ts @@ -33,11 +33,6 @@ vi.mock('$lib/api/likes', () => ({ likeEntity: vi.fn().mockResolvedValue(undefined), unlikeEntity: vi.fn().mockResolvedValue(undefined) })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import Page from './+page.svelte'; describe('/library/artists', () => { diff --git a/web/src/routes/library/hidden/hidden.test.ts b/web/src/routes/library/hidden/hidden.test.ts index 1630d241..6f1c5be3 100644 --- a/web/src/routes/library/hidden/hidden.test.ts +++ b/web/src/routes/library/hidden/hidden.test.ts @@ -2,11 +2,6 @@ import { afterEach, describe, expect, test, vi } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/svelte'; import { mockQuery } from '../../../test-utils/query'; -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - vi.mock('$lib/api/quarantine', () => ({ createMyQuarantineQuery: vi.fn(), unflagTrack: vi.fn().mockResolvedValue(undefined) diff --git a/web/src/routes/library/liked/liked.test.ts b/web/src/routes/library/liked/liked.test.ts index e88411f4..b2248666 100644 --- a/web/src/routes/library/liked/liked.test.ts +++ b/web/src/routes/library/liked/liked.test.ts @@ -17,11 +17,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - vi.mock('$lib/api/client', () => ({ api: { get: vi.fn() } })); vi.mock('$lib/player/store.svelte', () => ({ playQueue: vi.fn(), enqueueTrack: vi.fn(), enqueueTracks: vi.fn() diff --git a/web/src/routes/page.test.ts b/web/src/routes/page.test.ts index b489a916..c39ee179 100644 --- a/web/src/routes/page.test.ts +++ b/web/src/routes/page.test.ts @@ -36,11 +36,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn().mockResolvedValue(undefined) })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - import Page from './+page.svelte'; import { createPlaylistsQuery } from '$lib/api/playlists'; import { createSystemPlaylistsStatusQuery } from '$lib/api/me'; diff --git a/web/src/routes/playlists/[id]/playlist.test.ts b/web/src/routes/playlists/[id]/playlist.test.ts index af6c8ef4..81621589 100644 --- a/web/src/routes/playlists/[id]/playlist.test.ts +++ b/web/src/routes/playlists/[id]/playlist.test.ts @@ -21,11 +21,6 @@ vi.mock('$lib/api/playlists', () => ({ refreshDiscover: vi.fn().mockResolvedValue({ playlist_id: 'p1', track_count: 5 }) })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn().mockResolvedValue(undefined) }) }; -}); - vi.mock('$lib/auth/store.svelte', () => ({ user: { value: { id: 'u-self', username: 'me', is_admin: false } } })); diff --git a/web/src/routes/playlists/playlists.test.ts b/web/src/routes/playlists/playlists.test.ts index 25d20f9f..e54247ee 100644 --- a/web/src/routes/playlists/playlists.test.ts +++ b/web/src/routes/playlists/playlists.test.ts @@ -8,14 +8,6 @@ vi.mock('$lib/api/playlists', () => ({ createPlaylist: vi.fn().mockResolvedValue({ id: 'p-new', name: 'X' }) })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({ invalidateQueries: vi.fn().mockResolvedValue(undefined) }) - }; -}); - vi.mock('$app/navigation', () => ({ goto: vi.fn() })); import PlaylistsPage from './+page.svelte'; diff --git a/web/src/routes/requests/requests.test.ts b/web/src/routes/requests/requests.test.ts index 6e7bfdf8..6bae206e 100644 --- a/web/src/routes/requests/requests.test.ts +++ b/web/src/routes/requests/requests.test.ts @@ -22,14 +22,6 @@ vi.mock('$lib/api/client', () => ({ api: { get: vi.fn(), post: vi.fn(), put: vi.fn(), del: vi.fn() } })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({ invalidateQueries }) - }; -}); - import RequestsPage from './+page.svelte'; import { createMyRequestsQuery, cancelRequest } from '$lib/api/requests'; import { qk } from '$lib/api/queries'; diff --git a/web/src/routes/search/albums/albums.test.ts b/web/src/routes/search/albums/albums.test.ts index 456f629d..93fa4c74 100644 --- a/web/src/routes/search/albums/albums.test.ts +++ b/web/src/routes/search/albums/albums.test.ts @@ -31,11 +31,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import AlbumsOverflow from './+page.svelte'; import { createSearchAlbumsInfiniteQuery } from '$lib/api/queries'; diff --git a/web/src/routes/search/artists/artists.test.ts b/web/src/routes/search/artists/artists.test.ts index 19c47e70..6893fe18 100644 --- a/web/src/routes/search/artists/artists.test.ts +++ b/web/src/routes/search/artists/artists.test.ts @@ -24,11 +24,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import ArtistsOverflow from './+page.svelte'; import { createSearchArtistsInfiniteQuery } from '$lib/api/queries'; diff --git a/web/src/routes/search/search.test.ts b/web/src/routes/search/search.test.ts index 531de004..bf52160c 100644 --- a/web/src/routes/search/search.test.ts +++ b/web/src/routes/search/search.test.ts @@ -37,11 +37,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - import SearchPage from './+page.svelte'; import { createSearchQuery } from '$lib/api/queries'; diff --git a/web/src/routes/search/tracks/tracks.test.ts b/web/src/routes/search/tracks/tracks.test.ts index f64a46fd..9fac2106 100644 --- a/web/src/routes/search/tracks/tracks.test.ts +++ b/web/src/routes/search/tracks/tracks.test.ts @@ -30,11 +30,6 @@ vi.mock('$lib/api/likes', () => ({ unlikeEntity: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({}) }; -}); - vi.mock('$lib/api/quarantine', () => ({ flagTrack: vi.fn(), unflagTrack: vi.fn(), diff --git a/web/src/routes/settings/Appearance.test.ts b/web/src/routes/settings/Appearance.test.ts index cc58b006..0de00816 100644 --- a/web/src/routes/settings/Appearance.test.ts +++ b/web/src/routes/settings/Appearance.test.ts @@ -25,11 +25,6 @@ vi.mock('$lib/api/listenbrainz', () => { }; }); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; -}); - beforeEach(() => { globalThis.localStorage.clear(); document.documentElement.removeAttribute('data-theme'); diff --git a/web/src/routes/settings/settings.test.ts b/web/src/routes/settings/settings.test.ts index ff673892..c3db35fd 100644 --- a/web/src/routes/settings/settings.test.ts +++ b/web/src/routes/settings/settings.test.ts @@ -20,14 +20,6 @@ vi.mock('$lib/api/me', () => ({ regenerateAPIToken: vi.fn() })); -vi.mock('@tanstack/svelte-query', async (orig) => { - const actual = (await orig()) as Record; - return { - ...actual, - useQueryClient: () => ({ invalidateQueries: vi.fn() }) - }; -}); - import SettingsPage from './+page.svelte'; import { createLBStatusQuery, diff --git a/web/vitest.setup.ts b/web/vitest.setup.ts index a953959e..883d6851 100644 --- a/web/vitest.setup.ts +++ b/web/vitest.setup.ts @@ -1,9 +1,20 @@ import '@testing-library/jest-dom/vitest'; -import { beforeEach, afterEach } from 'vitest'; +import { beforeEach, afterEach, vi } from 'vitest'; import { render } from '@testing-library/svelte'; import ToastHost from './src/lib/components/ToastHost.svelte'; import { clearToast } from './src/lib/stores/toast.svelte'; +// Default svelte-query mock for the whole test suite. Most component +// tests just need useQueryClient to return SOMETHING — they never assert +// on the result. Tests that need to assert on invalidateQueries (named +// mock pattern) override this with their own per-file vi.mock. The +// override wins because per-file mocks take precedence over setup-file +// mocks in vitest. +vi.mock('@tanstack/svelte-query', async (orig) => { + const actual = (await orig()) as Record; + return { ...actual, useQueryClient: () => ({ invalidateQueries: vi.fn() }) }; +}); + // Node 25 ships a partial localStorage global that lacks getItem/setItem/clear // unless launched with --localstorage-file. jsdom sees Node's global and skips // installing its own. Replace with an in-memory Storage-compatible polyfill so