mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
test(web): NavigationDrawer
This commit is contained in:
parent
ece6c1203c
commit
f70fb12c3d
@ -12,9 +12,10 @@ export default function NavigationDrawer({ children, header }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
{showDrawer ? <div key="scrim" className="fixed inset-0 z-20" onClick={handleDismiss} /> : ''}
|
{showDrawer ? <div data-testid="scrim" key="scrim" className="fixed inset-0 z-20" onClick={handleDismiss} /> : ''}
|
||||||
<div
|
<div
|
||||||
key="drawer"
|
key="drawer"
|
||||||
|
data-testid="drawer"
|
||||||
className={`fixed left-0 top-0 bottom-0 lg:sticky max-h-screen flex flex-col w-64 text-gray-700 bg-white dark:text-gray-200 dark:bg-gray-900 flex-shrink-0 border-r border-gray-200 dark:border-gray-700 shadow lg:shadow-none z-20 lg:z-0 transform ${
|
className={`fixed left-0 top-0 bottom-0 lg:sticky max-h-screen flex flex-col w-64 text-gray-700 bg-white dark:text-gray-200 dark:bg-gray-900 flex-shrink-0 border-r border-gray-200 dark:border-gray-700 shadow lg:shadow-none z-20 lg:z-0 transform ${
|
||||||
!showDrawer ? '-translate-x-full lg:translate-x-0' : 'translate-x-0'
|
!showDrawer ? '-translate-x-full lg:translate-x-0' : 'translate-x-0'
|
||||||
} transition-transform duration-300`}
|
} transition-transform duration-300`}
|
||||||
|
61
web/src/components/__tests__/NavigationDrawer.test.jsx
Normal file
61
web/src/components/__tests__/NavigationDrawer.test.jsx
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
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);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user