diff options
Diffstat (limited to 'test/console/reducers/console.test.ts')
-rw-r--r-- | test/console/reducers/console.test.ts | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/test/console/reducers/console.test.ts b/test/console/reducers/console.test.ts new file mode 100644 index 0000000..47e7daf --- /dev/null +++ b/test/console/reducers/console.test.ts @@ -0,0 +1,131 @@ +import * as actions from 'console/actions'; +import reducer from 'console/reducers'; + +describe("console reducer", () => { + it('return the initial state', () => { + let state = reducer(undefined, {}); + expect(state).to.have.property('mode', ''); + expect(state).to.have.property('messageText', ''); + expect(state).to.have.property('consoleText', ''); + expect(state).to.have.deep.property('completions', []); + expect(state).to.have.property('select', -1); + }); + + it('return next state for CONSOLE_HIDE', () => { + let action = { type: actions.CONSOLE_HIDE }; + let state = reducer({ mode: 'error' }, action); + expect(state).to.have.property('mode', ''); + }) + + it('return next state for CONSOLE_SHOW_COMMAND', () => { + let action = { type: actions.CONSOLE_SHOW_COMMAND, text: 'open ' }; + let state = reducer({}, action); + expect(state).to.have.property('mode', 'command'); + expect(state).to.have.property('consoleText', 'open '); + }); + + it('return next state for CONSOLE_SHOW_INFO', () => { + let action = { type: actions.CONSOLE_SHOW_INFO, text: 'an info' }; + let state = reducer({}, action); + expect(state).to.have.property('mode', 'info'); + expect(state).to.have.property('messageText', 'an info'); + }); + + it('return next state for CONSOLE_SHOW_ERROR', () => { + let action = { type: actions.CONSOLE_SHOW_ERROR, text: 'an error' }; + let state = reducer({}, action); + expect(state).to.have.property('mode', 'error'); + expect(state).to.have.property('messageText', 'an error'); + }); + + it('return next state for CONSOLE_HIDE_COMMAND', () => { + let action = { type: actions.CONSOLE_HIDE_COMMAND }; + let state = reducer({ mode: 'command' }, action); + expect(state).to.have.property('mode', ''); + + state = reducer({ mode: 'error' }, action); + expect(state).to.have.property('mode', 'error'); + }); + + it('return next state for CONSOLE_SET_CONSOLE_TEXT', () => { + let action = { + type: actions.CONSOLE_SET_CONSOLE_TEXT, + consoleText: 'hello world' + } + let state = reducer({}, action) + + expect(state).to.have.property('consoleText', 'hello world'); + }); + + it ('return next state for CONSOLE_SET_COMPLETIONS', () => { + let state = { + select: 0, + completions: [], + } + let action = { + type: actions.CONSOLE_SET_COMPLETIONS, + completions: [{ + name: 'Apple', + items: [1, 2, 3] + }, { + name: 'Banana', + items: [4, 5, 6] + }] + } + state = reducer(state, action); + expect(state).to.have.property('completions', action.completions); + expect(state).to.have.property('select', -1); + }); + + it ('return next state for CONSOLE_COMPLETION_NEXT', () => { + let action = { type: actions.CONSOLE_COMPLETION_NEXT }; + let state = { + select: -1, + completions: [{ + name: 'Apple', + items: [1, 2] + }, { + name: 'Banana', + items: [3] + }] + }; + + state = reducer(state, action); + expect(state).to.have.property('select', 0); + + state = reducer(state, action); + expect(state).to.have.property('select', 1); + + state = reducer(state, action); + expect(state).to.have.property('select', 2); + + state = reducer(state, action); + expect(state).to.have.property('select', -1); + }); + + it ('return next state for CONSOLE_COMPLETION_PREV', () => { + let action = { type: actions.CONSOLE_COMPLETION_PREV }; + let state = { + select: -1, + completions: [{ + name: 'Apple', + items: [1, 2] + }, { + name: 'Banana', + items: [3] + }] + }; + + state = reducer(state, action); + expect(state).to.have.property('select', 2); + + state = reducer(state, action); + expect(state).to.have.property('select', 1); + + state = reducer(state, action); + expect(state).to.have.property('select', 0); + + state = reducer(state, action); + expect(state).to.have.property('select', -1); + }); +}); |