fix: add unit tests for legacy cert in settings
This commit is contained in:
committed by
Mrugesh Mohapatra
parent
c359662f85
commit
3f13310a78
@ -13,7 +13,6 @@ import {
|
|||||||
import { Link, navigate } from 'gatsby';
|
import { Link, navigate } from 'gatsby';
|
||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
|
|
||||||
import { updateLegacyCert } from '../../redux/settings';
|
|
||||||
import { projectMap, legacyProjectMap } from '../../resources/certProjectMap';
|
import { projectMap, legacyProjectMap } from '../../resources/certProjectMap';
|
||||||
|
|
||||||
import SectionHeader from './SectionHeader';
|
import SectionHeader from './SectionHeader';
|
||||||
@ -25,6 +24,7 @@ import { maybeUrlRE } from '../../utils';
|
|||||||
import reallyWeirdErrorMessage from '../../utils/reallyWeirdErrorMessage';
|
import reallyWeirdErrorMessage from '../../utils/reallyWeirdErrorMessage';
|
||||||
|
|
||||||
import './certification.css';
|
import './certification.css';
|
||||||
|
import { updateLegacyCert } from '../../redux/settings';
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch =>
|
const mapDispatchToProps = dispatch =>
|
||||||
bindActionCreators({ updateLegacyCert }, dispatch);
|
bindActionCreators({ updateLegacyCert }, dispatch);
|
||||||
@ -124,7 +124,7 @@ const initialState = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CertificationSettings extends Component {
|
export class CertificationSettings extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
@ -424,6 +424,7 @@ class CertificationSettings extends Component {
|
|||||||
bsStyle='primary'
|
bsStyle='primary'
|
||||||
className={'col-xs-12'}
|
className={'col-xs-12'}
|
||||||
href={certLocation}
|
href={certLocation}
|
||||||
|
id={'button-' + superBlock}
|
||||||
onClick={createClickHandler(certLocation)}
|
onClick={createClickHandler(certLocation)}
|
||||||
style={buttonStyle}
|
style={buttonStyle}
|
||||||
target='_blank'
|
target='_blank'
|
||||||
|
151
client/src/components/settings/Certification.test.js
Normal file
151
client/src/components/settings/Certification.test.js
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/* global expect */
|
||||||
|
import React from 'react';
|
||||||
|
import Enzyme from 'enzyme';
|
||||||
|
import Adapter from 'enzyme-adapter-react-16';
|
||||||
|
|
||||||
|
import { CertificationSettings } from './Certification';
|
||||||
|
|
||||||
|
Enzyme.configure({ adapter: new Adapter() });
|
||||||
|
|
||||||
|
describe('<certification />', () => {
|
||||||
|
// shallow rendering does not render children component
|
||||||
|
// form buttons are not included in shallow render
|
||||||
|
it('Should render show cert button for calimed legacy cert', () => {
|
||||||
|
const wrapper = Enzyme.shallow(
|
||||||
|
<CertificationSettings {...defaultTestProps} />
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
wrapper.find('#button-legacy-data-visualization').props().children
|
||||||
|
).toEqual('Show Certification');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should link show cert button to the calimed legacy cert', () => {
|
||||||
|
const wrapper = Enzyme.shallow(
|
||||||
|
<CertificationSettings {...defaultTestProps} />
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
wrapper.find('#button-legacy-data-visualization').props().href
|
||||||
|
).toEqual('/certification/developementuser/legacy-data-visualization');
|
||||||
|
});
|
||||||
|
|
||||||
|
// full forms with unclaimed certs should should not shallow render button
|
||||||
|
it('Should not render show cert button for unclaimed full form', () => {
|
||||||
|
const wrapper = Enzyme.shallow(
|
||||||
|
<CertificationSettings {...defaultTestProps} />
|
||||||
|
);
|
||||||
|
expect(wrapper.exists('#button-legacy-back-end')).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
// empty forms with unclaimed certs should should not shallow render button
|
||||||
|
it('Should not render show cert button for empty form', () => {
|
||||||
|
const wrapper = Enzyme.shallow(
|
||||||
|
<CertificationSettings {...defaultTestProps} />
|
||||||
|
);
|
||||||
|
expect(wrapper.exists('#button-legacy-front-end')).toEqual(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const defaultTestProps = {
|
||||||
|
completedChallenges: [
|
||||||
|
{
|
||||||
|
id: 'bd7156d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7155d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7154d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7153d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7168d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7178d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7188d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7198d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7108d8c242eddfaeb5bd13',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443edefaeb5bdef',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443edefaeb5bdff',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443edefaeb5bd0e',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443edefaeb5bdee',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443edefaeb5bd0f',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443eddfaeb5bdef',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443eddfaeb5bdff',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443eddfaeb5bd0e',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443eddfaeb5bd0f',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7158d8c443eddfaeb5bdee',
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'bd7157d8c242eddfaeb5bd13',
|
||||||
|
completedDate: 1554272923799,
|
||||||
|
solution: 'https://github.com/freeCodeCamp/freeCodeCamp'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
createFlashMessage: () => {},
|
||||||
|
is2018DataVisCert: false,
|
||||||
|
isApisMicroservicesCert: false,
|
||||||
|
isBackEndCert: false,
|
||||||
|
isDataVisCert: true,
|
||||||
|
isFrontEndCert: false,
|
||||||
|
isFrontEndLibsCert: false,
|
||||||
|
isFullStackCert: false,
|
||||||
|
isHonest: false,
|
||||||
|
isInfosecQaCert: false,
|
||||||
|
isJsAlgoDataStructCert: false,
|
||||||
|
isRespWebDesignCert: false,
|
||||||
|
updateLegacyCert: () => {},
|
||||||
|
username: 'developementuser',
|
||||||
|
verifyCert: () => {},
|
||||||
|
errors: {},
|
||||||
|
submit: () => {}
|
||||||
|
};
|
Reference in New Issue
Block a user