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:
parent
db37b66d17
commit
cc75934d56
1 changed files with 21 additions and 4 deletions
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue