diff --git a/src/card-controller/view/item-manager.ts b/src/card-controller/view/item-manager.ts index bbdfa450..3a9fbb5a 100644 --- a/src/card-controller/view/item-manager.ts +++ b/src/card-controller/view/item-manager.ts @@ -128,7 +128,7 @@ export class ViewItemManager { (cameraID ? toFilename(cameraID) : 'media') + (id ? `_${toFilename(id)}` : '') + (startTime ? `_${format(startTime, `yyyy-MM-dd-HH-mm-ss`)}` : '') + - ('.' + (item.getMediaType() === 'clip' ? 'mp4' : 'jpg')) + ('.' + (ViewItemClassifier.isVideo(item) ? 'mp4' : 'jpg')) ); } diff --git a/tests/card-controller/view/item-manager.test.ts b/tests/card-controller/view/item-manager.test.ts index cdd9455c..7474ed88 100644 --- a/tests/card-controller/view/item-manager.test.ts +++ b/tests/card-controller/view/item-manager.test.ts @@ -238,6 +238,22 @@ describe('ViewItemManager', () => { expect(downloadURL).toHaveBeenCalledWith('foo', 'camera_id.jpg'); }); + it('should generate filename for recording', async () => { + const api = createCardAPI(); + vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS()); + + const manager = new ViewItemManager(api); + const item = new TestViewMedia({ mediaType: ViewMediaType.Recording }); + + vi.mocked(api.getCameraManager().getMediaDownloadPath).mockResolvedValue({ + sign: false, + endpoint: 'foo', + }); + + expect(await manager.download(item)).toBe(true); + expect(downloadURL).toHaveBeenCalledWith('foo', 'camera_id.mp4'); + }); + it('should generate filename for folder without title', async () => { const api = createCardAPI(); vi.mocked(api.getHASSManager().getHASS).mockReturnValue(createHASS());