feat: alive UI wave, galaxy presence, spread and fleet enhancements
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Dashboard ambient layer, comrade presence, Mission Deck and War Room, Emberwake supply chain, spread/docs publishing, fleet policy and modules API, CI docker mining, and refreshed USB pack.
This commit is contained in:
57
server/web/src/help/forgeMissionWizard.test.ts
Normal file
57
server/web/src/help/forgeMissionWizard.test.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
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']);
|
||||
});
|
||||
|
||||
it('maps operation chips to forge modes', () => {
|
||||
expect(operationModeForChip('ghost')).toBe('ghost_walk');
|
||||
expect(operationModeForChip('loud')).toBe('open_flame');
|
||||
expect(operationModeForChip('spread')).toBe('wildfire');
|
||||
});
|
||||
|
||||
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');
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user