Files
frontend-app-learning/src/index.test.jsx
Diana Villalvazo 68926334a1 test: transform snapshot into rtl test 1/2 (#1756)
* test: remove snapshots and use rtl tests

* test: improve coverage on search results test
2025-07-29 10:13:07 -04:00

80 lines
2.6 KiB
JavaScript

import {
APP_INIT_ERROR, APP_READY, subscribe,
} from '@edx/frontend-platform';
// Jest needs this for module resolution
import * as app from '.'; // eslint-disable-line @typescript-eslint/no-unused-vars
// These need to be var not let so they get hoisted
// and can be used by jest.mock (which is also hoisted)
var mockRender; // eslint-disable-line no-var
var mockCreateRoot; // eslint-disable-line no-var
jest.mock('react-dom/client', () => {
mockRender = jest.fn();
mockCreateRoot = jest.fn(() => ({
render: mockRender,
}));
return ({
createRoot: mockCreateRoot,
});
});
jest.mock('react', () => ({
...jest.requireActual('react'),
StrictMode: 'React Strict Mode',
}));
jest.mock('@edx/frontend-platform', () => ({
APP_READY: 'app-is-ready-key',
APP_INIT_ERROR: 'app-init-error',
subscribe: jest.fn(),
initialize: jest.fn(),
mergeConfig: jest.fn(),
getConfig: () => ({
FAVICON_URL: 'favicon-url',
}),
ensureConfig: jest.fn(),
}));
jest.mock('./generic/PageNotFound', () => 'Page Not Found');
jest.mock('./course-home/goal-unsubscribe', () => 'Goal Unsubscribe');
jest.mock('./courseware/CoursewareRedirectLandingPage', () => 'Courseware Redirect Landing Page');
jest.mock('./preferences-unsubscribe', () => 'Preferences Unsubscribe');
jest.mock('./generic/CourseAccessErrorPage', () => 'Course Access Error Page');
jest.mock('./tab-page', () => ({ TabContainer: 'Tab Container' }));
jest.mock('./course-home/outline-tab', () => 'Outline Tab');
jest.mock('./course-home/live-tab/LiveTab', () => 'Live Tab');
jest.mock('./course-home/dates-tab', () => 'Dates Tab');
jest.mock('./course-home/discussion-tab/DiscussionTab', () => 'Discussion Tab');
jest.mock('./course-home/progress-tab/ProgressTab', () => 'Progress Tab');
jest.mock('./courseware/course/course-exit', () => ({ CourseExit: 'Course Exit' }));
jest.mock('./courseware', () => 'Courseware Container');
describe('app registry', () => {
let getElement;
beforeEach(() => {
mockCreateRoot.mockClear();
mockRender.mockClear();
getElement = window.document.getElementById;
window.document.getElementById = jest.fn(id => ({ id }));
});
afterAll(() => {
window.document.getElementById = getElement;
});
test('subscribe: APP_READY. links App to root element', () => {
const callArgs = subscribe.mock.calls[0];
expect(callArgs[0]).toEqual(APP_READY);
callArgs[1]();
});
test('subscribe: APP_INIT_ERROR.', () => {
const callArgs = subscribe.mock.calls[1];
expect(callArgs[0]).toEqual(APP_INIT_ERROR);
const error = { message: 'test-error-message' };
callArgs[1](error);
});
});