diff --git a/test/unit/components/join-flow.test.jsx b/test/unit/components/join-flow.test.jsx index 7e3590670..66505d1b8 100644 --- a/test/unit/components/join-flow.test.jsx +++ b/test/unit/components/join-flow.test.jsx @@ -57,117 +57,6 @@ describe('JoinFlow', () => { .dive(); // unwrap injectIntl(JoinFlow) }; - test('handleRegistrationResponse with successful response', () => { - const props = { - refreshSession: jest.fn() - }; - const joinFlowInstance = getJoinFlowWrapper(props).instance(); - const responseErr = null; - const responseBody = [ - { - success: true - } - ]; - const responseObj = { - statusCode: 200 - }; - joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); - expect(joinFlowInstance.props.refreshSession).toHaveBeenCalled(); - expect(joinFlowInstance.state.registrationError).toBe(null); - }); - - test('handleRegistrationResponse with healthy response, indicating failure', () => { - const props = { - refreshSession: jest.fn() - }; - const joinFlowInstance = getJoinFlowWrapper(props).instance(); - const responseErr = null; - const responseBody = [ - { - msg: 'This field is required.', - errors: { - username: ['This field is required.'] - }, - success: false - } - ]; - const responseObj = { - statusCode: 200 - }; - joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); - expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); - expect(joinFlowInstance.state.registrationError).toEqual({ - errorAllowsTryAgain: false, - errorMsg: 'registration.problemsAre: "username: This field is required."' - }); - }); - - test('handleRegistrationResponse with failure response, with error fields missing', () => { - const props = { - refreshSession: jest.fn() - }; - const joinFlowInstance = getJoinFlowWrapper(props).instance(); - const responseErr = null; - const responseBody = [ - { - msg: 'This field is required.', - success: false - } - ]; - const responseObj = { - statusCode: 200 - }; - joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); - expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); - expect(joinFlowInstance.state.registrationError).toEqual({ - errorAllowsTryAgain: false, - errorMsg: null - }); - }); - - test('handleRegistrationResponse with failure response, with no text explanation', () => { - const props = { - refreshSession: jest.fn() - }; - const joinFlowInstance = getJoinFlowWrapper(props).instance(); - const responseErr = null; - const responseBody = [ - { - success: false - } - ]; - const responseObj = { - statusCode: 200 - }; - joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); - expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); - expect(joinFlowInstance.state.registrationError).toEqual({ - errorAllowsTryAgain: false, - errorMsg: null - }); - }); - - test('handleRegistrationResponse with failure status code', () => { - const props = { - refreshSession: jest.fn() - }; - const joinFlowInstance = getJoinFlowWrapper(props).instance(); - const responseErr = null; - const responseBody = [ - { - success: false - } - ]; - const responseObj = { - statusCode: 400 - }; - joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); - expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); - expect(joinFlowInstance.state.registrationError).toEqual({ - errorAllowsTryAgain: true - }); - }); - test('handleCaptchaError gives state with captcha message', () => { const joinFlowInstance = getJoinFlowWrapper().instance(); joinFlowInstance.setState({}); @@ -388,6 +277,7 @@ describe('JoinFlow', () => { const joinFlowInstance = getJoinFlowWrapper(props).instance(); joinFlowInstance.handleRegistrationResponse(null, responseBodySuccess, {statusCode: 200}); expect(joinFlowInstance.state.registrationError).toEqual(null); + expect(joinFlowInstance.props.refreshSession).toHaveBeenCalled(); expect(joinFlowInstance.state.step).toEqual(1); expect(joinFlowInstance.state.waiting).toBeFalsy(); }); @@ -401,6 +291,29 @@ describe('JoinFlow', () => { }); }); + test('handleRegistrationResponse with failure response, with error fields missing', () => { + const props = { + refreshSession: jest.fn() + }; + const joinFlowInstance = getJoinFlowWrapper(props).instance(); + const responseErr = null; + const responseBody = [ + { + msg: 'This field is required.', + success: false + } + ]; + const responseObj = { + statusCode: 200 + }; + joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); + expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); + expect(joinFlowInstance.state.registrationError).toEqual({ + errorAllowsTryAgain: false, + errorMsg: null + }); + }); + test('handleRegistrationResponse when passed body with unfamiliar server error', () => { const joinFlowInstance = getJoinFlowWrapper().instance(); joinFlowInstance.handleRegistrationResponse(null, responseBodyMultipleErrs, {statusCode: 200}); @@ -411,6 +324,28 @@ describe('JoinFlow', () => { }); }); + test('handleRegistrationResponse with failure response, with no text explanation', () => { + const props = { + refreshSession: jest.fn() + }; + const joinFlowInstance = getJoinFlowWrapper(props).instance(); + const responseErr = null; + const responseBody = [ + { + success: false + } + ]; + const responseObj = { + statusCode: 200 + }; + joinFlowInstance.handleRegistrationResponse(responseErr, responseBody, responseObj); + expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); + expect(joinFlowInstance.state.registrationError).toEqual({ + errorAllowsTryAgain: false, + errorMsg: null + }); + }); + test('handleRegistrationResponse when passed non null outgoing request error', () => { const joinFlowInstance = getJoinFlowWrapper().instance(); joinFlowInstance.handleRegistrationResponse({}, responseBodyMultipleErrs, {statusCode: 200}); @@ -420,8 +355,12 @@ describe('JoinFlow', () => { }); test('handleRegistrationResponse when passed status 400', () => { - const joinFlowInstance = getJoinFlowWrapper().instance(); + const props = { + refreshSession: jest.fn() + }; + const joinFlowInstance = getJoinFlowWrapper(props).instance(); joinFlowInstance.handleRegistrationResponse({}, responseBodyMultipleErrs, {statusCode: 400}); + expect(joinFlowInstance.props.refreshSession).not.toHaveBeenCalled(); expect(joinFlowInstance.state.registrationError).toEqual({ errorAllowsTryAgain: true }); @@ -434,7 +373,4 @@ describe('JoinFlow', () => { errorAllowsTryAgain: true }); }); - - test('handleErrorNext', () => { - }); }); diff --git a/test/unit/components/registration-error-step.test.jsx b/test/unit/components/registration-error-step.test.jsx index cb80e0360..97876db95 100644 --- a/test/unit/components/registration-error-step.test.jsx +++ b/test/unit/components/registration-error-step.test.jsx @@ -38,6 +38,18 @@ describe('RegistrationErrorStep', () => { expect(errMsgElement.text()).toEqual('halp there is a errors!!'); }); + test('when errorMsg is null, registrationError does not show it', () => { + const props = { + canTryAgain: true, + errorMsg: null, + onSubmit: onSubmit + }; + const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep); + const joinFlowStepInstance = joinFlowStepWrapper.dive(); + const errMsgElement = joinFlowStepInstance.find('.registration-error-msg'); + expect(errMsgElement).toHaveLength(0); + }); + test('when no errorMsg provided, registrationError does not show it', () => { const props = { canTryAgain: true,