aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2017-09-09 22:50:00 +0900
committerShin'ya Ueoka <ueokande@i-beam.org>2017-09-09 22:50:00 +0900
commit7e35d11f659029febd738c83b19ab4b8a8b69642 (patch)
treeabab11e010280811311f9a4214325160009d4129
parente8056d2a709df9c9c182382fc7a31795e4dc1c0f (diff)
add console actions/reducer tests and fix targets
-rw-r--r--src/console/console.js4
-rw-r--r--src/reducers/console.js12
-rw-r--r--test/actions/console.test.js37
-rw-r--r--test/reducers/console.test.js43
4 files changed, 88 insertions, 8 deletions
diff --git a/src/console/console.js b/src/console/console.js
index 044aa5f..35d98e0 100644
--- a/src/console/console.js
+++ b/src/console/console.js
@@ -1,12 +1,12 @@
import './console.scss';
import Completion from './completion';
-import consoleReducer, { defaultState } from '../reducers/console';
+import consoleReducer from '../reducers/console';
// TODO consider object-oriented
var prevValue = "";
var completion = null;
var completionOrigin = "";
-let state = defaultState;
+let state = consoleReducer(undefined, {});
const blurMessage = () => {
return {
diff --git a/src/reducers/console.js b/src/reducers/console.js
index 62fc951..3303802 100644
--- a/src/reducers/console.js
+++ b/src/reducers/console.js
@@ -1,10 +1,10 @@
import actions from '../actions';
-export const defaultState = {
- errorText: '',
+const defaultState = {
errorShown: false,
- commandText: '',
+ errorText: '',
commandShown: false,
+ commandText: '',
completions: [],
};
@@ -14,7 +14,7 @@ export default function reducer(state = defaultState, action = {}) {
return Object.assign({}, state, {
commandShown: true,
commandText: action.text,
- errorShow: false,
+ errorShown: false,
completions: []
});
case actions.CONSOLE_SET_COMPLETIONS:
@@ -23,8 +23,8 @@ export default function reducer(state = defaultState, action = {}) {
});
case actions.CONSOLE_SHOW_ERROR:
return Object.assign({}, state, {
- errorText: action.message,
- errorShow: true,
+ errorText: action.text,
+ errorShown: true,
commandShown: false,
});
case actions.CONSOLE_HIDE:
diff --git a/test/actions/console.test.js b/test/actions/console.test.js
new file mode 100644
index 0000000..512ee40
--- /dev/null
+++ b/test/actions/console.test.js
@@ -0,0 +1,37 @@
+import { expect } from "chai";
+import actions from '../../src/actions';
+import * as consoleActions from '../../src/actions/console';
+
+describe("console actions", () => {
+ describe("showCommand", () => {
+ it('create CONSOLE_SHOW_COMMAND action', () => {
+ let action = consoleActions.showCommand('hello');
+ expect(action.type).to.equal(actions.CONSOLE_SHOW_COMMAND);
+ expect(action.text).to.equal('hello');
+ });
+ });
+
+ describe("setCompletions", () => {
+ it('create CONSOLE_SET_COMPLETIONS action', () => {
+ let action = consoleActions.setCompletions([1,2,3]);
+ expect(action.type).to.equal(actions.CONSOLE_SET_COMPLETIONS);
+ expect(action.completions).to.deep.equal([1, 2, 3]);
+ });
+ });
+
+ describe("showError", () => {
+ it('create CONSOLE_SHOW_ERROR action', () => {
+ let action = consoleActions.showError('an error');
+ expect(action.type).to.equal(actions.CONSOLE_SHOW_ERROR);
+ expect(action.text).to.equal('an error');
+ });
+ });
+
+ describe("hide", () => {
+ it('create CONSOLE_HIDE action', () => {
+ let action = consoleActions.hide();
+ expect(action.type).to.equal(actions.CONSOLE_HIDE);
+ });
+ });
+});
+
diff --git a/test/reducers/console.test.js b/test/reducers/console.test.js
new file mode 100644
index 0000000..9820a08
--- /dev/null
+++ b/test/reducers/console.test.js
@@ -0,0 +1,43 @@
+import { expect } from "chai";
+import actions from '../../src/actions';
+import consoleReducer from '../../src/reducers/console';
+
+describe("console reducer", () => {
+ it('return the initial state', () => {
+ let state = consoleReducer(undefined, {});
+ expect(state).to.have.property('errorShown', false);
+ expect(state).to.have.property('errorText', '');
+ expect(state).to.have.property('commandShown', false);
+ expect(state).to.have.property('commandText', '');
+ expect(state).to.have.deep.property('completions', []);
+ });
+
+ it('return next state for CONSOLE_SHOW_COMMAND', () => {
+ let action = { type: actions.CONSOLE_SHOW_COMMAND, text: 'open ' };
+ let state = consoleReducer({}, action);
+ expect(state).to.have.property('commandShown', true);
+ expect(state).to.have.property('commandText', 'open ');
+ expect(state).to.have.property('errorShown', false);
+ });
+
+ it('return next state for CONSOLE_SET_COMPLETIONS', () => {
+ let action = { type: actions.CONSOLE_SET_COMPLETIONS, completions: [1, 2, 3] };
+ let state = consoleReducer({}, action);
+ expect(state).to.have.deep.property('completions', [1, 2, 3]);
+ });
+
+ it('return next state for CONSOLE_SHOW_ERROR', () => {
+ let action = { type: actions.CONSOLE_SHOW_ERROR, text: 'an error' };
+ let state = consoleReducer({}, action);
+ expect(state).to.have.property('errorShown', true);
+ expect(state).to.have.property('errorText', 'an error');
+ expect(state).to.have.property('commandShown', false);
+ });
+
+ it('return next state for CONSOLE_HIDE', () => {
+ let action = { type: actions.CONSOLE_HIDE };
+ let state = consoleReducer({}, action);
+ expect(state).to.have.property('errorShown', false);
+ expect(state).to.have.property('commandShown', false);
+ });
+});