Module
Actor-based state management & orchestration for complex app logic.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165import { createActor, createMachine } from '../src/index.ts';
describe('Initial states', () => { it('should return the correct initial state', () => { const machine = createMachine({ initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } }); expect(createActor(machine).getSnapshot().value).toEqual({ a: { b: 'c' } }); });
it('should return the correct initial state (parallel)', () => { const machine = createMachine({ type: 'parallel', states: { foo: { initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } }, bar: { initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } } } }); expect(createActor(machine).getSnapshot().value).toEqual({ foo: { a: { b: 'c' } }, bar: { a: { b: 'c' } } }); });
it('should return the correct initial state (deep parallel)', () => { const machine = createMachine({ initial: 'one', states: { one: { type: 'parallel', states: { foo: { initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } }, bar: { initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } } } }, two: { type: 'parallel', states: { foo: { initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } }, bar: { initial: 'a', states: { a: { initial: 'b', states: { b: { initial: 'c', states: { c: {} } } } }, leaf: {} } } } } } }); expect(createActor(machine).getSnapshot().value).toEqual({ one: { foo: { a: { b: 'c' } }, bar: { a: { b: 'c' } } } }); });});