Allow camera capabilities to be configured.

This commit is contained in:
Dermot Duffy
2024-03-26 21:00:15 -07:00
parent 0c7260d95a
commit 95c44adcf1
63 changed files with 2308 additions and 1447 deletions
+25 -37
View File
@@ -131,16 +131,6 @@ describe('FrigateCamera', () => {
});
describe('should detect capabilities', () => {
const nonBirdseyeBaseCapabilities = {
canFavoriteEvents: true,
canFavoriteRecordings: true,
canSeek: true,
supportsClips: true,
supportsSnapshots: true,
supportsRecordings: true,
supportsTimeline: true,
};
it('basic non-birdseye', async () => {
const camera = new FrigateCamera(
createCameraConfig({
@@ -153,7 +143,13 @@ describe('FrigateCamera', () => {
await camera.initialize(createHASS(), mock<EntityRegistryManager>());
expect(camera.getCapabilities()).toEqual(nonBirdseyeBaseCapabilities);
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();
expect(camera.getCapabilities()?.has('live')).toBeTruthy();
expect(camera.getCapabilities()?.has('snapshots')).toBeTruthy();
expect(camera.getCapabilities()?.has('recordings')).toBeTruthy();
expect(vi.mocked(getPTZInfo)).toBeCalled();
});
@@ -169,15 +165,13 @@ describe('FrigateCamera', () => {
await camera.initialize(createHASS(), mock<EntityRegistryManager>());
expect(camera.getCapabilities()).toEqual({
...nonBirdseyeBaseCapabilities,
canFavoriteEvents: false,
canFavoriteRecordings: false,
supportsClips: false,
supportsSnapshots: false,
supportsRecordings: false,
supportsTimeline: false,
});
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();
expect(camera.getCapabilities()?.has('live')).toBeTruthy();
expect(camera.getCapabilities()?.has('snapshots')).toBeFalsy();
expect(camera.getCapabilities()?.has('recordings')).toBeFalsy();
expect(vi.mocked(getPTZInfo)).not.toBeCalled();
});
@@ -196,9 +190,7 @@ describe('FrigateCamera', () => {
vi.mocked(getPTZInfo).mockRejectedValue(new Error());
await camera.initialize(createHASS(), mock<EntityRegistryManager>());
expect(camera.getCapabilities()).toEqual({
...nonBirdseyeBaseCapabilities,
});
expect(camera.getCapabilities()?.has('ptz')).toBeFalsy();
expect(consoleSpy).toBeCalled();
});
@@ -220,13 +212,11 @@ describe('FrigateCamera', () => {
});
await camera.initialize(createHASS(), mock<EntityRegistryManager>());
expect(camera.getCapabilities()).toEqual({
...nonBirdseyeBaseCapabilities,
ptz: {
panTilt: ['continuous'],
zoom: ['continuous'],
presets: ['preset01'],
},
expect(camera.getCapabilities()?.has('ptz')).toBeTruthy();
expect(camera.getCapabilities()?.getPTZCapabilities()).toEqual({
panTilt: ['continuous'],
zoom: ['continuous'],
presets: ['preset01'],
});
});
@@ -248,13 +238,11 @@ describe('FrigateCamera', () => {
});
await camera.initialize(createHASS(), mock<EntityRegistryManager>());
expect(camera.getCapabilities()).toEqual({
...nonBirdseyeBaseCapabilities,
ptz: {
panTilt: ['relative'],
zoom: ['relative'],
presets: ['preset01'],
},
expect(camera.getCapabilities()?.has('ptz')).toBeTruthy();
expect(camera.getCapabilities()?.getPTZCapabilities()).toEqual({
panTilt: ['relative'],
zoom: ['relative'],
presets: ['preset01'],
});
});
});