Don't map over state for reducer tests

This commit is contained in:
Josh Johnson 2017-10-10 11:20:00 +01:00
parent a9cdbc54c4
commit b9750e3c83
7 changed files with 71 additions and 56 deletions

View file

@ -1,3 +1,3 @@
{ {
"presets": ["es2015"] "presets": ["es2015", "stage-2"]
} }

View file

@ -7,7 +7,7 @@
"scripts": { "scripts": {
"start": "node server.js", "start": "node server.js",
"lint": "eslint assets/**/*.js", "lint": "eslint assets/**/*.js",
"test": "nyc mocha --require ./config/test.js --compilers babel-core/register \"./src/**/**/**/**/*.test.js\"", "test": "nyc mocha --require ./config/test.js --compilers js:babel-core/register \"./src/**/**/**/**/*.test.js\"",
"test:watch": "npm run test -- --watch", "test:watch": "npm run test -- --watch",
"css:watch": "nodemon -e scss -x \"npm run css:build\"", "css:watch": "nodemon -e scss -x \"npm run css:build\"",
"css:build": "npm run css:sass -s && npm run css:prefix -s && npm run css:min -s", "css:build": "npm run css:sass -s && npm run css:prefix -s && npm run css:min -s",
@ -31,10 +31,11 @@
"homepage": "https://github.com/jshjohnson/Choices#readme", "homepage": "https://github.com/jshjohnson/Choices#readme",
"devDependencies": { "devDependencies": {
"autoprefixer": "^6.3.3", "autoprefixer": "^6.3.3",
"babel-core": "^6.25.0", "babel-core": "^6.26.0",
"babel-eslint": "^7.2.3", "babel-eslint": "^7.2.3",
"babel-loader": "^6.2.4", "babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0", "babel-preset-es2015": "^6.6.0",
"babel-preset-stage-2": "^6.24.1",
"chai": "^4.1.0", "chai": "^4.1.0",
"concurrently": "^3.1.0", "concurrently": "^3.1.0",
"core-js": "^2.4.1", "core-js": "^2.4.1",
@ -48,7 +49,7 @@
"eslint-plugin-jsx-a11y": "^5.1.1", "eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-react": "^7.2.1", "eslint-plugin-react": "^7.2.1",
"jasmine-core": "2.4.1", "jasmine-core": "2.4.1",
"jsdom": "^11.1.0", "jsdom": "^11.3.0",
"mocha": "^3.4.2", "mocha": "^3.4.2",
"node-sass": "^3.4.2", "node-sass": "^3.4.2",
"nodemon": "^1.9.1", "nodemon": "^1.9.1",

View file

View file

View file

@ -18,18 +18,6 @@ describe('choices reducer', () => {
const customProperties = 'test'; const customProperties = 'test';
const placeholder = 'test'; const placeholder = 'test';
const actualResponse = choices(undefined, {
type: 'ADD_CHOICE',
value,
label,
id,
groupId,
disabled,
elementId,
customProperties,
placeholder,
});
const expectedResponse = [ const expectedResponse = [
{ {
value, value,
@ -47,6 +35,18 @@ describe('choices reducer', () => {
}, },
]; ];
const actualResponse = choices(undefined, {
type: 'ADD_CHOICE',
value,
label,
id,
groupId,
disabled,
elementId,
customProperties,
placeholder,
});
expect(actualResponse).to.eql(expectedResponse); expect(actualResponse).to.eql(expectedResponse);
}); });
}); });
@ -92,7 +92,16 @@ describe('choices reducer', () => {
it('sets active flag based on whether choice is in passed results', () => { it('sets active flag based on whether choice is in passed results', () => {
const id = 1; const id = 1;
const score = 10; const score = 10;
const actualResponse = choices([...state], { const active = true;
const expectedResponse = {
...state[0],
active,
score,
};
const actualResponse = choices(state, {
type: 'FILTER_CHOICES', type: 'FILTER_CHOICES',
results: [{ results: [{
item: { item: {
@ -100,16 +109,7 @@ describe('choices reducer', () => {
}, },
score, score,
}], }],
}); }).find(choice => choice.id === id);
const expectedResponse = state.map((choice) => {
const clonedChoice = choice;
if (clonedChoice.id === id) {
clonedChoice.active = true;
clonedChoice.score = 10;
}
return clonedChoice;
});
expect(actualResponse).to.eql(expectedResponse); expect(actualResponse).to.eql(expectedResponse);
}); });
@ -117,29 +117,36 @@ describe('choices reducer', () => {
describe('ACTIVATE_CHOICES', () => { describe('ACTIVATE_CHOICES', () => {
it('sets active flag to passed value', () => { it('sets active flag to passed value', () => {
const actualResponse = choices([...state], { const clonedState = state.slice(0);
const expectedResponse = [
{
...state[0],
active: true,
},
{
...state[1],
active: true,
},
];
const actualResponse = choices(clonedState, {
type: 'ACTIVATE_CHOICES', type: 'ACTIVATE_CHOICES',
active: true, active: true,
}); });
const expectedResponse = state.map((choice) => {
const clonedChoice = choice;
clonedChoice.active = true;
return clonedChoice;
});
expect(actualResponse).to.eql(expectedResponse); expect(actualResponse).to.eql(expectedResponse);
}); });
}); });
describe('CLEAR_CHOICES', () => { describe('CLEAR_CHOICES', () => {
it('restores to defaultState', () => { it('restores to defaultState', () => {
const actualResponse = choices([...state], { const clonedState = state.slice(0);
const expectedResponse = defaultState;
const actualResponse = choices(clonedState, {
type: 'CLEAR_CHOICES', type: 'CLEAR_CHOICES',
}); });
const expectedResponse = defaultState;
expect(actualResponse).to.eql(expectedResponse); expect(actualResponse).to.eql(expectedResponse);
}); });
}); });
@ -147,24 +154,28 @@ describe('choices reducer', () => {
describe('ADD_ITEM', () => { describe('ADD_ITEM', () => {
it('disables choice if action has choice id', () => { it('disables choice if action has choice id', () => {
const id = 2; const id = 2;
const actualResponse = choices(state, { const clonedState = state.slice(0);
const expectedResponse = [
{
...state[0],
},
{
...state[1],
selected: true,
},
];
const actualResponse = choices(clonedState, {
type: 'ADD_ITEM', type: 'ADD_ITEM',
choiceId: id, choiceId: id,
}); });
const expectedResponse = state.map((choice) => {
const clonedChoice = choice;
if (clonedChoice.id === id) {
clonedChoice.selected = false;
}
return clonedChoice;
});
expect(actualResponse).to.eql(expectedResponse); expect(actualResponse).to.eql(expectedResponse);
}); });
it('activates all choices if activateOptions flag passed', () => { it('activates all choices if activateOptions flag passed', () => {
const actualResponse = choices(state, { const clonedState = state.slice(0);
const actualResponse = choices(clonedState, {
type: 'ADD_ITEM', type: 'ADD_ITEM',
activateOptions: true, activateOptions: true,
active: true, active: true,
@ -178,19 +189,22 @@ describe('choices reducer', () => {
describe('REMOVE_ITEM', () => { describe('REMOVE_ITEM', () => {
it('selects choice by passed id', () => { it('selects choice by passed id', () => {
const id = 2; const id = 2;
const actualResponse = choices([...state], { const clonedState = state.slice(0);
const expectedResponse = [
{
...state[0],
},
{
...state[1],
selected: false,
},
];
const actualResponse = choices(clonedState, {
type: 'REMOVE_ITEM', type: 'REMOVE_ITEM',
choiceId: id, choiceId: id,
}); });
const expectedResponse = state.map((choice) => {
const clonedChoice = choice;
if (clonedChoice.id === id) {
clonedChoice.selected = false;
}
return clonedChoice;
});
expect(actualResponse).to.eql(expectedResponse); expect(actualResponse).to.eql(expectedResponse);
}); });
}); });