add addon actions
This commit is contained in:
parent
cd6f7e7788
commit
59f7ef205d
5 changed files with 107 additions and 0 deletions
15
src/content/actions/addon.js
Normal file
15
src/content/actions/addon.js
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import actions from 'content/actions';
|
||||||
|
|
||||||
|
const enable = () => {
|
||||||
|
return { type: actions.ADDON_ENABLE };
|
||||||
|
};
|
||||||
|
|
||||||
|
const disable = () => {
|
||||||
|
return { type: actions.ADDON_DISABLE };
|
||||||
|
};
|
||||||
|
|
||||||
|
const toggleEnabled = () => {
|
||||||
|
return { type: actions.ADDON_TOGGLE_ENABLED };
|
||||||
|
};
|
||||||
|
|
||||||
|
export { enable, disable, toggleEnabled };
|
|
@ -1,5 +1,9 @@
|
||||||
export default {
|
export default {
|
||||||
// User input
|
// User input
|
||||||
|
ADDON_ENABLE: 'addon.enable',
|
||||||
|
ADDON_DISABLE: 'addon.disable',
|
||||||
|
ADDON_TOGGLE_ENABLED: 'addon.toggle.enabled',
|
||||||
|
|
||||||
INPUT_KEY_PRESS: 'input.key,press',
|
INPUT_KEY_PRESS: 'input.key,press',
|
||||||
INPUT_CLEAR_KEYS: 'input.clear.keys',
|
INPUT_CLEAR_KEYS: 'input.clear.keys',
|
||||||
INPUT_SET_KEYMAPS: 'input.set.keymaps',
|
INPUT_SET_KEYMAPS: 'input.set.keymaps',
|
||||||
|
|
24
src/content/reducers/addon.js
Normal file
24
src/content/reducers/addon.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import actions from 'content/actions';
|
||||||
|
|
||||||
|
const defaultState = {
|
||||||
|
enabled: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function reducer(state = defaultState, action = {}) {
|
||||||
|
switch (action.type) {
|
||||||
|
case actions.ADDON_ENABLE:
|
||||||
|
return Object.assign({}, state, {
|
||||||
|
enabled: true,
|
||||||
|
});
|
||||||
|
case actions.ADDON_DISABLE:
|
||||||
|
return Object.assign({}, state, {
|
||||||
|
enabled: false,
|
||||||
|
});
|
||||||
|
case actions.ADDON_TOGGLE_ENABLED:
|
||||||
|
return Object.assign({}, state, {
|
||||||
|
enabled: !state.enabled,
|
||||||
|
});
|
||||||
|
default:
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
}
|
26
test/content/actions/addon.test.js
Normal file
26
test/content/actions/addon.test.js
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { expect } from "chai";
|
||||||
|
import actions from 'content/actions';
|
||||||
|
import * as addonActions from 'content/actions/addon';
|
||||||
|
|
||||||
|
describe("addon actions", () => {
|
||||||
|
describe("enable", () => {
|
||||||
|
it('create ADDON_ENABLE action', () => {
|
||||||
|
let action = addonActions.enable();
|
||||||
|
expect(action.type).to.equal(actions.ADDON_ENABLE);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("disable", () => {
|
||||||
|
it('create ADDON_DISABLE action', () => {
|
||||||
|
let action = addonActions.disable();
|
||||||
|
expect(action.type).to.equal(actions.ADDON_DISABLE);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("toggle", () => {
|
||||||
|
it('create ADDON_TOGGLE_ENABLED action', () => {
|
||||||
|
let action = addonActions.toggleEnabled();
|
||||||
|
expect(action.type).to.equal(actions.ADDON_TOGGLE_ENABLED);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
38
test/content/reducers/addon.test.js
Normal file
38
test/content/reducers/addon.test.js
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import { expect } from "chai";
|
||||||
|
import actions from 'content/actions';
|
||||||
|
import addonReducer from 'content/reducers/addon';
|
||||||
|
|
||||||
|
describe("addon reducer", () => {
|
||||||
|
it('return the initial state', () => {
|
||||||
|
let state = addonReducer(undefined, {});
|
||||||
|
expect(state).to.have.property('enabled', true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('return next state for ADDON_ENABLE', () => {
|
||||||
|
let action = { type: actions.ADDON_ENABLE};
|
||||||
|
let prev = { enabled: false };
|
||||||
|
let state = addonReducer(prev, action);
|
||||||
|
|
||||||
|
expect(state.enabled).is.equal(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('return next state for ADDON_DISABLE', () => {
|
||||||
|
let action = { type: actions.ADDON_DISABLE};
|
||||||
|
let prev = { enabled: true };
|
||||||
|
let state = addonReducer(prev, action);
|
||||||
|
|
||||||
|
expect(state.enabled).is.equal(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('return next state for ADDON_TOGGLE_ENABLED', () => {
|
||||||
|
let action = { type: actions.ADDON_TOGGLE_ENABLED };
|
||||||
|
let state = { enabled: false };
|
||||||
|
|
||||||
|
state = addonReducer(state, action);
|
||||||
|
expect(state.enabled).is.equal(true);
|
||||||
|
|
||||||
|
state = addonReducer(state, action);
|
||||||
|
expect(state.enabled).is.equal(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Reference in a new issue