Skip to content

Commit

Permalink
Fix jest tests by mocking i18n, and prevent future such breakages by …
Browse files Browse the repository at this point in the history
…making warns and errors fatal
  • Loading branch information
johnflux committed Feb 11, 2023
1 parent e4e4f44 commit 2414d15
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions website/jest.setup.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,37 @@
// jest.setup.js
import "@testing-library/jest-dom/extend-expect";


const CONSOLE_FAIL_TYPES = ['error', 'warn'];

// Throw errors when a `console.error` or `console.warn` happens
// by overriding the functions.
// If the warning/error is intentional, then catch it and expect for it, like:
//
// jest.spyOn(console, 'warn').mockImplementation();
// ...
// expect(console.warn).toHaveBeenCalledWith(expect.stringContaining('Empty titles are deprecated.'));
CONSOLE_FAIL_TYPES.forEach((type) => {
const orig_f = console[type];
console[type] = (...message) => {
orig_f(...message);
throw new Error(`Failing due to console.${type} while running test!\n\n${message.join(' ')}`);
};
});

// Mock out useTranslation hook as per https://react.i18next.com/misc/testing
jest.mock('react-i18next', () => ({
// this mock makes sure any components using the translate hook can use it without a warning being shown
useTranslation: () => {
return {
t: (str) => str,
i18n: {
changeLanguage: () => new Promise(() => {}),
},
};
},
initReactI18next: {
type: '3rdParty',
init: () => {},
}
}));

0 comments on commit 2414d15

Please sign in to comment.