diff options
author | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-11-05 09:47:30 +0900 |
---|---|---|
committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2017-11-11 20:34:31 +0900 |
commit | 036ede3379285cbe678d79aad3b9442dca8b31e6 (patch) | |
tree | e97e4a8a1713c7540db0d3ff82ab0964104d3bad /test/content | |
parent | 4e94695c758215a950fe53911e1c1e30e47b9c98 (diff) |
support mutliple modifiers for key bindings
Diffstat (limited to 'test/content')
-rw-r--r-- | test/content/actions/setting.test.js | 23 | ||||
-rw-r--r-- | test/content/components/common/input.test.js | 41 | ||||
-rw-r--r-- | test/content/reducers/input.test.js | 12 | ||||
-rw-r--r-- | test/content/reducers/setting.test.js | 2 |
4 files changed, 34 insertions, 44 deletions
diff --git a/test/content/actions/setting.test.js b/test/content/actions/setting.test.js index 8855f04..0228fea 100644 --- a/test/content/actions/setting.test.js +++ b/test/content/actions/setting.test.js @@ -7,7 +7,28 @@ describe("setting actions", () => { it('create SETTING_SET action', () => { let action = settingActions.set({ red: 'apple', yellow: 'banana' }); expect(action.type).to.equal(actions.SETTING_SET); - expect(action.value).to.deep.equal({ red: 'apple', yellow: 'banana' }); + expect(action.value.red).to.equal('apple'); + expect(action.value.yellow).to.equal('banana'); + expect(action.value.keymaps).to.be.empty; + }); + + it('converts keymaps', () => { + let action = settingActions.set({ + keymaps: { + 'dd': 'remove current tab', + 'z<C-A>': 'increment', + } + }); + let keymaps = action.value.keymaps; + + expect(action.value.keymaps).to.have.deep.all.keys( + [ + [{ key: 'd', shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + { key: 'd', shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }], + [{ key: 'z', shiftKey: false, ctrlKey: false, altKey: false, metaKey: false }, + { key: 'a', shiftKey: false, ctrlKey: true, altKey: false, metaKey: false }], + ] + ); }); }); }); diff --git a/test/content/components/common/input.test.js b/test/content/components/common/input.test.js index 912ac34..a346cf6 100644 --- a/test/content/components/common/input.test.js +++ b/test/content/components/common/input.test.js @@ -4,20 +4,21 @@ import { expect } from "chai"; describe('InputComponent', () => { it('register callbacks', () => { let component = new InputComponent(window.document); + let key = { key: 'a', ctrlKey: true, shiftKey: false, altKey: false, metaKey: false }; component.onKey((key) => { - expect(key).is.equals('a'); + expect(key).to.deep.equal(key); }); - component.onKeyDown({ key: 'a' }); + component.onKeyDown(key); }); it('invoke callback once', () => { let component = new InputComponent(window.document); let a = 0, b = 0; component.onKey((key) => { - if (key == 'a') { + if (key.key == 'a') { ++a; } else { - key == 'b' + key.key == 'b' ++b; } }); @@ -32,38 +33,6 @@ describe('InputComponent', () => { expect(b).is.equals(1); }) - it('add prefix when ctrl pressed', () => { - let component = new InputComponent(window.document); - component.onKey((key) => { - expect(key).is.equals('<C-A>'); - }); - component.onKeyDown({ key: 'a', ctrlKey: true }); - }) - - it('press X', () => { - let component = new InputComponent(window.document); - component.onKey((key) => { - expect(key).is.equals('X'); - }); - component.onKeyDown({ key: 'X', shiftKey: true }); - }) - - it('press <Shift> + <Esc>', () => { - let component = new InputComponent(window.document); - component.onKey((key) => { - expect(key).is.equals('<S-Esc>'); - }); - component.onKeyDown({ key: 'Escape', shiftKey: true }); - }) - - it('press <Ctrl> + <Esc>', () => { - let component = new InputComponent(window.document); - component.onKey((key) => { - expect(key).is.equals('<C-Esc>'); - }); - component.onKeyDown({ key: 'Escape', ctrlKey: true }); - }) - it('does not invoke only meta keys', () => { let component = new InputComponent(window.document); component.onKey((key) => { diff --git a/test/content/reducers/input.test.js b/test/content/reducers/input.test.js index d5e5f6b..d0b5655 100644 --- a/test/content/reducers/input.test.js +++ b/test/content/reducers/input.test.js @@ -5,22 +5,22 @@ import inputReducer from 'content/reducers/input'; describe("input reducer", () => { it('return the initial state', () => { let state = inputReducer(undefined, {}); - expect(state).to.have.deep.property('keys', ''); + expect(state).to.have.deep.property('keys', []); }); it('return next state for INPUT_KEY_PRESS', () => { let action = { type: actions.INPUT_KEY_PRESS, key: 'a' }; let state = inputReducer(undefined, action); - expect(state).to.have.deep.property('keys', 'a'); + expect(state).to.have.deep.property('keys', ['a']); - action = { type: actions.INPUT_KEY_PRESS, key: '<C-B>' }; + action = { type: actions.INPUT_KEY_PRESS, key: 'b' }; state = inputReducer(state, action); - expect(state).to.have.deep.property('keys', 'a<C-B>'); + expect(state).to.have.deep.property('keys', ['a', 'b']); }); it('return next state for INPUT_CLEAR_KEYS', () => { let action = { type: actions.INPUT_CLEAR_KEYS }; - let state = inputReducer({ keys: 'abc' }, action); - expect(state).to.have.deep.property('keys', ''); + let state = inputReducer({ keys: [1, 2, 3] }, action); + expect(state).to.have.deep.property('keys', []); }); }); diff --git a/test/content/reducers/setting.test.js b/test/content/reducers/setting.test.js index ef49594..634b299 100644 --- a/test/content/reducers/setting.test.js +++ b/test/content/reducers/setting.test.js @@ -5,7 +5,7 @@ import settingReducer from 'content/reducers/setting'; describe("content setting reducer", () => { it('return the initial state', () => { let state = settingReducer(undefined, {}); - expect(state).to.deep.equal({ keymaps: {} }); + expect(state.keymaps).to.be.empty; }); it('return next state for SETTING_SET', () => { |