Files
frontend-app-ora-grading/src/App.test.jsx

65 lines
1.9 KiB
JavaScript

import React from 'react';
import { shallow } from '@edx/react-unit-test-utils';
import { App } from './App';
jest.mock('data/redux', () => ({
app: {
selectors: {
courseMetadata: (state) => ({ courseMetadata: state }),
isEnabled: (state) => ({ isEnabled: state }),
},
},
}));
jest.mock('@edx/frontend-component-header', () => ({
LearningHeader: 'Header',
}));
jest.mock('@edx/frontend-component-footer', () => ({ FooterSlot: 'Footer' }));
jest.mock('containers/DemoWarning', () => 'DemoWarning');
jest.mock('containers/CTA', () => 'CTA');
jest.mock('containers/ListView', () => 'ListView');
jest.mock('components/Head', () => 'Head');
let el;
describe('App router component', () => {
const props = {
courseMetadata: {
org: 'course-org',
number: 'course-number',
title: 'course-title',
},
isEnabled: true,
};
test('snapshot: enabled', () => {
expect(shallow(<App {...props} />).snapshot).toMatchSnapshot();
});
test('snapshot: disabled (show demo warning)', () => {
expect(shallow(<App {...props} isEnabled={false} />).snapshot).toMatchSnapshot();
});
describe('component', () => {
beforeEach(() => {
el = shallow(<App {...props} />);
});
describe('Router', () => {
test('Routing - ListView is only route', () => {
expect(el.instance.findByTestId('main')[0].children).toHaveLength(1);
expect(el.instance.findByTestId('main')[0].children[0].type).toBe('ListView');
});
});
test('Header to use courseMetadata props', () => {
const {
courseTitle,
courseNumber,
courseOrg,
} = el.instance.findByTestId('header')[0].props;
expect(courseTitle).toEqual(props.courseMetadata.title);
expect(courseNumber).toEqual(props.courseMetadata.number);
expect(courseOrg).toEqual(props.courseMetadata.org);
});
});
});