Skip to content

Commit 9aa2350

Browse files
committed
integration test
1 parent 0cf005e commit 9aa2350

File tree

4 files changed

+59
-24
lines changed

4 files changed

+59
-24
lines changed

client/__mocks__/axios.js

Lines changed: 0 additions & 6 deletions
This file was deleted.

client/index.integration.test.jsx

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
1-
import React from 'react';
2-
import ReactDOM from 'react-dom';
31
import { setupServer } from 'msw/node';
42
import { rest } from 'msw';
3+
import { act, render } from '@testing-library/react';
4+
import { userResponse } from './redux_test_stores/test_server_responses';
55

66
jest.mock('./i18n');
77

88
const server = setupServer(
9-
rest.get('/session', (req, res, ctx) =>
10-
res(ctx.json({ greeting: 'hello there' }))
11-
)
9+
rest.get('/session', (req, res, ctx) => {
10+
console.log('called');
11+
return res(ctx.json(userResponse));
12+
})
1213
);
1314

1415
beforeAll(() => server.listen());
1516
afterEach(() => server.resetHandlers());
1617
afterAll(() => server.close());
1718

1819
describe('Application root', () => {
20+
// eslint-disable-next-line global-require
21+
const subject = () => require('./index');
22+
1923
it('should render without crashing', () => {
2024
const div = document.createElement('div');
2125
div.id = 'root';
2226
document.body.appendChild(div);
23-
// require("./index.jsx");
27+
act(() => {
28+
subject();
29+
});
30+
2431
// expect(ReactDOM.render).toHaveBeenCalledWith(<App />, div);
2532
});
2633
});

client/modules/IDE/components/SketchList.test.jsx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
11
import React from 'react';
22
import configureStore from 'redux-mock-store';
33
import thunk from 'redux-thunk';
4-
import axios from 'axios';
4+
import { setupServer } from 'msw/node';
5+
import { rest } from 'msw';
56
import { act } from 'react-dom/test-utils';
67
import SketchList from './SketchList';
7-
import {
8-
reduxRender,
9-
fireEvent,
10-
screen,
11-
within,
12-
prettyDOM
13-
} from '../../../test-utils';
8+
import { reduxRender, fireEvent, screen, within } from '../../../test-utils';
149
import { initialTestState } from '../../../redux_test_stores/test_store';
1510

1611
jest.mock('../../../i18n');
1712

13+
const server = setupServer(
14+
rest.get(`/${initialTestState.user.username}/projects`, (req, res, ctx) =>
15+
// it just needs to return something so it doesn't throw an error
16+
// Sketchlist tries to grab projects on creation but for the unit test
17+
// we just feed those in as part of the initial state
18+
res(ctx.json({ data: 'foo' }))
19+
)
20+
);
21+
22+
beforeAll(() => server.listen());
23+
afterEach(() => server.resetHandlers());
24+
afterAll(() => server.close());
25+
1826
describe('<Sketchlist />', () => {
1927
const mockStore = configureStore([thunk]);
2028
const store = mockStore(initialTestState);
@@ -24,10 +32,6 @@ describe('<Sketchlist />', () => {
2432
const subject = () =>
2533
reduxRender(<SketchList {...subjectProps} />, { store });
2634

27-
beforeEach(() => {
28-
axios.get.mockImplementationOnce((x) => Promise.resolve({ data: 'foo' }));
29-
});
30-
3135
afterEach(() => {
3236
store.clearActions();
3337
});
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// test data to use with msw
2+
3+
const userResponse = {
4+
5+
username: 'happydog',
6+
preferences: {
7+
fontSize: 18,
8+
lineNumbers: true,
9+
indentationAmount: 2,
10+
isTabIndent: false,
11+
autosave: true,
12+
linewrap: true,
13+
lintWarning: false,
14+
textOutput: false,
15+
gridOutput: false,
16+
soundOutput: false,
17+
theme: 'light',
18+
autorefresh: false,
19+
language: 'en-US',
20+
autocloseBracketsQuotes: true
21+
},
22+
apiKeys: [],
23+
verified: 'verified',
24+
id: 'testid',
25+
totalSize: 0,
26+
github: 'githubusername',
27+
google: 'googleusername'
28+
};
29+
30+
export default { userResponse };

0 commit comments

Comments
 (0)