Skip to content

Commit 085cd7d

Browse files
test: replacing snapshot tests with RTL tests part 10 (#2207)
1 parent 810dd42 commit 085cd7d

File tree

18 files changed

+300
-1012
lines changed

18 files changed

+300
-1012
lines changed

src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/index.test.jsx.snap

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

src/editors/containers/EditorContainer/components/TitleHeader/index.jsx

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
44

55
import { Icon, IconButton, Truncate } from '@openedx/paragon';
66
import { EditOutline } from '@openedx/paragon/icons';
7-
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
7+
import { useIntl, FormattedMessage } from '@edx/frontend-platform/i18n';
88

99
import { selectors } from '../../../../data/redux';
1010
import { localTitleHooks } from './hooks';
@@ -13,10 +13,9 @@ import EditableHeader from './EditableHeader';
1313

1414
const TitleHeader = ({
1515
isInitialized,
16-
// injected
17-
intl,
1816
}) => {
19-
if (!isInitialized) { return intl.formatMessage(messages.loading); }
17+
const intl = useIntl();
18+
if (!isInitialized) { return <FormattedMessage {...messages.loading} />; }
2019
// eslint-disable-next-line react-hooks/rules-of-hooks
2120
const dispatch = useDispatch();
2221
// eslint-disable-next-line react-hooks/rules-of-hooks
@@ -66,9 +65,6 @@ const TitleHeader = ({
6665
TitleHeader.defaultProps = {};
6766
TitleHeader.propTypes = {
6867
isInitialized: PropTypes.bool.isRequired,
69-
// injected
70-
intl: intlShape.isRequired,
7168
};
7269

73-
export const TitleHeaderInternal = TitleHeader; // For testing only
74-
export default injectIntl(TitleHeader);
70+
export default TitleHeader;

src/editors/containers/EditorContainer/components/TitleHeader/index.test.jsx

Lines changed: 0 additions & 62 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import React from 'react';
2+
import {
3+
render, screen, initializeMocks,
4+
} from '@src/testUtils';
5+
import * as redux from 'react-redux';
6+
7+
import * as hooks from './hooks';
8+
import TitleHeader from '.';
9+
10+
describe('TitleHeader', () => {
11+
// setting any type to prevent warnings on the mockReturnValue
12+
const localTitleHooksProps: any = {
13+
inputRef: jest.fn().mockName('localTitleHooks.inputRef'),
14+
isEditing: false,
15+
handleChange: jest.fn().mockName('localTitleHooks.handleChange'),
16+
handleKeyDown: jest.fn().mockName('localTitleHooks.handleKeyDown'),
17+
localTitle: 'TeST LocALtitLE',
18+
startEditing: jest.fn().mockName('localTitleHooks.startEditing'),
19+
updateTitle: jest.fn().mockName('localTitleHooks.updateTitle'),
20+
};
21+
22+
beforeEach(() => {
23+
initializeMocks();
24+
jest.spyOn(hooks, 'localTitleHooks').mockReturnValue(localTitleHooksProps);
25+
jest.spyOn(redux, 'useSelector').mockReturnValueOnce('Title mock');
26+
});
27+
28+
const props = {
29+
isInitialized: true,
30+
};
31+
32+
describe('behavior', () => {
33+
it('calls localTitleHooks with initialization args', () => {
34+
const mockDispatch = jest.fn();
35+
jest.spyOn(redux, 'useDispatch').mockReturnValueOnce(mockDispatch);
36+
render(<TitleHeader {...props} />);
37+
expect(screen.getByText('Title mock')).toBeInTheDocument();
38+
expect(hooks.localTitleHooks).toHaveBeenCalledWith({ dispatch: mockDispatch });
39+
});
40+
});
41+
42+
describe('renders', () => {
43+
test('component is not initialized and renders loading text', () => {
44+
render(<TitleHeader isInitialized={false} />);
45+
expect(screen.getByText('Loading...')).toBeInTheDocument();
46+
});
47+
48+
test('renders component correctly when initialized is true', () => {
49+
render(<TitleHeader {...props} />);
50+
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
51+
expect(screen.getByText('Title mock')).toBeInTheDocument();
52+
expect(screen.getByRole('button', { name: 'Edit Title' })).toBeInTheDocument();
53+
});
54+
55+
test('renders editing component', () => {
56+
jest.spyOn(hooks, 'localTitleHooks').mockReturnValue({ ...localTitleHooksProps, isEditing: true });
57+
render(<TitleHeader {...props} />);
58+
const editable = screen.getByRole('textbox');
59+
expect(editable).toBeInTheDocument();
60+
expect(editable).toHaveDisplayValue('TeST LocALtitLE');
61+
});
62+
});
63+
});

src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/GroupFeedback/__snapshots__/index.test.jsx.snap

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

src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/GroupFeedback/index.jsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3-
import { injectIntl, FormattedMessage, intlShape } from '@edx/frontend-platform/i18n';
3+
import { useIntl, FormattedMessage } from '@edx/frontend-platform/i18n';
44
import SettingsOption from '../../SettingsOption';
55
import messages from './messages';
66
import { groupFeedbackCardHooks, groupFeedbackRowHooks } from './hooks';
@@ -11,9 +11,8 @@ const GroupFeedbackCard = ({
1111
groupFeedbacks,
1212
updateSettings,
1313
answers,
14-
// inject
15-
intl,
1614
}) => {
15+
const intl = useIntl();
1716
const { summary, handleAdd } = groupFeedbackCardHooks(groupFeedbacks, updateSettings, answers);
1817
return (
1918
<SettingsOption
@@ -47,7 +46,6 @@ const GroupFeedbackCard = ({
4746
};
4847

4948
GroupFeedbackCard.propTypes = {
50-
intl: intlShape.isRequired,
5149
groupFeedbacks: PropTypes.arrayOf(PropTypes.shape({
5250
id: PropTypes.number.isRequired,
5351
feedback: PropTypes.string.isRequired,
@@ -63,5 +61,4 @@ GroupFeedbackCard.propTypes = {
6361
updateSettings: PropTypes.func.isRequired,
6462
};
6563

66-
export const GroupFeedbackCardInternal = GroupFeedbackCard; // For testing only
67-
export default injectIntl(GroupFeedbackCard);
64+
export default GroupFeedbackCard;

0 commit comments

Comments
 (0)