diff --git a/web/src/lib/components/QueueDrawer.test.ts b/web/src/lib/components/QueueDrawer.test.ts index dc1182c6..ec82c755 100644 --- a/web/src/lib/components/QueueDrawer.test.ts +++ b/web/src/lib/components/QueueDrawer.test.ts @@ -1,13 +1,15 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/svelte'; -import QueueDrawer from './QueueDrawer.svelte'; +import { emptyLikesMock } from '../../test-utils/mocks/likes'; import type { TrackRef } from '$lib/api/types'; import { makeTrack } from '$test-utils/fixtures/track'; -import { emptyLikesMock } from '../../test-utils/mocks/likes'; // QueueTrackRow (rendered inside QueueDrawer → QueueList) now renders a // LikeButton, which reads createLikedIdsQuery. Stub the likes API so the -// rows don't need a real QueryClient in context. +// rows don't need a real QueryClient in context. Both mocks — and the +// emptyLikesMock import — must precede the QueueDrawer import below, since +// loading the component evaluates the mocked modules and the hoisted +// factories need their referenced bindings already initialized. vi.mock('$lib/api/likes', () => emptyLikesMock()); const closeQueueDrawer = vi.fn(); @@ -29,6 +31,8 @@ vi.mock('$lib/player/store.svelte', () => ({ moveQueueItem: vi.fn() })); +import QueueDrawer from './QueueDrawer.svelte'; + const t = (id: string): TrackRef => makeTrack({ id, title: `Song ${id}` }); describe('QueueDrawer', () => { diff --git a/web/src/lib/components/QueueTrackRow.test.ts b/web/src/lib/components/QueueTrackRow.test.ts index 038b3d5a..05c3db09 100644 --- a/web/src/lib/components/QueueTrackRow.test.ts +++ b/web/src/lib/components/QueueTrackRow.test.ts @@ -1,13 +1,17 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen, fireEvent } from '@testing-library/svelte'; -import QueueTrackRow from './QueueTrackRow.svelte'; -import { makeTrack } from '$test-utils/fixtures/track'; import { emptyLikesMock } from '../../test-utils/mocks/likes'; +import { makeTrack } from '$test-utils/fixtures/track'; // QueueTrackRow now renders a LikeButton, which reads createLikedIdsQuery. // Stub the likes API so the row doesn't need a real QueryClient in context. +// The mock (and its emptyLikesMock import) must precede the component import +// below: importing QueueTrackRow transitively loads LikeButton → the mocked +// module, and the hoisted factory needs emptyLikesMock already initialized. vi.mock('$lib/api/likes', () => emptyLikesMock()); +import QueueTrackRow from './QueueTrackRow.svelte'; + const playFromQueueIndex = vi.fn(); const removeFromQueue = vi.fn(); const moveQueueItem = vi.fn();