summaryrefslogtreecommitdiffstats
path: root/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js284
1 files changed, 284 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js
new file mode 100644
index 0000000000..1ddded36fb
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js
@@ -0,0 +1,284 @@
+import todos from './todos'
+import * as types from '../constants/ActionTypes'
+
+describe('todos reducer', () => {
+ it('should handle initial state', () => {
+ expect(
+ todos(undefined, {})
+ ).toEqual([
+ {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should handle ADD_TODO', () => {
+ expect(
+ todos([], {
+ type: types.ADD_TODO,
+ text: 'Run the tests'
+ })
+ ).toEqual([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 0
+ }
+ ])
+
+ expect(
+ todos([
+ {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.ADD_TODO,
+ text: 'Run the tests'
+ })
+ ).toEqual([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.ADD_TODO,
+ text: 'Fix the tests'
+ })
+ ).toEqual([
+ {
+ text: 'Fix the tests',
+ completed: false,
+ id: 2
+ }, {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should handle DELETE_TODO', () => {
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.DELETE_TODO,
+ id: 1
+ })
+ ).toEqual([
+ {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should handle EDIT_TODO', () => {
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.EDIT_TODO,
+ text: 'Fix the tests',
+ id: 1
+ })
+ ).toEqual([
+ {
+ text: 'Fix the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should handle COMPLETE_TODO', () => {
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.COMPLETE_TODO,
+ id: 1
+ })
+ ).toEqual([
+ {
+ text: 'Run the tests',
+ completed: true,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should handle COMPLETE_ALL', () => {
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: true,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.COMPLETE_ALL
+ })
+ ).toEqual([
+ {
+ text: 'Run the tests',
+ completed: true,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: true,
+ id: 0
+ }
+ ])
+
+ // Unmark if all todos are currently completed
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: true,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: true,
+ id: 0
+ }
+ ], {
+ type: types.COMPLETE_ALL
+ })
+ ).toEqual([
+ {
+ text: 'Run the tests',
+ completed: false,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should handle CLEAR_COMPLETED', () => {
+ expect(
+ todos([
+ {
+ text: 'Run the tests',
+ completed: true,
+ id: 1
+ }, {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ], {
+ type: types.CLEAR_COMPLETED
+ })
+ ).toEqual([
+ {
+ text: 'Use Redux',
+ completed: false,
+ id: 0
+ }
+ ])
+ })
+
+ it('should not generate duplicate ids after CLEAR_COMPLETED', () => {
+ expect(
+ [
+ {
+ type: types.COMPLETE_TODO,
+ id: 0
+ }, {
+ type: types.CLEAR_COMPLETED
+ }, {
+ type: types.ADD_TODO,
+ text: 'Write more tests'
+ }
+ ].reduce(todos, [
+ {
+ id: 0,
+ completed: false,
+ text: 'Use Redux'
+ }, {
+ id: 1,
+ completed: false,
+ text: 'Write tests'
+ }
+ ])
+ ).toEqual([
+ {
+ text: 'Write more tests',
+ completed: false,
+ id: 2
+ }, {
+ text: 'Write tests',
+ completed: false,
+ id: 1
+ }
+ ])
+ })
+})