scratch-www/test/unit/components/registration-error-step.test.jsx

117 lines
4.5 KiB
React
Raw Normal View History

2019-09-04 23:32:49 -04:00
import React from 'react';
import {shallowWithIntl} from '../../helpers/intl-helpers.jsx';
import {mountWithIntl} from '../../helpers/intl-helpers.jsx';
2019-09-04 23:32:49 -04:00
import JoinFlowStep from '../../../src/components/join-flow/join-flow-step';
import RegistrationErrorStep from '../../../src/components/join-flow/registration-error-step';
describe('RegistrationErrorStep', () => {
2019-10-18 11:40:31 -04:00
const onSubmit = jest.fn();
2019-09-04 23:32:49 -04:00
2019-10-18 11:40:31 -04:00
const getRegistrationErrorStepWrapper = props => {
const wrapper = shallowWithIntl(
2019-09-04 23:32:49 -04:00
<RegistrationErrorStep
sendAnalytics={jest.fn()}
2019-10-18 11:40:31 -04:00
{...props}
2019-09-04 23:32:49 -04:00
/>
);
2019-10-18 11:40:31 -04:00
return wrapper
.dive(); // unwrap injectIntl()
};
2019-09-04 23:32:49 -04:00
test('registrationError has JoinFlowStep', () => {
const props = {
canTryAgain: true,
onSubmit: onSubmit
};
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
expect(joinFlowStepWrapper).toHaveLength(1);
});
test('when errorMsg provided, registrationError shows it', () => {
const props = {
canTryAgain: true,
errorMsg: 'halp there is a errors!!',
onSubmit: onSubmit
};
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
const joinFlowStepInstance = joinFlowStepWrapper.dive();
const errMsgElement = joinFlowStepInstance.find('.registration-error-msg');
expect(errMsgElement).toHaveLength(1);
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,
onSubmit: onSubmit
};
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
const joinFlowStepInstance = joinFlowStepWrapper.dive();
const errMsgElement = joinFlowStepInstance.find('.registration-error-msg');
expect(errMsgElement).toHaveLength(0);
});
test('logs to analytics', () => {
const analyticsFn = jest.fn();
mountWithIntl(
<RegistrationErrorStep
sendAnalytics={analyticsFn}
/>);
expect(analyticsFn).toHaveBeenCalledWith('join-error');
});
2019-10-18 11:40:31 -04:00
test('when canTryAgain is true, show tryAgain message', () => {
const props = {
canTryAgain: true,
errorMsg: 'halp there is a errors!!',
onSubmit: onSubmit
};
2019-10-18 11:40:31 -04:00
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
2019-09-04 23:32:49 -04:00
expect(joinFlowStepWrapper).toHaveLength(1);
expect(joinFlowStepWrapper.props().nextButton).toBe('general.tryAgain');
});
2019-10-18 11:40:31 -04:00
test('when canTryAgain is false, show startOver message', () => {
const props = {
canTryAgain: false,
errorMsg: 'halp there is a errors!!',
onSubmit: onSubmit
};
2019-10-18 11:40:31 -04:00
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
expect(joinFlowStepWrapper).toHaveLength(1);
expect(joinFlowStepWrapper.props().nextButton).toBe('general.startOver');
});
test('when canTryAgain is missing, show startOver message', () => {
const props = {
errorMsg: 'halp there is a errors!!',
onSubmit: onSubmit
};
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
2019-10-18 11:40:31 -04:00
expect(joinFlowStepWrapper).toHaveLength(1);
expect(joinFlowStepWrapper.props().nextButton).toBe('general.startOver');
});
test('when submitted, onSubmit is called', () => {
const props = {
canTryAgain: true,
errorMsg: 'halp there is a errors!!',
onSubmit: onSubmit
};
const joinFlowStepWrapper = getRegistrationErrorStepWrapper(props).find(JoinFlowStep);
2019-09-04 23:32:49 -04:00
joinFlowStepWrapper.props().onSubmit(new Event('event')); // eslint-disable-line no-undef
2019-10-18 11:40:31 -04:00
expect(onSubmit).toHaveBeenCalled();
2019-09-04 23:32:49 -04:00
});
});