import { describe, it, expect } from 'vitest'; import { MISSION_WIZARD_STEPS, MISSION_OPERATION_CHIPS, canAdvanceWizardStep, missionChipForMode, nextWizardStep, operationModeForChip, prevWizardStep, wizardPillStatus, wizardStepIndex, } from './forgeMissionWizard'; describe('forgeMissionWizard', () => { it('defines three ritual wizard steps', () => { expect(MISSION_WIZARD_STEPS).toEqual(['mode', 'profile', 'launch']); expect(MISSION_OPERATION_CHIPS.map((c) => c.label)).toEqual(['Ghost', 'Loud', 'Spread', 'AV-Safe']); }); it('maps operation chips to forge modes', () => { expect(operationModeForChip('ghost')).toBe('ghost_walk'); expect(operationModeForChip('loud')).toBe('open_flame'); expect(operationModeForChip('spread')).toBe('wildfire'); expect(operationModeForChip('avsafe')).toBe('av_safe'); }); it('reverse-maps operation modes to wizard chips', () => { expect(missionChipForMode('ghost_walk')).toBe('ghost'); expect(missionChipForMode('sigil_mask')).toBe('ghost'); expect(missionChipForMode('open_flame')).toBe('loud'); expect(missionChipForMode('wildfire')).toBe('spread'); expect(missionChipForMode('crucible_storm')).toBe('spread'); expect(missionChipForMode('av_safe')).toBe('avsafe'); }); it('navigates wizard steps forward and back', () => { expect(nextWizardStep('mode')).toBe('profile'); expect(nextWizardStep('profile')).toBe('launch'); expect(nextWizardStep('launch')).toBeNull(); expect(prevWizardStep('launch')).toBe('profile'); expect(prevWizardStep('profile')).toBe('mode'); expect(prevWizardStep('mode')).toBeNull(); }); it('allows advancing from mode and profile steps', () => { expect(canAdvanceWizardStep('mode', 'ghost', '')).toBe(true); expect(canAdvanceWizardStep('profile', 'spread', '')).toBe(true); expect(canAdvanceWizardStep('profile', 'spread', 'lan_kindling')).toBe(true); expect(canAdvanceWizardStep('launch', 'ghost', '')).toBe(false); }); it('tracks wizard pill status for step pills', () => { expect(wizardPillStatus('mode', 'mode')).toBe('active'); expect(wizardPillStatus('mode', 'profile')).toBe('done'); expect(wizardPillStatus('profile', 'mode')).toBe('pending'); expect(wizardPillStatus('launch', 'launch')).toBe('active'); expect(wizardStepIndex('launch')).toBe(2); }); });