commit
9f1a18352f
22 changed files with 234 additions and 173 deletions
@ -1,16 +1,3 @@ |
|||||||
import CommonComponent from './common'; |
import CommonComponent from './common'; |
||||||
|
|
||||||
export default class FrameContent { |
export default CommonComponent; |
||||||
|
|
||||||
constructor(win, store) { |
|
||||||
this.children = [new CommonComponent(win, store)]; |
|
||||||
} |
|
||||||
|
|
||||||
update() { |
|
||||||
this.children.forEach(c => c.update()); |
|
||||||
} |
|
||||||
|
|
||||||
onMessage(message, sender) { |
|
||||||
this.children.forEach(c => c.onMessage(message, sender)); |
|
||||||
} |
|
||||||
} |
|
||||||
|
@ -0,0 +1,35 @@ |
|||||||
|
import { expect } from "chai"; |
||||||
|
import actions from 'content/actions'; |
||||||
|
import * as followControllerActions from 'content/actions/follow-controller'; |
||||||
|
|
||||||
|
describe('follow-controller actions', () => { |
||||||
|
describe('enable', () => { |
||||||
|
it('creates FOLLOW_CONTROLLER_ENABLE action', () => { |
||||||
|
let action = followControllerActions.enable(true); |
||||||
|
expect(action.type).to.equal(actions.FOLLOW_CONTROLLER_ENABLE); |
||||||
|
expect(action.newTab).to.equal(true); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
describe('disable', () => { |
||||||
|
it('creates FOLLOW_CONTROLLER_DISABLE action', () => { |
||||||
|
let action = followControllerActions.disable(true); |
||||||
|
expect(action.type).to.equal(actions.FOLLOW_CONTROLLER_DISABLE); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
describe('keyPress', () => { |
||||||
|
it('creates FOLLOW_CONTROLLER_KEY_PRESS action', () => { |
||||||
|
let action = followControllerActions.keyPress(100); |
||||||
|
expect(action.type).to.equal(actions.FOLLOW_CONTROLLER_KEY_PRESS); |
||||||
|
expect(action.key).to.equal(100); |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
describe('backspace', () => { |
||||||
|
it('creates FOLLOW_CONTROLLER_BACKSPACE action', () => { |
||||||
|
let action = followControllerActions.backspace(100); |
||||||
|
expect(action.type).to.equal(actions.FOLLOW_CONTROLLER_BACKSPACE); |
||||||
|
}); |
||||||
|
}); |
||||||
|
}); |
@ -1,35 +0,0 @@ |
|||||||
import { expect } from "chai"; |
|
||||||
import actions from 'content/actions'; |
|
||||||
import * as followActions from 'content/actions/follow'; |
|
||||||
|
|
||||||
describe('follow actions', () => { |
|
||||||
describe('enable', () => { |
|
||||||
it('creates FOLLOW_ENABLE action', () => { |
|
||||||
let action = followActions.enable(true); |
|
||||||
expect(action.type).to.equal(actions.FOLLOW_ENABLE); |
|
||||||
expect(action.newTab).to.equal(true); |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
describe('disable', () => { |
|
||||||
it('creates FOLLOW_DISABLE action', () => { |
|
||||||
let action = followActions.disable(true); |
|
||||||
expect(action.type).to.equal(actions.FOLLOW_DISABLE); |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
describe('keyPress', () => { |
|
||||||
it('creates FOLLOW_KEY_PRESS action', () => { |
|
||||||
let action = followActions.keyPress(100); |
|
||||||
expect(action.type).to.equal(actions.FOLLOW_KEY_PRESS); |
|
||||||
expect(action.key).to.equal(100); |
|
||||||
}); |
|
||||||
}); |
|
||||||
|
|
||||||
describe('backspace', () => { |
|
||||||
it('creates FOLLOW_BACKSPACE action', () => { |
|
||||||
let action = followActions.backspace(100); |
|
||||||
expect(action.type).to.equal(actions.FOLLOW_BACKSPACE); |
|
||||||
}); |
|
||||||
}); |
|
||||||
}); |
|
@ -0,0 +1,48 @@ |
|||||||
|
import { expect } from "chai"; |
||||||
|
import actions from 'content/actions'; |
||||||
|
import followControllerReducer from 'content/reducers/follow-controller'; |
||||||
|
|
||||||
|
describe('follow-controller reducer', () => { |
||||||
|
it ('returns the initial state', () => { |
||||||
|
let state = followControllerReducer(undefined, {}); |
||||||
|
expect(state).to.have.property('enabled', false); |
||||||
|
expect(state).to.have.property('newTab'); |
||||||
|
expect(state).to.have.deep.property('keys', ''); |
||||||
|
}); |
||||||
|
|
||||||
|
it ('returns next state for FOLLOW_CONTROLLER_ENABLE', () => { |
||||||
|
let action = { type: actions.FOLLOW_CONTROLLER_ENABLE, newTab: true }; |
||||||
|
let state = followControllerReducer({ enabled: false, newTab: false }, action); |
||||||
|
expect(state).to.have.property('enabled', true); |
||||||
|
expect(state).to.have.property('newTab', true); |
||||||
|
expect(state).to.have.property('keys', ''); |
||||||
|
}); |
||||||
|
|
||||||
|
it ('returns next state for FOLLOW_CONTROLLER_DISABLE', () => { |
||||||
|
let action = { type: actions.FOLLOW_CONTROLLER_DISABLE }; |
||||||
|
let state = followControllerReducer({ enabled: true }, action); |
||||||
|
expect(state).to.have.property('enabled', false); |
||||||
|
}); |
||||||
|
|
||||||
|
it ('returns next state for FOLLOW_CONTROLLER_KEY_PRESS', () => { |
||||||
|
let action = { type: actions.FOLLOW_CONTROLLER_KEY_PRESS, key: 'a'}; |
||||||
|
let state = followControllerReducer({ keys: '' }, action); |
||||||
|
expect(state).to.have.deep.property('keys', 'a'); |
||||||
|
|
||||||
|
action = { type: actions.FOLLOW_CONTROLLER_KEY_PRESS, key: 'b'}; |
||||||
|
state = followControllerReducer(state, action); |
||||||
|
expect(state).to.have.deep.property('keys', 'ab'); |
||||||
|
}); |
||||||
|
|
||||||
|
it ('returns next state for FOLLOW_CONTROLLER_BACKSPACE', () => { |
||||||
|
let action = { type: actions.FOLLOW_CONTROLLER_BACKSPACE }; |
||||||
|
let state = followControllerReducer({ keys: 'ab' }, action); |
||||||
|
expect(state).to.have.deep.property('keys', 'a'); |
||||||
|
|
||||||
|
state = followControllerReducer(state, action); |
||||||
|
expect(state).to.have.deep.property('keys', ''); |
||||||
|
|
||||||
|
state = followControllerReducer(state, action); |
||||||
|
expect(state).to.have.deep.property('keys', ''); |
||||||
|
}); |
||||||
|
}); |
@ -1,48 +0,0 @@ |
|||||||
import { expect } from "chai"; |
|
||||||
import actions from 'content/actions'; |
|
||||||
import followReducer from 'content/reducers/follow'; |
|
||||||
|
|
||||||
describe('follow reducer', () => { |
|
||||||
it ('returns the initial state', () => { |
|
||||||
let state = followReducer(undefined, {}); |
|
||||||
expect(state).to.have.property('enabled', false); |
|
||||||
expect(state).to.have.property('newTab'); |
|
||||||
expect(state).to.have.deep.property('keys', ''); |
|
||||||
}); |
|
||||||
|
|
||||||
it ('returns next state for FOLLOW_ENABLE', () => { |
|
||||||
let action = { type: actions.FOLLOW_ENABLE, newTab: true }; |
|
||||||
let state = followReducer({ enabled: false, newTab: false }, action); |
|
||||||
expect(state).to.have.property('enabled', true); |
|
||||||
expect(state).to.have.property('newTab', true); |
|
||||||
expect(state).to.have.property('keys', ''); |
|
||||||
}); |
|
||||||
|
|
||||||
it ('returns next state for FOLLOW_DISABLE', () => { |
|
||||||
let action = { type: actions.FOLLOW_DISABLE }; |
|
||||||
let state = followReducer({ enabled: true }, action); |
|
||||||
expect(state).to.have.property('enabled', false); |
|
||||||
}); |
|
||||||
|
|
||||||
it ('returns next state for FOLLOW_KEY_PRESS', () => { |
|
||||||
let action = { type: actions.FOLLOW_KEY_PRESS, key: 'a'}; |
|
||||||
let state = followReducer({ keys: '' }, action); |
|
||||||
expect(state).to.have.deep.property('keys', 'a'); |
|
||||||
|
|
||||||
action = { type: actions.FOLLOW_KEY_PRESS, key: 'b'}; |
|
||||||
state = followReducer(state, action); |
|
||||||
expect(state).to.have.deep.property('keys', 'ab'); |
|
||||||
}); |
|
||||||
|
|
||||||
it ('returns next state for FOLLOW_BACKSPACE', () => { |
|
||||||
let action = { type: actions.FOLLOW_BACKSPACE }; |
|
||||||
let state = followReducer({ keys: 'ab' }, action); |
|
||||||
expect(state).to.have.deep.property('keys', 'a'); |
|
||||||
|
|
||||||
state = followReducer(state, action); |
|
||||||
expect(state).to.have.deep.property('keys', ''); |
|
||||||
|
|
||||||
state = followReducer(state, action); |
|
||||||
expect(state).to.have.deep.property('keys', ''); |
|
||||||
}); |
|
||||||
}); |
|
Reference in new issue