Skip to content

Commit 7a2e5f9

Browse files
committed
Misc fixes
1. Replace static DevTools import by conditional require, so that it is not required in production environment; 2. Development Challenges, Design Challenges, and Data Science Challenges items are removed from Compete navigation sub-menu. 3. Related update of unit tests 4. Fixed random failures of some unit tests due to other unit tests not cleaning up after them properly (not reseting process.env.XXX variables to the original values).
1 parent 6884aad commit 7a2e5f9

File tree

19 files changed

+161
-86
lines changed

19 files changed

+161
-86
lines changed

__tests__/client/index.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jest.setMock(`${SRC}/shared`, {
115115

116116
test('Fails to start with process.env.FRONT_END evaluating false', () => {
117117
jest.resetModules();
118-
delete process.env.FRONT_END;
118+
expect(process.env.FRONT_END).toBeUndefined();
119119
expect(() => require(MODULE)).toThrow();
120120
});
121121

@@ -124,6 +124,8 @@ describe('Properly starts with process.env.FRONT_ENV evaluating true', () => {
124124
* resolve once the page is rendered. */
125125
let rendered;
126126

127+
afterAll(() => delete process.env.FRONT_END);
128+
127129
beforeEach(() => {
128130
jest.resetModules();
129131
jest.clearAllMocks();

__tests__/server/server.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@ import _ from 'lodash';
22

33
jest.setMock('../../src/server/renderer', _.noop);
44

5-
beforeEach(() => {
6-
delete process.env.FRONT_END;
7-
});
8-
95
test('Should not throw', () => {
106
expect(() => require('server/server')).not.toThrow();
117
});

__tests__/shared/components/SubmissionManagement/Submission.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import React from 'react';
22
import Renderer from 'react-test-renderer/shallow';
3+
import Submission from 'components/SubmissionManagement/Submission';
34

45
test('Matches shallow shapshot', () => {
5-
delete process.env.FRONT_END;
6-
const Submission =
7-
require('components/SubmissionManagement/Submission').default;
86
const renderer = new Renderer();
97
renderer.render(<Submission />);
108
expect(renderer.getRenderOutput()).toMatchSnapshot();

__tests__/shared/components/SubmissionManagement/SubmissionsTable.jsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import SubmissionsTable from 'components/SubmissionManagement/SubmissionsTable';
44

55
test('Matches shallow shapshot', () => {
66
const renderer = new Renderer();
7-
renderer.render(<SubmissionsTable />);
7+
renderer.render((
8+
<SubmissionsTable
9+
showDetails={new Set([12345])}
10+
submissionObjects={[{
11+
submissionId: 12345,
12+
}]}
13+
/>
14+
));
815
expect(renderer.getRenderOutput()).toMatchSnapshot();
916
});

__tests__/shared/components/SubmissionManagement/__snapshots__/SubmissionsTable.jsx.snap

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,31 @@ exports[`Matches shallow shapshot 1`] = `
2727
</tr>
2828
</thead>
2929
<tbody>
30+
<Submission
31+
onDelete={[Function]}
32+
onDownload={[Function]}
33+
onShowDetails={[Function]}
34+
showScreeningDetails={true}
35+
submissionObject={
36+
Object {
37+
"submissionId": 12345,
38+
}
39+
}
40+
type=""
41+
/>
3042
<tr
3143
className="src-shared-components-SubmissionManagement-SubmissionsTable-___styles__submission-row___1uclT"
3244
>
3345
<td
34-
className="src-shared-components-SubmissionManagement-SubmissionsTable-___styles__no-submission___1jFHS"
46+
className="src-shared-components-SubmissionManagement-SubmissionsTable-___styles__dev-details___2GC2b"
3547
colSpan="6"
3648
>
37-
You have no submission uploaded so far.
49+
<ScreeningDetails
50+
helpPageUrl=""
51+
onlineReviewUrl=""
52+
screeningObject={Object {}}
53+
submissionId={12345}
54+
/>
3855
</td>
3956
</tr>
4057
</tbody>

__tests__/shared/components/TopcoderFooter.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import React from 'react';
22
import Renderer from 'react-test-renderer/shallow';
3+
import TopcoderFooter from 'components/TopcoderFooter';
34

45
test('Matches shallow shapshot', () => {
5-
delete process.env.FRONT_END;
6-
process.env.NODE_ENV = 'development';
7-
const TopcoderFooter = require('components/TopcoderFooter').default;
86
const renderer = new Renderer();
97
renderer.render(<TopcoderFooter />);
108
expect(renderer.getRenderOutput()).toMatchSnapshot();

__tests__/shared/components/TopcoderHeader/__snapshots__/index.jsx.snap

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -93,21 +93,6 @@ exports[`Default render 1`] = `
9393
"link": "/challenges",
9494
"title": "All Challenges",
9595
},
96-
Object {
97-
"icon": <IconNavDesign />,
98-
"link": "/challenges/#&tracks=design&mode=6&name=All%20Challenges",
99-
"title": "Design Challenges",
100-
},
101-
Object {
102-
"icon": <IconNavDevelop />,
103-
"link": "/challenges/#&tracks=develop&mode=6&name=All%20Challenges",
104-
"title": "Development Challenges",
105-
},
106-
Object {
107-
"icon": <IconNavDat />,
108-
"link": "/challenges/#&tracks=datasci&mode=6&name=All%20Challenges",
109-
"title": "Data Science Challenges",
110-
},
11196
Object {
11297
"icon": <IconNavCP />,
11398
"link": "https://arena.topcoder-dev.com/",
@@ -300,21 +285,6 @@ exports[`Render with open menu 1`] = `
300285
"link": "/challenges",
301286
"title": "All Challenges",
302287
},
303-
Object {
304-
"icon": <IconNavDesign />,
305-
"link": "/challenges/#&tracks=design&mode=6&name=All%20Challenges",
306-
"title": "Design Challenges",
307-
},
308-
Object {
309-
"icon": <IconNavDevelop />,
310-
"link": "/challenges/#&tracks=develop&mode=6&name=All%20Challenges",
311-
"title": "Development Challenges",
312-
},
313-
Object {
314-
"icon": <IconNavDat />,
315-
"link": "/challenges/#&tracks=datasci&mode=6&name=All%20Challenges",
316-
"title": "Data Science Challenges",
317-
},
318288
Object {
319289
"icon": <IconNavCP />,
320290
"link": "https://arena.topcoder-dev.com/",
@@ -501,21 +471,6 @@ exports[`Render with specified profile 1`] = `
501471
"link": "/challenges",
502472
"title": "All Challenges",
503473
},
504-
Object {
505-
"icon": <IconNavDesign />,
506-
"link": "/challenges/#&tracks=design&mode=6&name=All%20Challenges",
507-
"title": "Design Challenges",
508-
},
509-
Object {
510-
"icon": <IconNavDevelop />,
511-
"link": "/challenges/#&tracks=develop&mode=6&name=All%20Challenges",
512-
"title": "Development Challenges",
513-
},
514-
Object {
515-
"icon": <IconNavDat />,
516-
"link": "/challenges/#&tracks=datasci&mode=6&name=All%20Challenges",
517-
"title": "Data Science Challenges",
518-
},
519474
Object {
520475
"icon": <IconNavCP />,
521476
"link": "https://arena.topcoder-dev.com/",

__tests__/shared/components/TopcoderHeader/index.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
import _ from 'lodash';
44
import React from 'react';
55
import R from 'react-test-renderer/shallow';
6+
import TopcoderHeader from 'components/TopcoderHeader';
67
import TU from 'react-dom/test-utils';
78

8-
delete process.env.FRONT_END;
9-
const TopcoderHeader = require('components/TopcoderHeader').default;
10-
119
/* It is not possible to use functional components as arguments of
1210
* TU.renderIntoDocument(..), hence this class-wrapper. */
1311
class Wrapper extends React.Component {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import React from 'react';
2+
import Rnd from 'react-test-renderer/shallow';
3+
import UserMenu from 'components/TopcoderHeader/mobile/UserMenu';
4+
5+
const rnd = new Rnd();
6+
7+
test('Snapshot match', () => {
8+
rnd.render((
9+
<UserMenu
10+
menu={{
11+
title: 'Title',
12+
items: [{
13+
icon: <div />,
14+
link: '/link',
15+
title: 'Item title',
16+
}],
17+
}}
18+
profile={{
19+
handle: 'username',
20+
}}
21+
/>
22+
));
23+
expect(rnd.getRenderOutput()).toMatchSnapshot();
24+
});
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Snapshot match 1`] = `
4+
<div>
5+
<div
6+
className="src-shared-components-TopcoderHeader-mobile-UserMenu-___style__title___36eEX"
7+
>
8+
<a
9+
href="/members/username"
10+
>
11+
<Avatar
12+
url={null}
13+
/>
14+
<span
15+
className="src-shared-components-TopcoderHeader-mobile-UserMenu-___style__handle___CL0Tq"
16+
style={
17+
Object {
18+
"color": "#9D9FA0",
19+
}
20+
}
21+
>
22+
username
23+
</span>
24+
</a>
25+
</div>
26+
<SubMenu
27+
hideTitle={true}
28+
subMenu={
29+
Object {
30+
"items": Array [
31+
Object {
32+
"icon": <div />,
33+
"link": "/link",
34+
"title": "Item title",
35+
},
36+
],
37+
"title": "Title",
38+
}
39+
}
40+
/>
41+
</div>
42+
`;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import DevTools from 'containers/DevTools';
2+
import React from 'react';
3+
import Rnd from 'react-test-renderer/shallow';
4+
import { createStore } from 'redux';
5+
6+
const rnd = new Rnd();
7+
const store = createStore(() => ({}), {}, DevTools.instrument());
8+
9+
test('Snapshot match', () => {
10+
rnd.render((
11+
<DevTools
12+
store={store}
13+
/>
14+
));
15+
expect(rnd.getRenderOutput()).toMatchSnapshot();
16+
});

__tests__/shared/containers/TopcoderHeader.jsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import _ from 'lodash';
2+
import Container from 'containers/TopcoderHeader';
23
import React from 'react';
34
import R from 'react-test-renderer/shallow';
45

5-
delete process.env.FRONT_END;
6-
const Container = require('containers/TopcoderHeader').default;
7-
86
const mockState = {
97
auth: {
108
profile: {},
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Snapshot match 1`] = `
4+
<Connect(DockMonitor)
5+
changePositionKey="ctrl-p"
6+
defaultIsVisible={true}
7+
defaultPosition="right"
8+
defaultSize={0.3}
9+
fluid={true}
10+
store={
11+
Object {
12+
"dispatch": [Function],
13+
"getState": [Function],
14+
"replaceReducer": [Function],
15+
"subscribe": [Function],
16+
Symbol(Symbol.observable): [Function],
17+
}
18+
}
19+
toggleVisibilityKey="ctrl-m"
20+
>
21+
<LogMonitor
22+
expandActionRoot={true}
23+
expandStateRoot={true}
24+
markStateDiff={false}
25+
preserveScrollTop={true}
26+
select={[Function]}
27+
theme="tomorrow"
28+
/>
29+
</Connect(DockMonitor)>
30+
`;

__tests__/shared/utils/config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33
window.CONFIG = 'Client-side config';
44
jest.setMock('config', 'Server-side config');
55

6+
afterAll(() => delete process.env.FRONT_END);
67
beforeEach(() => jest.resetModules());
78

89
test('Serves config from node-config at the server-side', () => {
9-
delete process.env.FRONT_END;
10+
expect(process.env.FRONT_END).toBeUndefined();
1011
expect(require('utils/config')).toBe('Server-side config');
1112
});
1213

__tests__/shared/utils/isomorphy.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
const mod = () => require('utils/isomorphy');
22

3+
afterAll(() => {
4+
delete process.env.FRONT_END;
5+
process.env.NODE_ENV = 'test';
6+
});
37
beforeEach(() => jest.resetModules());
48

59
test('Client- and server-side checks work properly at the server-side', () => {
6-
delete process.env.FRONT_END;
10+
expect(process.env.FRONT_END).toBeUndefined();
711
expect(mod().isClientSide()).toBe(false);
812
expect(mod().isServerSide()).toBe(true);
913
});

__tests__/shared/utils/logger.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import _ from 'lodash';
22

3+
afterAll(() => {
4+
process.env.NODE_ENV = 'test';
5+
});
6+
37
describe('Dev logger', () => {
48
beforeAll(() => {
59
process.env.NODE_ENV = 'development';

config/jest/default.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
"coverageDirectory": "__coverage__",
77
"coverageThreshold": {
88
"global": {
9-
"branches": 67.75,
10-
"functions": 83.00,
9+
"branches": 68.50,
10+
"functions": 83.75,
1111
"lines": 83.50,
12-
"statements": 82.75
12+
"statements": 83.00
1313
}
1414
},
1515
"moduleNameMapper": {

src/shared/components/TopcoderHeader/index.jsx

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ import IconNavBookData from '../../../assets/images/nav/book-data.svg';
1111
import IconNavBookDesign from '../../../assets/images/nav/book-design.svg';
1212
import IconNavBoolDevelop from '../../../assets/images/nav/book-develop.svg';
1313
import IconNavCP from '../../../assets/images/nav/track-cp.svg';
14-
import IconNavDat from '../../../assets/images/nav/track-data.svg';
15-
import IconNavDesign from '../../../assets/images/nav/track-design.svg';
16-
import IconNavDevelop from '../../../assets/images/nav/track-develop.svg';
1714
import IconNavEvents from '../../../assets/images/nav/events.svg';
1815
import IconNavForums from '../../../assets/images/nav/forums.svg';
1916
import IconNavMembers from '../../../assets/images/nav/members.svg';
@@ -48,18 +45,6 @@ const MENU = [{
4845
icon: <IconNavRocket />,
4946
link: '/challenges',
5047
title: 'All Challenges',
51-
}, {
52-
icon: <IconNavDesign />,
53-
link: '/challenges/#&tracks=design&mode=6&name=All%20Challenges',
54-
title: 'Design Challenges',
55-
}, {
56-
icon: <IconNavDevelop />,
57-
link: '/challenges/#&tracks=develop&mode=6&name=All%20Challenges',
58-
title: 'Development Challenges',
59-
}, {
60-
icon: <IconNavDat />,
61-
link: '/challenges/#&tracks=datasci&mode=6&name=All%20Challenges',
62-
title: 'Data Science Challenges',
6348
}, {
6449
icon: <IconNavCP />,
6550
link: config.ARENA_URL,

0 commit comments

Comments
 (0)