import React from 'react';
import { screen, within } from '@testing-library/react';
import App from 'components/App';
import { render } from 'lib/testHelpers';
import userEvent from '@testing-library/user-event';
const burgerButtonOptions = { name: 'burger' };
const logoutButtonOptions = { name: 'Log out' };
jest.mock('components/Nav/Nav', () => () =>
Navigation
);
describe('App', () => {
beforeEach(() => {
render(, {
initialEntries: ['/'],
});
});
it('correctly renders header', () => {
const header = screen.getByLabelText('Page Header');
expect(header).toBeInTheDocument();
expect(within(header).getByText('UI for Apache Kafka')).toBeInTheDocument();
expect(within(header).getAllByRole('separator').length).toEqual(3);
expect(
within(header).getByRole('button', burgerButtonOptions)
).toBeInTheDocument();
expect(
within(header).getByRole('button', logoutButtonOptions)
).toBeInTheDocument();
});
it('handle burger click correctly', () => {
const burger = within(screen.getByLabelText('Page Header')).getByRole(
'button',
burgerButtonOptions
);
const overlay = screen.getByLabelText('Overlay');
expect(screen.getByLabelText('Sidebar')).toBeInTheDocument();
expect(overlay).toBeInTheDocument();
expect(overlay).toHaveStyleRule('visibility: hidden');
expect(burger).toHaveStyleRule('display: none');
userEvent.click(burger);
expect(overlay).toHaveStyleRule('visibility: visible');
});
it('Renders navigation', async () => {
expect(screen.getByText('Navigation')).toBeInTheDocument();
});
});