Files
advanced-camera-card/tests/card-controller/view/modifiers/zoom-request.test.ts
T

47 lines
1.4 KiB
TypeScript

import { expect, it } from 'vitest';
import { ZoomRequestViewModifier } from '../../../../src/card-controller/view/modifiers/zoom-request';
import { createView } from '../../../view/test-utils';
it('should write a request when the target has no zoom context', () => {
const view = createView();
new ZoomRequestViewModifier('target', { zoom: 3 }).modify(view);
expect(view.context?.zoom?.target.requested).toEqual({ zoom: 3 });
});
it('should preserve the observed settings of the target', () => {
const observed = {
pan: { x: 1, y: 2 },
zoom: 3,
isDefault: false,
unzoomed: false,
};
const view = createView({ context: { zoom: { target: { observed } } } });
new ZoomRequestViewModifier('target', { zoom: 4 }).modify(view);
expect(view.context?.zoom?.target.observed).toEqual(observed);
});
it('should replace an earlier request rather than merge into it', () => {
const view = createView({
context: { zoom: { target: { requested: { zoom: 3, pan: { x: 1, y: 2 } } } } },
});
new ZoomRequestViewModifier('target', { pan: { x: 5, y: 6 } }).modify(view);
expect(view.context?.zoom?.target.requested).toEqual({ pan: { x: 5, y: 6 } });
});
it('should allow an empty request to erase an earlier request', () => {
const view = createView({
context: { zoom: { target: { requested: { zoom: 3 } } } },
});
new ZoomRequestViewModifier('target', {}).modify(view);
expect(view.context?.zoom?.target.requested).toEqual({});
});