mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	test(web): routes/Camera
This commit is contained in:
		
							parent
							
								
									5eaf8a5448
								
							
						
					
					
						commit
						52a29ed00a
					
				
							
								
								
									
										60
									
								
								web/src/routes/__tests__/Camera.test.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								web/src/routes/__tests__/Camera.test.jsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | import { h } from 'preact'; | ||||||
|  | import * as AutoUpdatingCameraImage from '../../components/AutoUpdatingCameraImage'; | ||||||
|  | import * as Api from '../../api'; | ||||||
|  | import * as Context from '../../context'; | ||||||
|  | import Camera from '../Camera'; | ||||||
|  | import { fireEvent, render, screen } from '@testing-library/preact'; | ||||||
|  | 
 | ||||||
|  | jest.mock('../../api/baseUrl'); | ||||||
|  | 
 | ||||||
|  | describe('Camera Route', () => { | ||||||
|  |   let mockUsePersistence, mockSetOptions; | ||||||
|  | 
 | ||||||
|  |   beforeEach(() => { | ||||||
|  |     mockSetOptions = jest.fn(); | ||||||
|  |     mockUsePersistence = jest.spyOn(Context, 'usePersistence').mockImplementation(() => [{}, mockSetOptions]); | ||||||
|  |     jest.spyOn(Api, 'useConfig').mockImplementation(() => ({ | ||||||
|  |       data: { cameras: { front: { name: 'front', objects: { track: ['taco', 'cat', 'dog'] } } } }, | ||||||
|  |     })); | ||||||
|  |     jest.spyOn(Api, 'useApiHost').mockImplementation(() => 'http://base-url.local:5000'); | ||||||
|  |     jest.spyOn(AutoUpdatingCameraImage, 'default').mockImplementation(({ searchParams }) => { | ||||||
|  |       return <div data-testid="mock-image">{searchParams.toString()}</div>; | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   test('reads camera feed options from persistence', async () => { | ||||||
|  |     mockUsePersistence.mockReturnValue([ | ||||||
|  |       { | ||||||
|  |         bbox: true, | ||||||
|  |         timestamp: false, | ||||||
|  |         zones: true, | ||||||
|  |         mask: false, | ||||||
|  |         motion: true, | ||||||
|  |         regions: false, | ||||||
|  |       }, | ||||||
|  |       mockSetOptions, | ||||||
|  |     ]); | ||||||
|  |     render(<Camera camera="front" />); | ||||||
|  |     fireEvent.click(screen.queryByText('Show Options')); | ||||||
|  |     expect(screen.queryByTestId('mock-image')).toHaveTextContent( | ||||||
|  |       'bbox=1×tamp=0&zones=1&mask=0&motion=1®ions=0' | ||||||
|  |     ); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   test('updates camera feed options to persistence', async () => { | ||||||
|  |     mockUsePersistence | ||||||
|  |       .mockReturnValueOnce([{}, mockSetOptions]) | ||||||
|  |       .mockReturnValueOnce([{ bbox: true }, mockSetOptions]) | ||||||
|  |       .mockReturnValueOnce([{ bbox: true, timestamp: true }, mockSetOptions]); | ||||||
|  | 
 | ||||||
|  |     render(<Camera camera="front" />); | ||||||
|  | 
 | ||||||
|  |     fireEvent.click(screen.queryByText('Show Options')); | ||||||
|  |     fireEvent.change(screen.queryByTestId('bbox-input'), { target: { checked: true } }); | ||||||
|  |     fireEvent.change(screen.queryByTestId('timestamp-input'), { target: { checked: true } }); | ||||||
|  |     fireEvent.click(screen.queryByText('Hide Options')); | ||||||
|  | 
 | ||||||
|  |     expect(mockSetOptions).toHaveBeenCalledWith({ bbox: true, timestamp: true }); | ||||||
|  |     expect(screen.queryByTestId('mock-image')).toHaveTextContent('bbox=1×tamp=1'); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user