import { describe, expect, it } from 'vitest' import { GOALS } from '@/data/goals' import { goalStepTargetPath } from '../goalStepActions' import type { GoalStep } from '@/types/goals' describe('goalStepActions', () => { it('routes app-backed steps to their app details page', () => { expect(goalStepTargetPath(step({ id: 'configure-filebrowser', appId: 'filebrowser' }))).toBe('/dashboard/apps/filebrowser') }) it('routes built-in identity and backup steps to their owning screens', () => { expect(goalStepTargetPath(step({ id: 'setup-nostr' }))).toBe('/dashboard/web5') expect(goalStepTargetPath(step({ id: 'export-identity' }))).toBe('/dashboard/web5/credentials') expect(goalStepTargetPath(step({ id: 'create-passphrase' }))).toBe('/dashboard/settings') }) it('keeps passive info steps without a target route', () => { expect(goalStepTargetPath(step({ id: 'sync-setup' }))).toBeNull() }) it('gives every configure step in the shipped goals a destination', () => { const configureSteps = GOALS.flatMap((goal) => goal.steps.filter((candidate) => candidate.action === 'configure')) expect(configureSteps.map((candidate) => [candidate.id, goalStepTargetPath(candidate)])).toEqual( configureSteps.map((candidate) => [candidate.id, expect.any(String)]), ) }) }) function step(overrides: Partial): GoalStep { return { id: 'step', title: 'Step', description: '', action: 'configure', isAutomatic: false, ...overrides, } }