Files
frontend-app-learner-dashboard/src/containers/CourseCard/components/CourseCardBanners/CreditBanner/views/PendingContent.test.jsx
2023-01-19 10:13:48 -05:00

63 lines
2.2 KiB
JavaScript

import React from 'react';
import { shallow } from 'enzyme';
import { formatMessage } from 'testUtils';
import { reduxHooks } from 'hooks';
import messages from './messages';
import hooks from './hooks';
import PendingContent from './PendingContent';
jest.mock('hooks', () => ({ reduxHooks: { useCardCreditData: jest.fn() } }));
jest.mock('./hooks', () => ({ useCreditRequestData: jest.fn() }));
jest.mock('./components/CreditContent', () => 'CreditContent');
jest.mock('./components/ProviderLink', () => 'ProviderLink');
let el;
let component;
const cardId = 'test-card-id';
const requestData = { test: 'requestData' };
const providerName = 'test-credit-provider-name';
const createCreditRequest = jest.fn().mockName('createCreditRequest');
reduxHooks.useCardCreditData.mockReturnValue({ providerName });
hooks.useCreditRequestData.mockReturnValue({ requestData, createCreditRequest });
const render = () => {
el = shallow(<PendingContent cardId={cardId} />);
};
describe('PendingContent component', () => {
beforeEach(() => {
render();
});
describe('behavior', () => {
it('initializes card credit data with cardId', () => {
expect(reduxHooks.useCardCreditData).toHaveBeenCalledWith(cardId);
});
it('initializes credit request data with cardId', () => {
expect(hooks.useCreditRequestData).toHaveBeenCalledWith(cardId);
});
});
describe('render', () => {
describe('rendered CreditContent component', () => {
beforeEach(() => {
component = el.find('CreditContent');
});
test('action.onClick calls createCreditRequest from useCreditRequestData hook', () => {
expect(component.props().action.onClick).toEqual(createCreditRequest);
});
test('action.message is formatted requestCredit message', () => {
expect(component.props().action.message).toEqual(formatMessage(messages.viewDetails));
});
test('message is formatted pending message', () => {
expect(component.props().message).toEqual(
formatMessage(messages.received, { providerName }),
);
});
test('requestData drawn from useCreditRequestData hook', () => {
expect(component.props().requestData).toEqual(requestData);
});
});
});
});