From a1b21a87a1fb7683fef4ee381b05f7aa2672881f Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sun, 13 Nov 2022 11:50:25 -0700 Subject: [PATCH] Catch case where recording is not enabled (#4069) * Catch case where recording is not enabled * Add test for Record to catch this * Add test for Record to catch this --- web/src/routes/Recording.jsx | 4 +++ web/src/routes/__tests__/Recording.test.jsx | 27 +++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 web/src/routes/__tests__/Recording.test.jsx 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(); + expect(screen.queryByLabelText('Loading…')).toBeInTheDocument(); + }); + + + + test('shows no recordings warning', async () => { + render(); + + await waitForElementToBeRemoved(() => screen.queryByLabelText('Loading…')); + + expect(screen.queryAllByText('No Recordings Found')).toHaveLength(0); + }); +});