Created
July 12, 2017 15:37
-
-
Save giopunt/1f040cbda9176c66ea389eeb21556936 to your computer and use it in GitHub Desktop.
REDUX TRANING - EXPECTATIONS // source https://jsbin.com/xareso
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>REDUX TRANING - EXPECTATIONS</title> | |
<script src="https://wzrd.in/standalone/expect@latest"></script> | |
<script src="https://wzrd.in/standalone/deep-freeze@latest"></script> | |
</head> | |
<body> | |
<h1>REDUX TRANING - EXPECTATIONS</h1> | |
<script id="jsbin-javascript"> | |
"use strict"; | |
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } | |
var todo = function todo(state, action) { | |
switch (action.type) { | |
case "ADD_TODO": | |
return { | |
id: action.id, | |
text: action.text, | |
completed: false | |
}; | |
case "TOGGLE_TODO": | |
if (state.id !== action.id) { | |
return state; | |
} | |
return _extends({}, state, { | |
completed: !state.completed | |
}); | |
default: | |
return state; | |
} | |
}; | |
var todos = function todos(state, action) { | |
if (state === undefined) state = []; | |
switch (action.type) { | |
case "ADD_TODO": | |
return [].concat(_toConsumableArray(state), [todo(undefined, action)]); | |
case "TOGGLE_TODO": | |
return state.map(function (t) { | |
return todo(t, action); | |
}); | |
default: | |
return state; | |
} | |
}; | |
var testAddTo = function testAddTo() { | |
var stateBefore = []; | |
var action = { | |
type: "ADD_TODO", | |
id: 0, | |
text: "Learn Redux" | |
}; | |
var stateAfter = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}]; | |
deepFreeze(stateBefore); | |
deepFreeze(action); | |
expect(todos(stateBefore, action)).toEqual(stateAfter); | |
}; | |
var testToggle = function testToggle() { | |
var stateBefore = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}, { | |
id: 1, | |
text: "Go Shopping", | |
completed: false | |
}]; | |
var action = { | |
type: "TOGGLE_TODO", | |
id: 1 | |
}; | |
var stateAfter = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}, { | |
id: 1, | |
text: "Go Shopping", | |
completed: true | |
}]; | |
deepFreeze(stateBefore); | |
deepFreeze(action); | |
expect(todos(stateBefore, action)).toEqual(stateAfter); | |
}; | |
testAddTo(); | |
testToggle(); | |
console.log("All test passed"); | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">const todo = (state, action) => { | |
switch(action.type){ | |
case "ADD_TODO": | |
return { | |
id: action.id, | |
text: action.text, | |
completed: false | |
}; | |
case "TOGGLE_TODO": | |
if(state.id !== action.id){ | |
return state; | |
} | |
return { | |
...state, | |
completed: !state.completed | |
}; | |
default: | |
return state; | |
} | |
} | |
const todos = (state = [], action) => { | |
switch(action.type){ | |
case "ADD_TODO": | |
return [ | |
...state, | |
todo(undefined, action) | |
]; | |
case "TOGGLE_TODO": | |
return state.map(t => todo(t, action)); | |
default: | |
return state; | |
} | |
} | |
const testAddTo = () => { | |
const stateBefore = []; | |
const action = { | |
type: "ADD_TODO", | |
id: 0, | |
text: "Learn Redux" | |
}; | |
const stateAfter = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}] | |
deepFreeze(stateBefore); | |
deepFreeze(action); | |
expect( | |
todos(stateBefore, action) | |
).toEqual(stateAfter); | |
} | |
const testToggle = () => { | |
const stateBefore = [ | |
{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}, | |
{ | |
id: 1, | |
text: "Go Shopping", | |
completed: false | |
} | |
]; | |
const action = { | |
type: "TOGGLE_TODO", | |
id: 1 | |
}; | |
const stateAfter = [ | |
{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}, | |
{ | |
id: 1, | |
text: "Go Shopping", | |
completed: true | |
} | |
] | |
deepFreeze(stateBefore); | |
deepFreeze(action); | |
expect( | |
todos(stateBefore, action) | |
).toEqual(stateAfter); | |
} | |
testAddTo(); | |
testToggle(); | |
console.log("All test passed");</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | |
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } | |
var todo = function todo(state, action) { | |
switch (action.type) { | |
case "ADD_TODO": | |
return { | |
id: action.id, | |
text: action.text, | |
completed: false | |
}; | |
case "TOGGLE_TODO": | |
if (state.id !== action.id) { | |
return state; | |
} | |
return _extends({}, state, { | |
completed: !state.completed | |
}); | |
default: | |
return state; | |
} | |
}; | |
var todos = function todos(state, action) { | |
if (state === undefined) state = []; | |
switch (action.type) { | |
case "ADD_TODO": | |
return [].concat(_toConsumableArray(state), [todo(undefined, action)]); | |
case "TOGGLE_TODO": | |
return state.map(function (t) { | |
return todo(t, action); | |
}); | |
default: | |
return state; | |
} | |
}; | |
var testAddTo = function testAddTo() { | |
var stateBefore = []; | |
var action = { | |
type: "ADD_TODO", | |
id: 0, | |
text: "Learn Redux" | |
}; | |
var stateAfter = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}]; | |
deepFreeze(stateBefore); | |
deepFreeze(action); | |
expect(todos(stateBefore, action)).toEqual(stateAfter); | |
}; | |
var testToggle = function testToggle() { | |
var stateBefore = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}, { | |
id: 1, | |
text: "Go Shopping", | |
completed: false | |
}]; | |
var action = { | |
type: "TOGGLE_TODO", | |
id: 1 | |
}; | |
var stateAfter = [{ | |
id: 0, | |
text: "Learn Redux", | |
completed: false | |
}, { | |
id: 1, | |
text: "Go Shopping", | |
completed: true | |
}]; | |
deepFreeze(stateBefore); | |
deepFreeze(action); | |
expect(todos(stateBefore, action)).toEqual(stateAfter); | |
}; | |
testAddTo(); | |
testToggle(); | |
console.log("All test passed"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment