import * as React from 'react';
import axe from '../../../../axe-helper';
import { cleanup, render, screen } from '@testing-library/react';
import ZopaFooter from './ZopaFooter';
import { mockDate, MockDate } from '../../../helpers/test/date';
const fixedDate = new Date('2025-02-28T09:39:59');
describe('', () => {
let date: MockDate;
beforeEach(() => {
date = mockDate(new Date(fixedDate));
date.startMocking();
});
afterEach(() => {
date.finishMocking();
cleanup();
});
it('renders correct urls with baseUrl prop', async () => {
render();
const firstLink = screen.getByText('Car finance');
const logoLink = screen.getByTitle('Logo');
expect(firstLink).toHaveAttribute('href', 'http://whatever.com/car-finance');
expect(logoLink).toHaveAttribute('href', 'http://whatever.com');
});
// This has to go before the next test, because react-testing-library isn't smart enough to clean up after itself by default
// unmounting or cleanup has no effect
// see: https://github.com/testing-library/react-testing-library/issues/716#issuecomment-688120431
// none of the solutions other than swapping the order of the tests seems to work here
it('allows a user to render a custom main legal block', () => {
render();
const expectedText = screen.getByText('Hello main legal copy');
const unexpectedText = screen.queryAllByText(
/Zopa Bank Limited is authorised by the Prudential Regulation Authority/,
);
expect(expectedText).toBeDefined();
expect(unexpectedText.length).toBe(0);
});
it('allows a user to render a multiline custom main legal block', () => {
render();
const expectedText1 = screen.getByText('Hello Line1');
const expectedText2 = screen.getByText('Hello Line2');
expect(expectedText1).toBeDefined();
expect(expectedText2).toBeDefined();
});
it('renders the component with no a11y violations', async () => {
const { container } = render();
expect(container.firstChild).toMatchSnapshot();
const results = await axe(container.innerHTML);
expect(results).toHaveNoViolations();
});
});