@@ -9,12 +9,9 @@ import { ActionsExecutor } from '../../../src/card-controller/actions/types';
|
||||
import { StateWatcher } from '../../../src/card-controller/hass/state-watcher';
|
||||
import { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
|
||||
import { CameraTriggerEventType } from '../../../src/config/schema/cameras';
|
||||
import {
|
||||
Entity,
|
||||
EntityRegistryManager,
|
||||
} from '../../../src/utils/ha/registry/entity/types';
|
||||
import { Entity, EntityRegistryManager } from '../../../src/ha/registry/entity/types';
|
||||
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
|
||||
import { createCameraConfig, createHASS, createRegistryEntity } from '../../test-utils';
|
||||
import { EntityRegistryManagerMock } from '../../utils/ha/registry/entity/mock';
|
||||
|
||||
vi.mock('../../../src/camera-manager/frigate/requests');
|
||||
|
||||
@@ -91,8 +88,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: entityRegistryManager,
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getConfig().frigate.camera_name).toBe('fnt_dr');
|
||||
});
|
||||
expect(camera.getConfig().frigate.camera_name).toBe('fnt_dr');
|
||||
});
|
||||
|
||||
it('with a camera_entity without camera_name match', async () => {
|
||||
@@ -115,8 +112,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: entityRegistryManager,
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getConfig().frigate.camera_name).toBeUndefined();
|
||||
});
|
||||
expect(camera.getConfig().frigate.camera_name).toBeUndefined();
|
||||
});
|
||||
|
||||
it('with a camera_entity without platform match', async () => {
|
||||
@@ -139,8 +136,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: entityRegistryManager,
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getConfig().frigate.camera_name).toBeUndefined();
|
||||
});
|
||||
expect(camera.getConfig().frigate.camera_name).toBeUndefined();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -161,8 +158,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getCapabilities()?.has('favorite-events')).toBeTruthy();
|
||||
});
|
||||
expect(camera.getCapabilities()?.has('favorite-events')).toBeTruthy();
|
||||
expect(camera.getCapabilities()?.has('favorite-recordings')).toBeFalsy();
|
||||
expect(camera.getCapabilities()?.has('seek')).toBeTruthy();
|
||||
expect(camera.getCapabilities()?.has('clips')).toBeTruthy();
|
||||
@@ -188,8 +185,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getCapabilities()?.has('favorite-events')).toBeFalsy();
|
||||
});
|
||||
expect(camera.getCapabilities()?.has('favorite-events')).toBeFalsy();
|
||||
expect(camera.getCapabilities()?.has('favorite-recordings')).toBeFalsy();
|
||||
expect(camera.getCapabilities()?.has('seek')).toBeFalsy();
|
||||
expect(camera.getCapabilities()?.has('clips')).toBeFalsy();
|
||||
@@ -248,8 +245,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getCapabilities()?.has('ptz')).toBeTruthy();
|
||||
});
|
||||
expect(camera.getCapabilities()?.has('ptz')).toBeTruthy();
|
||||
expect(camera.getCapabilities()?.getPTZCapabilities()).toEqual({
|
||||
left: ['continuous'],
|
||||
right: ['continuous'],
|
||||
@@ -284,8 +281,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: mock<FrigateEventWatcher>(),
|
||||
}),
|
||||
expect(camera.getCapabilities()?.has('ptz')).toBeTruthy();
|
||||
});
|
||||
expect(camera.getCapabilities()?.has('ptz')).toBeTruthy();
|
||||
expect(camera.getCapabilities()?.getPTZCapabilities()).toEqual({
|
||||
left: [],
|
||||
right: [],
|
||||
@@ -319,13 +316,13 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: eventWatcher,
|
||||
}),
|
||||
expect(eventWatcher.subscribe).toBeCalledWith(
|
||||
hass,
|
||||
expect.objectContaining({
|
||||
instanceID: 'CLIENT_ID',
|
||||
}),
|
||||
);
|
||||
});
|
||||
expect(eventWatcher.subscribe).toBeCalledWith(
|
||||
hass,
|
||||
expect.objectContaining({
|
||||
instanceID: 'CLIENT_ID',
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('should not subscribe with no trigger events', async () => {
|
||||
@@ -349,8 +346,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: eventWatcher,
|
||||
}),
|
||||
expect(eventWatcher.subscribe).not.toBeCalled();
|
||||
});
|
||||
expect(eventWatcher.subscribe).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('should not subscribe without trigger capability', async () => {
|
||||
@@ -395,8 +392,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: eventWatcher,
|
||||
}),
|
||||
expect(eventWatcher.subscribe).not.toBeCalled();
|
||||
});
|
||||
expect(eventWatcher.subscribe).not.toBeCalled();
|
||||
});
|
||||
|
||||
it('should unsubscribe on destroy', async () => {
|
||||
@@ -416,8 +413,8 @@ describe('FrigateCamera', () => {
|
||||
entityRegistryManager: mock<EntityRegistryManager>(),
|
||||
stateWatcher: mock<StateWatcher>(),
|
||||
frigateEventWatcher: eventWatcher,
|
||||
}),
|
||||
expect(eventWatcher.unsubscribe).not.toBeCalled();
|
||||
});
|
||||
expect(eventWatcher.unsubscribe).not.toBeCalled();
|
||||
|
||||
await camera.destroy();
|
||||
expect(eventWatcher.unsubscribe).toBeCalled();
|
||||
|
||||
@@ -1,31 +1,32 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { RecordingSegmentsCache, RequestCache } from '../../../src/camera-manager/cache';
|
||||
import { RecordingSegmentsCache } from '../../../src/camera-manager/cache';
|
||||
import { FrigateCameraManagerEngine } from '../../../src/camera-manager/frigate/engine-frigate';
|
||||
import {
|
||||
FrigateEventViewMedia,
|
||||
FrigateRecordingViewMedia,
|
||||
} from '../../../src/camera-manager/frigate/media';
|
||||
import { FrigateEvent, eventSchema } from '../../../src/camera-manager/frigate/types.js';
|
||||
import { CameraManagerRequestCache } from '../../../src/camera-manager/types';
|
||||
import { StateWatcher } from '../../../src/card-controller/hass/state-watcher';
|
||||
import { CameraConfig } from '../../../src/config/schema/cameras';
|
||||
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
|
||||
import { RawAdvancedCameraCardConfig } from '../../../src/config/types';
|
||||
import { ViewMedia } from '../../../src/view/media';
|
||||
import { ViewMedia, ViewMediaType } from '../../../src/view/item';
|
||||
import { EntityRegistryManagerMock } from '../../ha/registry/entity/mock';
|
||||
import { TestViewMedia, createCameraConfig, createHASS } from '../../test-utils';
|
||||
import { EntityRegistryManagerMock } from '../../utils/ha/registry/entity/mock';
|
||||
|
||||
const createEngine = (): FrigateCameraManagerEngine => {
|
||||
return new FrigateCameraManagerEngine(
|
||||
new EntityRegistryManagerMock(),
|
||||
new StateWatcher(),
|
||||
new RecordingSegmentsCache(),
|
||||
new RequestCache(),
|
||||
new CameraManagerRequestCache(),
|
||||
);
|
||||
};
|
||||
|
||||
const createRecordingMedia = (): FrigateRecordingViewMedia => {
|
||||
return new FrigateRecordingViewMedia(
|
||||
'recording',
|
||||
ViewMediaType.Recording,
|
||||
'camera-1',
|
||||
{
|
||||
cameraID: 'camera-1',
|
||||
@@ -58,7 +59,7 @@ const createEvent = (): FrigateEvent => {
|
||||
|
||||
const createClipMedia = (): FrigateEventViewMedia => {
|
||||
return new FrigateEventViewMedia(
|
||||
'clip',
|
||||
ViewMediaType.Clip,
|
||||
'camera-1',
|
||||
createEvent(),
|
||||
'event-clip-content-id',
|
||||
@@ -68,7 +69,7 @@ const createClipMedia = (): FrigateEventViewMedia => {
|
||||
|
||||
const createSnapshotMedia = (): FrigateEventViewMedia => {
|
||||
return new FrigateEventViewMedia(
|
||||
'snapshot',
|
||||
ViewMediaType.Snapshot,
|
||||
'camera-1',
|
||||
createEvent(),
|
||||
'event-snapshot-content-id',
|
||||
@@ -133,7 +134,9 @@ describe('getMediaDownloadPath', () => {
|
||||
const endpoint = await createEngine().getMediaDownloadPath(
|
||||
createHASS(),
|
||||
createFrigateCameraConfig(),
|
||||
new ViewMedia('clip', 'camera-1'),
|
||||
new ViewMedia(ViewMediaType.Clip, {
|
||||
cameraID: 'camera-1',
|
||||
}),
|
||||
);
|
||||
expect(endpoint).toBeNull();
|
||||
});
|
||||
@@ -247,9 +250,9 @@ describe('getCameraEndpoints', () => {
|
||||
});
|
||||
|
||||
describe('with event media type', () => {
|
||||
it.each([['clip' as const], ['snapshot' as const]])(
|
||||
it.each([[ViewMediaType.Clip], [ViewMediaType.Snapshot]])(
|
||||
'%s',
|
||||
(mediaType: 'clip' | 'snapshot') => {
|
||||
(mediaType: ViewMediaType) => {
|
||||
const endpoints = createEngine().getCameraEndpoints(
|
||||
createCameraConfig({
|
||||
frigate: {
|
||||
@@ -284,7 +287,10 @@ describe('getCameraEndpoints', () => {
|
||||
},
|
||||
}),
|
||||
{
|
||||
media: new TestViewMedia({ mediaType: 'recording', startTime: startTime }),
|
||||
media: new TestViewMedia({
|
||||
mediaType: ViewMediaType.Recording,
|
||||
startTime: startTime,
|
||||
}),
|
||||
},
|
||||
);
|
||||
|
||||
@@ -306,7 +312,7 @@ describe('getCameraEndpoints', () => {
|
||||
},
|
||||
}),
|
||||
{
|
||||
media: new TestViewMedia({ mediaType: 'recording' }),
|
||||
media: new TestViewMedia({ mediaType: ViewMediaType.Recording }),
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ import {
|
||||
retainResultSchema,
|
||||
} from '../../../src/camera-manager/frigate/types';
|
||||
import { RecordingSegment } from '../../../src/camera-manager/types';
|
||||
import { homeAssistantWSRequest } from '../../../src/utils/ha/ws-request';
|
||||
import { homeAssistantWSRequest } from '../../../src/ha/ws-request';
|
||||
import { createFrigateEvent, createHASS } from '../../test-utils';
|
||||
|
||||
vi.mock('../../../src/utils/ha/ws-request');
|
||||
vi.mock('../../../src/ha/ws-request');
|
||||
|
||||
describe('frigate requests', () => {
|
||||
afterEach(() => {
|
||||
|
||||
Reference in New Issue
Block a user