test(sprint-switcher): repareer mock om CI te unblocken

Twee pre-existing mock-bugs die op main al rood waren maar geen gevolgen
hadden tot de CI-monitor erop sloeg in deze PR:

1. Mock-state miste `entities.settings`. Sinds PBI-79 (commit d587be2)
   selecteert SprintSwitcher ook `s.entities.settings.workflow?.pendingSprintDraft?.[productId]?.goal`,
   maar de testmock leverde alleen `{ context }`. → undefined-crash op
   `entities.settings` reading.

2. Mock factory exporteerde alleen `setActiveSprintAction`, maar de
   productie roept `switchActiveSprintAction` aan. Door `vi.mock` werden
   alle andere exports `undefined`, waardoor `actionMock` nooit kon
   triggeren.

Out-of-scope-fix t.o.v. de sprint-eligibility-fix in dit PR — apart commit
zodat reviewer dit als losse cleanup kan zien. CI is nu groen lokaal:
3/3 sprint-switcher tests + 839/839 full suite.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-13 15:38:29 +02:00
parent db37b66d17
commit cc75934d56

View file

@ -15,6 +15,7 @@ vi.mock('next/navigation', () => ({
vi.mock('@/actions/active-sprint', () => ({
setActiveSprintAction: vi.fn(),
switchActiveSprintAction: vi.fn(),
}))
vi.mock('sonner', () => ({
@ -22,9 +23,25 @@ vi.mock('sonner', () => ({
}))
const isDemoMock = { value: false }
// Mock-state shape moet alle paden dekken die SprintSwitcher selecteert:
// - s.context.isDemo (oude code)
// - s.entities.settings.workflow?.pendingSprintDraft?.[productId]?.goal (PBI-79)
type MockStoreState = {
context: { isDemo: boolean }
entities: {
settings: {
workflow?: {
pendingSprintDraft?: Record<string, { goal: string } | undefined>
}
}
}
}
vi.mock('@/stores/user-settings/store', () => ({
useUserSettingsStore: (selector: (s: { context: { isDemo: boolean } }) => unknown) =>
selector({ context: { isDemo: isDemoMock.value } }),
useUserSettingsStore: (selector: (s: MockStoreState) => unknown) =>
selector({
context: { isDemo: isDemoMock.value },
entities: { settings: {} },
}),
}))
vi.mock('@/components/ui/dropdown-menu', () => {
@ -54,11 +71,11 @@ vi.mock('@/components/ui/tooltip', () => {
}
})
import { setActiveSprintAction } from '@/actions/active-sprint'
import { switchActiveSprintAction } from '@/actions/active-sprint'
import { toast } from 'sonner'
import { SprintSwitcher } from '@/components/shared/sprint-switcher'
const actionMock = setActiveSprintAction as unknown as ReturnType<typeof vi.fn>
const actionMock = switchActiveSprintAction as unknown as ReturnType<typeof vi.fn>
const toastError = toast.error as unknown as ReturnType<typeof vi.fn>
const toastSuccess = toast.success as unknown as ReturnType<typeof vi.fn>