|
1 | 1 | import { expect } from 'chai';
|
2 |
| -import identity from 'lodash/identity'; |
3 | 2 | import { handleAction, createAction, createActions, combineActions } from '../';
|
4 | 3 |
|
5 | 4 | describe('handleAction()', () => {
|
@@ -96,6 +95,20 @@ describe('handleAction()', () => {
|
96 | 95 | counter: 7
|
97 | 96 | });
|
98 | 97 | });
|
| 98 | + |
| 99 | + it('should not throw and return state when action is non-FSA', () => { |
| 100 | + const reducer = handleAction(type, (state) => state, defaultState); |
| 101 | + const action = { |
| 102 | + foo: { |
| 103 | + bar: 'baz' |
| 104 | + } |
| 105 | + }; |
| 106 | + |
| 107 | + expect(reducer(undefined, action)).not.to.throw; |
| 108 | + expect(reducer(undefined, action)).to.deep.equal({ |
| 109 | + counter: 0 |
| 110 | + }); |
| 111 | + }); |
99 | 112 | });
|
100 | 113 | });
|
101 | 114 |
|
@@ -239,36 +252,4 @@ describe('handleAction()', () => {
|
239 | 252 | .to.deep.equal({ number: 3 });
|
240 | 253 | });
|
241 | 254 | });
|
242 |
| - |
243 |
| - describe('with invalid actions', () => { |
244 |
| - it('should throw a descriptive error when the action object is missing', () => { |
245 |
| - const reducer = handleAction(createAction('ACTION_1'), identity, {}); |
246 |
| - expect( |
247 |
| - () => reducer(undefined) |
248 |
| - ).to.throw( |
249 |
| - Error, |
250 |
| - 'The FSA spec mandates an action object with a type. Try using the createAction(s) method.' |
251 |
| - ); |
252 |
| - }); |
253 |
| - |
254 |
| - it('should throw a descriptive error when the action type is missing', () => { |
255 |
| - const reducer = handleAction(createAction('ACTION_1'), identity, {}); |
256 |
| - expect( |
257 |
| - () => reducer(undefined, {}) |
258 |
| - ).to.throw( |
259 |
| - Error, |
260 |
| - 'The FSA spec mandates an action object with a type. Try using the createAction(s) method.' |
261 |
| - ); |
262 |
| - }); |
263 |
| - |
264 |
| - it('should throw a descriptive error when the action type is not a string or symbol', () => { |
265 |
| - const reducer = handleAction(createAction('ACTION_1'), identity, {}); |
266 |
| - expect( |
267 |
| - () => reducer(undefined, { type: false }) |
268 |
| - ).to.throw( |
269 |
| - Error, |
270 |
| - 'The FSA spec mandates an action object with a type. Try using the createAction(s) method.' |
271 |
| - ); |
272 |
| - }); |
273 |
| - }); |
274 | 255 | });
|
0 commit comments