Add out-of-the-box Frigate PTZ support.

This commit is contained in:
Dermot Duffy
2023-10-29 14:10:41 -07:00
parent fa43d2e439
commit e12912fa85
74 changed files with 3981 additions and 1514 deletions
+56 -1
View File
@@ -23,7 +23,6 @@ import {
} from '../test-utils';
vi.mock('../../src/utils/action.js');
vi.mock('../../src/camera-manager/manager.js');
const createAction = (
action: Record<string, unknown>,
@@ -708,6 +707,62 @@ describe('ActionsManager.executeAction', () => {
expect(api.getViewManager().setViewWithNewDisplayMode).toBeCalledWith('grid');
});
describe('should handle ptz action', () => {
it('with selected camera', async () => {
const api = createCardAPI();
const manager = new ActionsManager(api);
vi.mocked(api.getViewManager().getView).mockReturnValue(
createView({ camera: 'camera.office' }),
);
await manager.executeAction(
createAction({
frigate_card_action: 'ptz',
ptz_action: 'left',
})!,
);
expect(api.getCameraManager().executePTZAction).toBeCalledWith(
'camera.office',
'left',
{
phase: undefined,
preset: undefined,
},
);
});
it('without selected camera', async () => {
const api = createCardAPI();
const manager = new ActionsManager(api);
await manager.executeAction(
createAction({
frigate_card_action: 'ptz',
ptz_action: 'left',
})!,
);
expect(api.getCameraManager().executePTZAction).not.toBeCalled();
});
});
it('should handle show_ptz action', async () => {
const api = createCardAPI();
const manager = new ActionsManager(api);
await manager.executeAction(
createAction({
frigate_card_action: 'show_ptz',
show_ptz: true,
})!,
);
expect(api.getViewManager().setViewWithNewContext).toBeCalledWith(
expect.objectContaining({ live: { ptzVisible: true } }),
);
});
it('should handle unknown action', async () => {
const manager = new ActionsManager(createCardAPI());