separate content

This commit is contained in:
Shin'ya Ueoka 2017-10-08 15:04:55 +09:00
parent d886d7de29
commit 39fb540037
17 changed files with 24 additions and 24 deletions

View file

@ -0,0 +1,35 @@
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);
});
});
});

View file

@ -0,0 +1,26 @@
import { expect } from "chai";
import actions from 'content/actions';
import * as inputActions from 'content/actions/input';
describe("input actions", () => {
describe("keyPress", () => {
it('create INPUT_KEY_PRESS action', () => {
let action = inputActions.keyPress('a', false);
expect(action.type).to.equal(actions.INPUT_KEY_PRESS);
expect(action.key).to.equal('a');
});
it('create INPUT_KEY_PRESS action from key with ctrl', () => {
let action = inputActions.keyPress('b', true);
expect(action.type).to.equal(actions.INPUT_KEY_PRESS);
expect(action.key).to.equal('<C-B>');
});
});
describe("clearKeys", () => {
it('create INPUT_CLEAR_KEYSaction', () => {
let action = inputActions.clearKeys();
expect(action.type).to.equal(actions.INPUT_CLEAR_KEYS);
});
});
});

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<body>
<a href='#' >link</a>
<a href='#' style='display:none'>invisible 1</a>
<a href='#' style='visibility:hidden'>invisible 2</a>
<i>not link<i>
</body>
</html>

View file

@ -0,0 +1,15 @@
import { expect } from "chai";
import FollowComponent from 'content/components/follow';
describe('FollowComponent', () => {
describe('#getTargetElements', () => {
beforeEach(() => {
document.body.innerHTML = __html__['test/content/components/follow.html'];
});
it('returns visible links', () => {
let links = FollowComponent.getTargetElements(window.document);
expect(links).to.have.lengthOf(1);
});
});
});

View file

@ -0,0 +1,48 @@
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', '');
});
});

View file

@ -0,0 +1,26 @@
import { expect } from "chai";
import actions from 'content/actions';
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', '');
});
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');
action = { type: actions.INPUT_KEY_PRESS, key: '<C-B>' };
state = inputReducer(state, action);
expect(state).to.have.deep.property('keys', 'a<C-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', '');
});
});