From a366ea354063f31c99fe4adefc6ed977d9f7a13d Mon Sep 17 00:00:00 2001 From: Xiaohan Zhang Date: Thu, 22 Sep 2016 16:10:20 -0400 Subject: [PATCH 1/3] set error to true when payload instanceof Error Should set error to true when payloadCreator return error --- src/createAction.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/createAction.js b/src/createAction.js index 532610d7..304c2d07 100644 --- a/src/createAction.js +++ b/src/createAction.js @@ -17,7 +17,7 @@ export default function createAction(type, payloadCreator, metaCreator) { action.payload = payload; } - if (hasError) { + if (hasError || payload instanceof Error) { // Handle FSA errors where the payload is an Error object. Set error. action.error = true; } From 68603938e8e233914471e2623ac5569d448213f0 Mon Sep 17 00:00:00 2001 From: Xiaohan Zhang Date: Thu, 22 Sep 2016 16:31:02 -0400 Subject: [PATCH 2/3] add test --- src/__tests__/createAction-test.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/__tests__/createAction-test.js b/src/__tests__/createAction-test.js index 1265dd9a..d2568c23 100644 --- a/src/__tests__/createAction-test.js +++ b/src/__tests__/createAction-test.js @@ -130,5 +130,16 @@ describe('createAction()', () => { meta: { foo: 'bar' } }); }); + + it('set error to true if payloadCreator return an Error object', () => { + const errObj = new TypeError('this is an error'); + const actionCreator = createAction(type, (...args) => errObj); + const errAction = actionCreator('invalid arguments'); + expect(errAction).to.deep.equal({ + type, + payload: errObj, + error: true, + }); + }); }); }); From fc38d4af979d325e90d9f1035742bb1c0a49a850 Mon Sep 17 00:00:00 2001 From: Xiaohan Zhang Date: Thu, 22 Sep 2016 16:37:08 -0400 Subject: [PATCH 3/3] fix lint error --- src/__tests__/createAction-test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/__tests__/createAction-test.js b/src/__tests__/createAction-test.js index d2568c23..336f3136 100644 --- a/src/__tests__/createAction-test.js +++ b/src/__tests__/createAction-test.js @@ -133,12 +133,12 @@ describe('createAction()', () => { it('set error to true if payloadCreator return an Error object', () => { const errObj = new TypeError('this is an error'); - const actionCreator = createAction(type, (...args) => errObj); + const actionCreator = createAction(type, () => errObj); const errAction = actionCreator('invalid arguments'); expect(errAction).to.deep.equal({ type, payload: errObj, - error: true, + error: true }); }); });