fix: Ensure a bare ptz_digital action resets the zoom (#2635)

- Closes: #2632
This commit is contained in:
Dermot Duffy
2026-07-29 23:18:06 -07:00
committed by GitHub
parent e9e6d9f833
commit a736f3dfaf
14 changed files with 258 additions and 113 deletions
@@ -4,6 +4,7 @@ import { mock } from 'vitest-mock-extended';
import type { CardController } from '../../../src/card-controller/controller';
import type { ViewFactory } from '../../../src/card-controller/view/factory';
import { MergeContextViewModifier } from '../../../src/card-controller/view/modifiers/merge-context';
import { SetQueryViewModifier } from '../../../src/card-controller/view/modifiers/set-query';
import type {
QueryExecutorOptions,
@@ -131,6 +132,26 @@ it('should set view with merged context', () => {
expect(manager.getView()?.context).toEqual(context);
});
it('should set view with modifiers', () => {
const api = createInitializedCardAPI();
const factory = mock<ViewFactory>();
const manager = new ViewManager(api, { viewFactory: factory });
const modifier = new MergeContextViewModifier({ timeline: {} });
// Applying modifiers with no existing view does nothing.
manager.setViewWithModifiers([modifier]);
expect(manager.getView()).toBeNull();
factory.getViewDefault.mockReturnValue(createView({ view: 'live', camera: 'camera' }));
manager.setViewDefault();
manager.setViewWithModifiers([modifier]);
expect(manager.getView()?.camera).toBe('camera');
expect(manager.getView()?.view).toBe('live');
expect(manager.getView()?.context).toEqual({ timeline: {} });
});
it('should return epoch', () => {
const factory = mock<ViewFactory>();
const manager = new ViewManager(createCardAPI(), { viewFactory: factory });