mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +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