diff --git a/web/src/routes/Recording.jsx b/web/src/routes/Recording.jsx index 3c8607833..1b018138b 100644 --- a/web/src/routes/Recording.jsx +++ b/web/src/routes/Recording.jsx @@ -54,6 +54,10 @@ export default function Recording({ camera, date, hour = '00', minute = '00', se const selectedDayRecordingData = recordingsSummary.find((s) => !date || s.day === date); + if (!selectedDayRecordingData) { + return []; + } + const [year, month, day] = selectedDayRecordingData.day.split('-'); return selectedDayRecordingData.hours .map((h) => { diff --git a/web/src/routes/__tests__/Recording.test.jsx b/web/src/routes/__tests__/Recording.test.jsx new file mode 100644 index 000000000..dfaa3d167 --- /dev/null +++ b/web/src/routes/__tests__/Recording.test.jsx @@ -0,0 +1,27 @@ +import { h } from 'preact'; +import * as CameraImage from '../../components/CameraImage'; +import * as Mqtt from '../../api/mqtt'; +import Cameras from '../Cameras'; +import { render, screen, waitForElementToBeRemoved } from 'testing-library'; + +describe('Recording Route', () => { + beforeEach(() => { + jest.spyOn(CameraImage, 'default').mockImplementation(() =>
); + jest.spyOn(Mqtt, 'useMqtt').mockImplementation(() => ({ value: { payload: 'OFF' }, send: jest.fn() })); + }); + + test('shows an ActivityIndicator if not yet loaded', async () => { + render(