Skip to content

Commit 1c67d98

Browse files
committed
chore: fix tests on ReportOverview
DEVSU-2179
1 parent eb5d83c commit 1c67d98

File tree

2 files changed

+88
-21
lines changed

2 files changed

+88
-21
lines changed

app/views/ReportView/components/Appendices/components/ReportOverview/__tests__/ReportOverview.test.tsx

+87-20
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
import React from 'react';
2-
import { render, screen, waitFor, fireEvent } from '@testing-library/react';
2+
import {
3+
render, screen, waitFor, fireEvent, within,
4+
} from '@testing-library/react';
35

4-
import ReportOverview from '..';
6+
import { ReportOverview, ReportOverviewProps } from '..';
57

68
jest.mock('@/services/api');
79
jest.mock('@/services/SnackbarUtils');
810

9-
const defaultReportOverviewProps = {
10-
canEdit: false,
11-
isNew: false,
12-
templateId: '123456-uuid',
13-
text: 'Test Text',
11+
const defaultReportOverviewProps: ReportOverviewProps = {
1412
isPrint: false,
13+
canEditReportAppendix: false,
14+
canEditTemplateAppendix: false,
15+
isNewTemplate: false,
16+
templateId: '123456-uuid',
17+
templateSpecificText: 'template text',
18+
reportId: '7890-uuid',
19+
reportSpecificText: 'report text',
1520
};
1621

1722
describe('ReportOverview', () => {
@@ -21,17 +26,46 @@ describe('ReportOverview', () => {
2126
{...defaultReportOverviewProps}
2227
/>,
2328
);
24-
expect(await screen.findByText('Test Text')).toBeInTheDocument();
29+
expect(await screen.findByText(defaultReportOverviewProps.templateSpecificText)).toBeInTheDocument();
30+
expect(await screen.findByText(defaultReportOverviewProps.reportSpecificText)).toBeInTheDocument();
2531
});
2632

27-
test('Show a fab button to edit if record is editable', () => {
28-
const { getByRole } = render(
33+
test('Show a fab button to edit report appendix if is editable', () => {
34+
const { getByText } = render(
2935
<ReportOverview
3036
{...defaultReportOverviewProps}
31-
canEdit={true}
37+
canEditReportAppendix
3238
/>,
3339
);
34-
const buttonEl = getByRole('button');
40+
const buttonEl = getByText('Report Appendix');
41+
expect(buttonEl).not.toBeDisabled();
42+
expect(buttonEl).toBeTruthy();
43+
});
44+
45+
test('Show a fab button to edit template appendix if is editable', () => {
46+
const { getByText } = render(
47+
<ReportOverview
48+
{...defaultReportOverviewProps}
49+
canEditTemplateAppendix
50+
/>,
51+
);
52+
const buttonEl = getByText('Template Appendix');
53+
expect(buttonEl).not.toBeDisabled();
54+
expect(buttonEl).toBeTruthy();
55+
});
56+
57+
test('Show both fab button to edit report + template appendix if is editable', () => {
58+
const { getByText } = render(
59+
<ReportOverview
60+
{...defaultReportOverviewProps}
61+
canEditTemplateAppendix
62+
canEditReportAppendix
63+
/>,
64+
);
65+
let buttonEl = getByText('Template Appendix');
66+
expect(buttonEl).not.toBeDisabled();
67+
expect(buttonEl).toBeTruthy();
68+
buttonEl = getByText('Report Appendix');
3569
expect(buttonEl).not.toBeDisabled();
3670
expect(buttonEl).toBeTruthy();
3771
});
@@ -51,31 +85,64 @@ describe('ReportOverview', () => {
5185
const { queryByRole, getByText } = render(
5286
<ReportOverview
5387
{...defaultReportOverviewProps}
54-
canEdit={true}
55-
isPrint={true}
56-
text={'Sir, this is a wendy\'s'}
88+
canEditTemplateAppendix
89+
canEditReportAppendix
90+
isPrint
91+
reportSpecificText={'Sir, this is a wendy\'s'}
92+
templateSpecificText={'Madam, this is a wendy\'s'}
5793
/>,
5894
);
5995
await waitFor(() => { expect(queryByRole('button')).toBeNull(); });
6096
expect(getByText('Sir, this is a wendy\'s')).toBeInTheDocument();
97+
expect(getByText('Madam, this is a wendy\'s')).toBeInTheDocument();
98+
});
99+
100+
test('Opens a dialog to edit template appendix text when fab is clicked', async () => {
101+
const { getByRole, queryByRole, getByText } = render(
102+
<ReportOverview
103+
{...defaultReportOverviewProps}
104+
canEditTemplateAppendix
105+
canEditReportAppendix
106+
/>,
107+
);
108+
109+
await waitFor(() => {
110+
expect(queryByRole('dialog')).toBeNull();
111+
});
112+
const buttonEl = getByText('Template Appendix');
113+
await waitFor(() => {
114+
fireEvent.click(buttonEl);
115+
});
116+
const dialogDiv = getByRole('dialog');
117+
expect(dialogDiv).toBeInTheDocument();
118+
expect(within(dialogDiv).getByText(
119+
defaultReportOverviewProps.templateSpecificText,
120+
)).toBeInTheDocument();
121+
expect(getByText('Edit Appendix')).toBeInTheDocument();
61122
});
62123

63-
test('Opens a dialog to edit record when fab is clicked', async () => {
64-
const { getByRole, queryByRole } = render(
124+
test('Opens a dialog to edit report appendix text when fab is clicked', async () => {
125+
const { getByRole, queryByRole, getByText } = render(
65126
<ReportOverview
66127
{...defaultReportOverviewProps}
67-
canEdit={true}
128+
canEditTemplateAppendix
129+
canEditReportAppendix
68130
/>,
69131
);
70132

71133
await waitFor(() => {
72134
expect(queryByRole('dialog')).toBeNull();
73135
});
74-
const buttonEl = getByRole('button');
136+
const buttonEl = getByText('Report Appendix');
75137
await waitFor(() => {
76138
fireEvent.click(buttonEl);
77139
});
78-
expect(getByRole('dialog')).toBeInTheDocument();
140+
const dialogDiv = getByRole('dialog');
141+
expect(dialogDiv).toBeInTheDocument();
142+
expect(within(dialogDiv).getByText(
143+
defaultReportOverviewProps.reportSpecificText,
144+
)).toBeInTheDocument();
145+
expect(getByText('Edit Appendix')).toBeInTheDocument();
79146
});
80147

81148
// These tests are TODO for now since the React-Quill component cannot be targetted for change

app/views/ReportView/components/Appendices/components/ReportOverview/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,4 @@ const ReportOverview = ({
216216
};
217217

218218
export default ReportOverview;
219-
export { ReportOverviewProps };
219+
export { ReportOverview, ReportOverviewProps };

0 commit comments

Comments
 (0)