import React from 'react';
import Enzyme, { shallow } from 'enzyme/build/index';
import Adapter from 'enzyme-adapter-react-16/build/index';
import ReactTestRenderer from 'react-test-renderer';
import { TermsNeedingAccept } from 'app/modules/termsNeedingAccept/components/termsNeedingAccept';
import { ConsoleMock } from 'app/testUtils/consoleMock';
import { selectUserTermsToAccept } from 'app/modules/user/store/user.selectors';
import JestMock from 'jest-mock';
jest.mock('app/modules/user/store', () => ({
userTermsAccept: jest.fn(),
}));
jest.mock('app/modules/user/store/user.selectors', () => ({
selectUserTermsToAccept: jest.fn(() => ({
version: '100',
text: 'terms to accept',
})),
}));
jest.mock('react-redux', () => ({
useSelector: jest.fn((selector) => selector()),
}));
describe('TermsNeedingAccept component tests', () => {
Enzyme.configure({ adapter: new Adapter() });
let consoleMock, wrapper, component;
beforeEach(() => {
consoleMock = new ConsoleMock();
component = ;
wrapper = shallow(component);
});
afterEach(() => {
consoleMock.destroy();
});
it('renders TermsNeedingAccept correctly', () => {
const tree = ReactTestRenderer
.create(component)
.toJSON();
expect(tree).toMatchSnapshot();
});
it('renders error when data is not provided', () => {
(selectUserTermsToAccept as JestMock.Mock).mockImplementation(() => null);
const tree = ReactTestRenderer
.create(component)
.toJSON();
expect(tree).toMatchSnapshot();
});
});