/
voting
/
frontend
Обзор
Документация
Войти
/
voting
/
frontend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
test/userFlowStore.test.ts
73 строки
2 KB
TimPulin
039-update-sse-unified-payload
19 июл 2026, 15:39
19 июл 2026, 15:39
ce4a214
Код
Авторство
О чём код?
import { beforeEach, describe, expect, it } from 'vitest' import { useUserFlowStore } from '../src/stores/userFlowStore' import type { UserFlowSnapshot } from '../src/types/user-flow' function makeSnapshot( currentScreenType: string, nomination: UserFlowSnapshot['nomination'] = { id: 'nom-1', name: 'Best', status: 'OPEN', position: 1, nominees: [] } ): UserFlowSnapshot { return { event: { id: 'evt-1', name: 'Event', currentScreenType }, nomination } } describe('useUserFlowStore', () => { beforeEach(() => { useUserFlowStore.getState().reset() }) it('applyHydratedSnapshot sets currentScreen from event.currentScreenType', () => { useUserFlowStore.getState().applyHydratedSnapshot(makeSnapshot('NOMINATION')) expect(useUserFlowStore.getState().currentScreen).toBe('nomination') expect(useUserFlowStore.getState().snapshot?.event.id).toBe('evt-1') expect(useUserFlowStore.getState().hydrateError).toBeNull() useUserFlowStore .getState() .applyHydratedSnapshot(makeSnapshot('NOMINATION_RESULT', null)) expect(useUserFlowStore.getState().currentScreen).toBe('nominationResult') expect(useUserFlowStore.getState().resultScreenType).toBe('NOMINATION_RESULT') useUserFlowStore .getState() .applyHydratedSnapshot(makeSnapshot('FINAL_RESULT', null)) expect(useUserFlowStore.getState().currentScreen).toBe('finalResult') expect(useUserFlowStore.getState().resultScreenType).toBe('FINAL_RESULT') }) it('reset returns initial state', () => { useUserFlowStore.getState().setEventId('evt-1') useUserFlowStore.getState().setCurrentScreen('nomination') useUserFlowStore.getState().setIsHydrating(true) useUserFlowStore.getState().reset() expect(useUserFlowStore.getState()).toMatchObject({ eventId: null, currentScreen: null, snapshot: null, resultScreenType: null, isHydrating: false, hydrateError: null }) }) it('setCurrentScreen does not touch snapshot', () => { const snapshot = makeSnapshot('NOMINATION') useUserFlowStore.getState().setSnapshot(snapshot) useUserFlowStore.getState().setCurrentScreen('finalResult') expect(useUserFlowStore.getState().currentScreen).toBe('finalResult') expect(useUserFlowStore.getState().snapshot).toEqual(snapshot) }) })