mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-04-14 01:17:50 +02:00
62 lines
2.2 KiB
JavaScript
62 lines
2.2 KiB
JavaScript
import { h } from 'preact';
|
|
import * as Context from '../../context';
|
|
import NavigationDrawer, { Destination } from '../NavigationDrawer';
|
|
import { fireEvent, render, screen } from '@testing-library/preact';
|
|
|
|
describe('NavigationDrawer', () => {
|
|
let useDrawer, setShowDrawer;
|
|
|
|
beforeEach(() => {
|
|
setShowDrawer = jest.fn();
|
|
useDrawer = jest.spyOn(Context, 'useDrawer').mockImplementation(() => ({ showDrawer: true, setShowDrawer }));
|
|
});
|
|
|
|
test('renders a navigation drawer', async () => {
|
|
render(
|
|
<NavigationDrawer>
|
|
<div data-testid="children">Hello</div>
|
|
</NavigationDrawer>
|
|
);
|
|
expect(screen.queryByTestId('children')).toHaveTextContent('Hello');
|
|
expect(screen.queryByTestId('drawer').classList.contains('translate-x-full')).toBe(false);
|
|
expect(screen.queryByTestId('drawer').classList.contains('translate-x-0')).toBe(true);
|
|
});
|
|
|
|
test('is dismissed when the scrim is clicked', async () => {
|
|
useDrawer
|
|
.mockReturnValueOnce({ showDrawer: true, setShowDrawer })
|
|
.mockReturnValueOnce({ showDrawer: false, setShowDrawer });
|
|
render(<NavigationDrawer />);
|
|
fireEvent.click(screen.queryByTestId('scrim'));
|
|
expect(setShowDrawer).toHaveBeenCalledWith(false);
|
|
});
|
|
|
|
test('is not visible when not set to show', async () => {
|
|
useDrawer.mockReturnValue({ showDrawer: false, setShowDrawer });
|
|
render(<NavigationDrawer />);
|
|
expect(screen.queryByTestId('scrim')).not.toBeInTheDocument();
|
|
expect(screen.queryByTestId('drawer').classList.contains('-translate-x-full')).toBe(true);
|
|
expect(screen.queryByTestId('drawer').classList.contains('translate-x-0')).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('Destination', () => {
|
|
let setShowDrawer;
|
|
|
|
beforeEach(() => {
|
|
setShowDrawer = jest.fn();
|
|
jest.spyOn(Context, 'useDrawer').mockImplementation(() => ({ showDrawer: true, setShowDrawer }));
|
|
});
|
|
|
|
test('dismisses the drawer moments after being clicked', async () => {
|
|
render(
|
|
<NavigationDrawer>
|
|
<Destination href="/tacos" text="Tacos" />
|
|
</NavigationDrawer>
|
|
);
|
|
fireEvent.click(screen.queryByText('Tacos'));
|
|
jest.runAllTimers();
|
|
expect(setShowDrawer).toHaveBeenCalledWith(false);
|
|
});
|
|
});
|