node-state-machine
Version:
State machine for NodeJS.
80 lines (66 loc) • 2.86 kB
JavaScript
import chai from 'chai';
import { Transition } from '../dist/model/Transition';
let expect = chai.expect;
describe('Transition Tests', () => {
it('should have correct checker', () => {
let transition = new Transition(v => v == 'a', 'A');
expect(transition.fires('a')).to.equal(true);
expect(transition.fires('b')).to.equal(false);
expect(transition.fires('')).to.equal(false);
expect(transition.fires(false)).to.equal(false);
expect(transition.fires(5)).to.equal(false);
});
it('should have correct destination', () => {
let transition = new Transition(v => v == 'a', 'A');
expect(transition.destination()).to.equal('A');
});
it('should have correct amount of middlewares', () => {
let transition = new Transition(v => v == 'a', 'A', [
v => { console.log(v); },
v => { console.log('middleware'); },
]);
expect(transition.hasMiddlewares()).to.equal(true);
expect(transition.middlewares().length).to.equal(2);
});
it('should have no implicit middlewares', () => {
let transition = new Transition(v => v == 'a', 'A');
expect(transition.hasMiddlewares()).to.equal(false);
expect(transition.middlewares().length).to.equal(0);
});
it('should have no explicit middlewares', () => {
let transition = new Transition(v => v == 'a', 'A', []);
expect(transition.hasMiddlewares()).to.equal(false);
expect(transition.middlewares().length).to.equal(0);
});
it('should work with int destinations', () => {
let transition = new Transition(v => v == 'a', 5);
expect(transition.destination()).to.equal(5);
expect(transition.destination()).to.not.equal('5');
});
it('should work with double destinations', () => {
let transition = new Transition(v => v == 'a', 5.5);
expect(transition.destination()).to.equal(5.5);
expect(transition.destination()).to.not.equal('5.5');
});
it('should work with boolean destinations', () => {
let transition = new Transition(v => v == 'a', true);
expect(transition.destination()).to.equal(true);
expect(transition.destination()).to.not.equal(false);
});
it('should work with int checker', () => {
let transition = new Transition(v => v == 5, 5);
expect(transition.fires('a')).to.equal(false);
expect(transition.fires('b')).to.equal(false);
expect(transition.fires('')).to.equal(false);
expect(transition.fires(false)).to.equal(false);
expect(transition.fires(5)).to.equal(true);
});
it('should work with boolean checker', () => {
let transition = new Transition(v => v == true, true);
expect(transition.fires('a')).to.equal(false);
expect(transition.fires('b')).to.equal(false);
expect(transition.fires('')).to.equal(false);
expect(transition.fires(5)).to.equal(false);
expect(transition.fires(true)).to.equal(true);
});
});