Skip to content
This repository has been archived by the owner on May 10, 2023. It is now read-only.

Commit

Permalink
chore: add additional test for add language section
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelKohler committed Jul 24, 2021
1 parent 8a6fcba commit a0c3c4f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
17 changes: 16 additions & 1 deletion web/src/components/add-language-section.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ beforeEach(() => {
jest.resetAllMocks();
jest.spyOn(redux, 'useDispatch');
jest.spyOn(redux, 'useSelector');

(redux.useDispatch as jest.Mock).mockImplementation(() => dispatchMock);
(redux.useSelector as jest.Mock).mockImplementation(() => ({
allLanguages,
Expand Down Expand Up @@ -65,3 +65,18 @@ test('should add language and set button to disabled', async () => {

expect((screen.getByRole('button') as HTMLButtonElement).disabled).toBeTruthy();
});

test('should show error when language can not be added', async () => {
dispatchMock.mockRejectedValue(new Error('oh no'));

act(() => { render(<AddLanguageSection />); });
fireEvent.change(screen.getByRole('combobox'), { target: { value: 'en' } });
expect((screen.getByRole('button') as HTMLButtonElement).disabled).toBe(false);

await act(async () => {
await userEvent.click(screen.getByRole('button'));
expect(dispatchMock).toHaveBeenCalled();
});

expect(screen.queryByText(/Could not add language/)).toBeTruthy();
});
8 changes: 2 additions & 6 deletions web/src/components/add-language-section.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ export default function AddLanguage() {
setError('');

try {
if (!language) {
throw new Error('Please select a language');
}

await dispatch(addLanguage(language));
} catch (error) {
setError(`Could not add language: ${error.message}`);
Expand All @@ -37,7 +33,7 @@ export default function AddLanguage() {

return (
<section>
{ error && ( <p className="error-message">{error}</p> ) }
{error && (<p className="error-message">{error}</p>)}

<LanguageSelector
selected={language}
Expand All @@ -48,7 +44,7 @@ export default function AddLanguage() {
onChange={onLanguageSelect}
/>
<button disabled={!!pendingLanguages || !language}
onClick={onLanguageAdd} className="add-language">Add Language</button>
onClick={onLanguageAdd} className="add-language">Add Language</button>
</section>
);
}

0 comments on commit a0c3c4f

Please sign in to comment.