import React from 'react';
import { render, fireEvent, waitFor, screen } from '@testing-library/react';
import mpPapers from '../../../mocks/constants/mp-papers.json';
import { BibFilter } from '.';
describe('', () => {
it('should render sortable and searchable bib cards', async () => {
render();
expect(screen.getAllByTestId('bib-card').length).toBeGreaterThanOrEqual(100);
const cardsDesc = await screen.findAllByTestId('publication-button');
expect(cardsDesc[0]).toHaveTextContent('2017');
expect(cardsDesc[cardsDesc.length - 1]).toHaveTextContent('2008');
fireEvent.click(screen.getByTestId('sort-button'));
const cardsAsc = await screen.findAllByTestId('publication-button');
await waitFor(() => {
expect(cardsAsc[0]).toHaveTextContent('2008');
expect(cardsAsc[cardsAsc.length - 1]).toHaveTextContent('2017');
});
fireEvent.change(screen.getByRole('searchbox'), { target: { value: 'Patrick' } });
await waitFor(() => {
expect(screen.getAllByTestId('bib-card')).toHaveLength(1);
expect(screen.getByTestId('bib-card-authors')).toHaveTextContent(/Patrick/);
});
fireEvent.change(screen.getByRole('searchbox'), { target: { value: '' } });
await waitFor(() => {
expect(screen.getAllByTestId('bib-card').length).toBeGreaterThanOrEqual(100);
});
});
});
const defaultProps = {
bibEntries: mpPapers,
preventOpenAccessFetch: true
};