From bf283c732ef9424d365ca1b09ce8b174f61c336c Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Thu, 11 Oct 2018 15:00:50 +0900 Subject: Add mark action and reducer --- test/content/reducers/mark.test.js | 39 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/content/reducers/mark.test.js (limited to 'test/content/reducers') diff --git a/test/content/reducers/mark.test.js b/test/content/reducers/mark.test.js new file mode 100644 index 0000000..39c04cd --- /dev/null +++ b/test/content/reducers/mark.test.js @@ -0,0 +1,39 @@ +import actions from 'content/actions'; +import reducer from 'content/reducers/mark'; + +describe("mark reducer", () => { + it('return the initial state', () => { + let state = reducer(undefined, {}); + expect(state.set).to.be.false; + expect(state.jump).to.be.false; + expect(state.marks).to.be.empty; + }); + + it('starts set mode', () => { + let action = { type: actions.MARK_START_SET }; + let state = reducer(undefined, action); + expect(state.set).to.be.true; + }); + + it('starts jump mode', () => { + let action = { type: actions.MARK_START_JUMP }; + let state = reducer(undefined, action); + expect(state.jump).to.be.true; + }); + + it('cancels set and jump mode', () => { + let action = { type: actions.MARK_CANCEL }; + let state = reducer({ set: true }, action); + expect(state.set).to.be.false; + + state = reducer({ jump: true }, action); + expect(state.jump).to.be.false; + }); + + it('stores local mark', () => { + let action = { type: actions.MARK_SET_LOCAL, key: 'a', y: 10 }; + let state = reducer(undefined, action); + expect(state.marks['a']).to.be.an('object') + expect(state.marks['a'].y).to.equal(10) + }); +}); -- cgit v1.2.3 From 2055dfb2fb0f3fa86d359984583789db155903a1 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Thu, 11 Oct 2018 15:35:28 +0900 Subject: Rename mode acton and reducer --- src/content/actions/operation.js | 5 +++++ src/content/reducers/mark.js | 10 +++++----- test/content/reducers/mark.test.js | 16 ++++++++-------- 3 files changed, 18 insertions(+), 13 deletions(-) (limited to 'test/content/reducers') diff --git a/src/content/actions/operation.js b/src/content/actions/operation.js index 89d7fec..94aa356 100644 --- a/src/content/actions/operation.js +++ b/src/content/actions/operation.js @@ -6,6 +6,7 @@ import * as focuses from 'content/focuses'; import * as urls from 'content/urls'; import * as consoleFrames from 'content/console-frames'; import * as addonActions from './addon'; +import * as markActions from './mark'; import * as properties from 'shared/settings/properties'; // eslint-disable-next-line complexity, max-lines-per-function @@ -57,6 +58,10 @@ const exec = (operation, repeat, settings, addonEnabled) => { background: operation.background, }), '*'); break; + case operations.MARK_SET_PREFIX: + return markActions.startSet(); + case operations.MARK_JUMP_PREFIX: + return markActions.startJump(); case operations.NAVIGATE_HISTORY_PREV: navigates.historyPrev(window); break; diff --git a/src/content/reducers/mark.js b/src/content/reducers/mark.js index b6a071f..700c03f 100644 --- a/src/content/reducers/mark.js +++ b/src/content/reducers/mark.js @@ -1,19 +1,19 @@ import actions from 'content/actions'; const defaultState = { - set: false, - jump: false, + setMode: false, + jumpMode: false, marks: {}, }; export default function reducer(state = defaultState, action = {}) { switch (action.type) { case actions.MARK_START_SET: - return { ...state, set: true }; + return { ...state, setMode: true }; case actions.MARK_START_JUMP: - return { ...state, jump: true }; + return { ...state, jumpMode: true }; case actions.MARK_CANCEL: - return { ...state, set: false, jump: false }; + return { ...state, setMode: false, jumpMode: false }; case actions.MARK_SET_LOCAL: { let marks = { ...state.marks }; marks[action.key] = { y: action.y }; diff --git a/test/content/reducers/mark.test.js b/test/content/reducers/mark.test.js index 39c04cd..6358bf1 100644 --- a/test/content/reducers/mark.test.js +++ b/test/content/reducers/mark.test.js @@ -4,30 +4,30 @@ import reducer from 'content/reducers/mark'; describe("mark reducer", () => { it('return the initial state', () => { let state = reducer(undefined, {}); - expect(state.set).to.be.false; - expect(state.jump).to.be.false; + expect(state.setMode).to.be.false; + expect(state.jumpMode).to.be.false; expect(state.marks).to.be.empty; }); it('starts set mode', () => { let action = { type: actions.MARK_START_SET }; let state = reducer(undefined, action); - expect(state.set).to.be.true; + expect(state.setMode).to.be.true; }); it('starts jump mode', () => { let action = { type: actions.MARK_START_JUMP }; let state = reducer(undefined, action); - expect(state.jump).to.be.true; + expect(state.jumpMode).to.be.true; }); it('cancels set and jump mode', () => { let action = { type: actions.MARK_CANCEL }; - let state = reducer({ set: true }, action); - expect(state.set).to.be.false; + let state = reducer({ setMode: true }, action); + expect(state.setMode).to.be.false; - state = reducer({ jump: true }, action); - expect(state.jump).to.be.false; + state = reducer({ jumpMode: true }, action); + expect(state.jumpMode).to.be.false; }); it('stores local mark', () => { -- cgit v1.2.3 From f66e75575dd26b7f60e70c9856d8cd56770f74e7 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Thu, 11 Oct 2018 17:20:02 +0900 Subject: Store x position into marks --- src/content/actions/mark.js | 3 ++- src/content/reducers/mark.js | 2 +- test/content/actions/mark.test.js | 3 ++- test/content/reducers/mark.test.js | 8 +++++--- 4 files changed, 10 insertions(+), 6 deletions(-) (limited to 'test/content/reducers') diff --git a/src/content/actions/mark.js b/src/content/actions/mark.js index baf5825..1f5174e 100644 --- a/src/content/actions/mark.js +++ b/src/content/actions/mark.js @@ -12,10 +12,11 @@ const cancel = () => { return { type: actions.MARK_CANCEL }; }; -const setLocal = (key, y) => { +const setLocal = (key, x, y) => { return { type: actions.MARK_SET_LOCAL, key, + x, y, }; }; diff --git a/src/content/reducers/mark.js b/src/content/reducers/mark.js index b6137f3..2c96cc5 100644 --- a/src/content/reducers/mark.js +++ b/src/content/reducers/mark.js @@ -16,7 +16,7 @@ export default function reducer(state = defaultState, action = {}) { return { ...state, setMode: false, jumpMode: false }; case actions.MARK_SET_LOCAL: { let marks = { ...state.marks }; - marks[action.key] = { y: action.y }; + marks[action.key] = { x: action.x, y: action.y }; return { ...state, setMode: false, marks }; } default: diff --git a/test/content/actions/mark.test.js b/test/content/actions/mark.test.js index 47d31cd..adbf06b 100644 --- a/test/content/actions/mark.test.js +++ b/test/content/actions/mark.test.js @@ -25,9 +25,10 @@ describe('mark actions', () => { describe('setLocal', () => { it('create setLocal action', () => { - let action = markActions.setLocal('a', 30); + let action = markActions.setLocal('a', 20, 30); expect(action.type).to.equal(actions.MARK_SET_LOCAL); expect(action.key).to.equal('a'); + expect(action.x).to.equal(20); expect(action.y).to.equal(30); }); }); diff --git a/test/content/reducers/mark.test.js b/test/content/reducers/mark.test.js index 6358bf1..76efbf7 100644 --- a/test/content/reducers/mark.test.js +++ b/test/content/reducers/mark.test.js @@ -31,9 +31,11 @@ describe("mark reducer", () => { }); it('stores local mark', () => { - let action = { type: actions.MARK_SET_LOCAL, key: 'a', y: 10 }; - let state = reducer(undefined, action); + let action = { type: actions.MARK_SET_LOCAL, key: 'a', x: 20, y: 30}; + let state = reducer({ setMode: true }, action); + expect(state.setMode).to.be.false; expect(state.marks['a']).to.be.an('object') - expect(state.marks['a'].y).to.equal(10) + expect(state.marks['a'].x).to.equal(20) + expect(state.marks['a'].y).to.equal(30) }); }); -- cgit v1.2.3