You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

91 lines
2.7 KiB

import { expect } from "chai";
import actions from '../../src/actions';
import completionReducer from '../../src/reducers/completion';
describe("completion reducer", () => {
it ('return the initial state', () => {
let state = completionReducer(undefined, {});
expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1);
expect(state).to.have.deep.property('groups', []);
});
it ('return next state for COMPLETION_SET_ITEMS', () => {
let state = {
groupSelection: 0,
itemSelection: 0,
groups: [],
}
let action = {
type: actions.COMPLETION_SET_ITEMS,
groups: [{
name: 'Apple',
items: [1, 2, 3]
}, {
name: 'Banana',
items: [4, 5, 6]
}]
}
state = completionReducer(state, action);
expect(state).to.have.property('groups', action.groups);
expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1);
});
it ('return next state for COMPLETION_SELECT_NEXT', () => {
let action = { type: actions.COMPLETION_SELECT_NEXT };
let state = {
groupSelection: -1,
itemSelection: -1,
groups: [{
name: 'Apple',
items: [1, 2]
}, {
name: 'Banana',
items: [3]
}]
};
state = completionReducer(state, action);
expect(state).to.have.property('groupSelection', 0);
expect(state).to.have.property('itemSelection', 0);
state = completionReducer(state, action);
expect(state).to.have.property('groupSelection', 0);
expect(state).to.have.property('itemSelection', 1);
state = completionReducer(state, action);
state = completionReducer(state, action);
expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1);
});
it ('return next state for COMPLETION_SELECT_PREV', () => {
let action = { type: actions.COMPLETION_SELECT_PREV };
let state = {
groupSelection: -1,
itemSelection: -1,
groups: [{
name: 'Apple',
items: [1, 2]
}, {
name: 'Banana',
items: [3]
}]
};
state = completionReducer(state, action);
expect(state).to.have.property('groupSelection', 1);
expect(state).to.have.property('itemSelection', 0);
state = completionReducer(state, action);
expect(state).to.have.property('groupSelection', 0);
expect(state).to.have.property('itemSelection', 1);
state = completionReducer(state, action);
state = completionReducer(state, action);
expect(state).to.have.property('groupSelection', -1);
expect(state).to.have.property('itemSelection', -1);
});
});