Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { assert } from 'chai'; import { Machine } from '../src/index'; import { after, cancel, send } from '../src/actions'; const lightMachine = Machine({ id: 'light', initial: 'green', context: { canTurnGreen: true }, states: { green: { after: { 1000: 'yellow' } }, yellow: { after: { 1000: [{ target: 'red' }] } }, red: { after: [{ delay: 1000, target: 'green' }] } } }); describe('delayed transitions', () => { it('should resolve transitions', () => { assert.deepEqual(lightMachine.states.green.after, [ { target: 'yellow', delay: 1000, event: after(1000, 'light.green'), actions: [] } ]); assert.deepEqual(lightMachine.states.yellow.after, [ { target: 'red', delay: 1000, event: after(1000, 'light.yellow'), actions: [] } ]); assert.deepEqual(lightMachine.states.red.after, [ { target: 'green', delay: 1000, event: after(1000, 'light.red'), actions: [] } ]); }); it('should transition after delay', () => { const nextState = lightMachine.transition( lightMachine.initialState, after(1000, 'light.green') ); assert.deepEqual(nextState.value, 'yellow'); assert.deepEqual(nextState.actions, [ cancel(after(1000, 'light.green')), send(after(1000, 'light.yellow'), { delay: 1000 }) ]); }); }); |