Skip to content

Commit 3daa826

Browse files
committed
Tests
1 parent 37124e1 commit 3daa826

File tree

6 files changed

+85
-37
lines changed

6 files changed

+85
-37
lines changed

src/app/components/form-input/form-input.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function ValidatingInput({value, inputProps, onChange, accepted}) {
8888
}
8989

9090
export default function FormInput({label, longLabel, inputProps, suggestions}) {
91-
const [value, setValue] = useState('');
91+
const [value, setValue] = useState(inputProps.value ?? '');
9292
const {onChange: otherOnChange, ...otherProps} = inputProps;
9393
const [matches, exactMatch] = useMatches(value.toLowerCase(), suggestions);
9494
const [accepted, setAccepted] = useState(!suggestions?.length);

src/app/components/school-selector/school-selector.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,7 @@ function SchoolInfo() {
9595
}
9696

9797

98-
function SchoolHiddenInfo({school}: {school: School}) {
99-
if (!school) {
100-
return null;
101-
}
102-
98+
function SchoolHiddenInfo({school}: {school: Exclude<School, null>}) {
10399
return (
104100
<React.Fragment>
105101
<input type="hidden" name="school_type" value={school.type} />
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import React from 'react';
2+
import {render, waitFor} from '@testing-library/preact';
3+
import SchoolSelector from '~/components/school-selector/school-selector';
4+
import {LanguageContextProvider} from '~/contexts/language';
5+
import * as UMS from '~/models/use-school-suggestion-list';
6+
7+
jest.mock('~/helpers/main-class-hooks', () => ({
8+
useMainSticky: () => jest.fn()
9+
}));
10+
11+
describe('school-selector', () => {
12+
it('sets a hidden field when there is a selected school', async () => {
13+
jest.spyOn(UMS, 'default').mockReturnValue({
14+
schoolNames: ['one'],
15+
schoolIsOk: true,
16+
selectedSchool: {
17+
location: 'loc',
18+
// eslint-disable-next-line camelcase
19+
total_school_enrollment: null,
20+
type: 'college'
21+
}
22+
} as any); // eslint-disable-line @typescript-eslint/no-explicit-any
23+
render(
24+
<LanguageContextProvider>
25+
<SchoolSelector />
26+
</LanguageContextProvider>
27+
);
28+
29+
const selector = '[name="school_type"]';
30+
31+
await waitFor(() => expect(document.querySelector<HTMLInputElement>(selector)).toBeTruthy());
32+
const schoolType = document.querySelector<HTMLInputElement>(selector);
33+
34+
expect(schoolType?.value).toBe('college');
35+
});
36+
});

test/src/models/use-school-suggestion-list.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ describe('models/use-school-suggestion-list', () => {
3030
jest.spyOn(USDC, 'default').mockReturnValue({
3131
flags: {my_openstax: true} // eslint-disable-line camelcase
3232
} as ReturnType<typeof USDC.default>);
33-
jest.spyOn(SFF, 'default').mockResolvedValue([]);
33+
jest.spyOn(SFF, 'default').mockResolvedValue(undefined);
3434
render(<Component searchTerm="Rice" />);
3535
jest.runAllTimers();
3636
screen.getByText(0);

test/src/pages/details/get-this-title/give-before-other.test.tsx

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@ import {render, screen} from '@testing-library/preact';
33
import userEvent from '@testing-library/user-event';
44
import GiveBeforeOther from '~/pages/details/common/get-this-title-files/give-before-pdf/give-before-other';
55
import { MemoryRouter } from 'react-router-dom';
6+
import {LanguageContextProvider} from '~/contexts/language';
67
import * as TY from '~/pages/details/common/get-this-title-files/give-before-pdf/thank-you-form';
78

89
type PopupData = Parameters<typeof GiveBeforeOther>[0]['data'];
910

11+
jest.mock('~/helpers/main-class-hooks', () => ({
12+
useMainSticky: () => jest.fn()
13+
}));
14+
1015
describe('give-before-other', () => {
1116
const close = jest.fn();
1217
const data = {} as unknown as PopupData; // doesn't matter
@@ -56,15 +61,17 @@ describe('give-before-other', () => {
5661
onThankYouClick: () => null
5762
});
5863
render(
59-
<MemoryRouter initialEntries={['']}>
60-
<GiveBeforeOther
61-
link='#gbo-link'
62-
close={close}
63-
data={data}
64-
onDownload={onDownload}
65-
variant='Download resource'
66-
/>
67-
</MemoryRouter>
64+
<LanguageContextProvider>
65+
<MemoryRouter initialEntries={['']}>
66+
<GiveBeforeOther
67+
link='#gbo-link'
68+
close={close}
69+
data={data}
70+
onDownload={onDownload}
71+
variant='Download resource'
72+
/>
73+
</MemoryRouter>
74+
</LanguageContextProvider>
6875
);
6976
expect(screen.getAllByRole('textbox')).toHaveLength(5);
7077
screen.getByText('Send us a thank you note');

test/src/pages/details/get-this-title/give-before-pdf.test.tsx

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@ import React from 'react';
22
import {fireEvent, render, screen} from '@testing-library/preact';
33
import userEvent from '@testing-library/user-event';
44
import {MemoryRouter} from 'react-router-dom';
5+
import {LanguageContextProvider} from '~/contexts/language';
56
import GiveBeforePdf from '~/pages/details/common/get-this-title-files/give-before-pdf/give-before-pdf';
67
// eslint-disable-next-line max-len
78
import type {DonationPopupData} from '~/pages/details/common/get-this-title-files/give-before-pdf/use-donation-popup-data';
89
import * as TY from '~/pages/details/common/get-this-title-files/give-before-pdf/thank-you-form';
910

11+
jest.mock('~/helpers/main-class-hooks', () => ({
12+
useMainSticky: () => jest.fn()
13+
}));
14+
1015
jest.useFakeTimers();
1116
const user = userEvent.setup({advanceTimers: jest.advanceTimersByTime});
1217
const close = jest.fn();
@@ -32,7 +37,6 @@ describe('give-before-pdf', () => {
3237
const originalError = console.error;
3338

3439
afterEach(() => {
35-
jest.resetAllMocks();
3640
jest.restoreAllMocks();
3741
});
3842

@@ -53,16 +57,18 @@ describe('give-before-pdf', () => {
5357
});
5458
it('shows Thank You', async () => {
5559
render(
56-
<ShowThankYouButton>
57-
<MemoryRouter initialEntries={['']}>
58-
<GiveBeforePdf
59-
link="gbp-link"
60-
close={close}
61-
data={data}
62-
onDownload={onDownload}
63-
/>
64-
</MemoryRouter>
65-
</ShowThankYouButton>
60+
<LanguageContextProvider>
61+
<ShowThankYouButton>
62+
<MemoryRouter initialEntries={['']}>
63+
<GiveBeforePdf
64+
link="gbp-link"
65+
close={close}
66+
data={data}
67+
onDownload={onDownload}
68+
/>
69+
</MemoryRouter>
70+
</ShowThankYouButton>
71+
</LanguageContextProvider>
6672
);
6773
await user.click(await screen.findByRole('button'));
6874
await screen.findByText('Go to your file');
@@ -75,23 +81,25 @@ describe('give-before-pdf', () => {
7581
onThankYouClick: () => thankYouClick()
7682
});
7783
render(
78-
<MemoryRouter initialEntries={['']}>
79-
<GiveBeforePdf
80-
link="gbp-link"
81-
close={close}
82-
data={data}
83-
onDownload={onDownload}
84-
track="thanks"
85-
/>
86-
</MemoryRouter>
84+
<LanguageContextProvider>
85+
<MemoryRouter initialEntries={['']}>
86+
<GiveBeforePdf
87+
link="gbp-link"
88+
close={close}
89+
data={data}
90+
onDownload={onDownload}
91+
track="thanks"
92+
/>
93+
</MemoryRouter>
94+
</LanguageContextProvider>
8795
);
8896
jest.runAllTimers();
8997
await screen.findByRole('heading', {
9098
level: 1,
9199
name: 'Send us a thank you note'
92100
});
93101
screen.getAllByRole('textbox').forEach((el) => {
94-
fireEvent.input(el, {target: {value: 'something'}});
102+
fireEvent.input(el, {target: {value: 'Casper College'}});
95103
});
96104
await user.click(screen.getByRole('checkbox'));
97105
console.error = jest.fn();
@@ -130,6 +138,7 @@ describe('give-before-pdf', () => {
130138
await user.click(goLink);
131139
jest.runAllTimers();
132140
expect(onDownload).toHaveBeenCalled();
141+
jest.resetAllMocks();
133142
});
134143
it('Handle close without onDownload', async () => {
135144
expect(close).not.toHaveBeenCalled();

0 commit comments

Comments
 (0)