import React from 'react';
import { expect } from 'chai';
import { render, screen, cleanup } from '@testing-library/react';
import { ErrorSummary, WarningSummary } from './error-warning-summary';
function renderSummary(
Component: typeof ErrorSummary | typeof WarningSummary,
errorOrWarnings: string[]
) {
if (Component === ErrorSummary) {
return render();
}
return render();
}
describe('ErrorSummary/WarningSummary Component', function () {
afterEach(function () {
cleanup();
});
// eslint-disable-next-line mocha/no-setup-in-describe
[ErrorSummary, WarningSummary].forEach((Summary) => {
it('renders a single error', function () {
renderSummary(Summary, ['this is an error.']);
expect(screen.getByText('this is an error.')).to.be.visible;
});
it('renders 2 errors', function () {
renderSummary(Summary, ['first error', 'second error']);
expect(screen.getByText('first error')).to.be.visible;
expect(screen.getByText('second error')).to.be.visible;
});
it('renders 3 errors as tooltip', function () {
renderSummary(Summary, ['first error', 'second error', 'third error']);
expect(screen.getByText(/first error, and other 2 +problems\./)).to.be
.visible;
expect(screen.getByText('View all')).to.be.visible;
});
it('strips "." at the end of first error', function () {
renderSummary(Summary, ['first error.', 'second error', 'third error']);
expect(screen.getByText(/first error, +and/)).to.be.visible;
});
});
});