47 lines
1.4 KiB
TypeScript
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({});
|
|
});
|