71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { SubstreamViewModifier } from '../../../../src/card-controller/view/modifiers/substream';
|
|
import { createView } from '../../../view/test-utils';
|
|
|
|
describe('SubstreamViewModifier', () => {
|
|
it('should write the override for the selected camera', () => {
|
|
const view = createView({ camera: 'camera' });
|
|
|
|
new SubstreamViewModifier({ stream: 'substream' }).modify(view);
|
|
|
|
expect(view.context?.live?.overrides?.get('camera')).toBe('substream');
|
|
});
|
|
|
|
it('should clear the selected camera override when no substream is given', () => {
|
|
const view = createView({
|
|
camera: 'camera',
|
|
context: { live: { overrides: new Map([['camera', 'substream']]) } },
|
|
});
|
|
|
|
new SubstreamViewModifier().modify(view);
|
|
|
|
expect(view.context?.live?.overrides?.get('camera')).toBeUndefined();
|
|
});
|
|
|
|
it('should write the override for an explicit camera', () => {
|
|
const view = createView({
|
|
camera: 'camera',
|
|
context: { live: { overrides: new Map([['camera', 'substream']]) } },
|
|
});
|
|
|
|
new SubstreamViewModifier({
|
|
stream: 'other-substream',
|
|
camera: 'other-camera',
|
|
}).modify(view);
|
|
|
|
expect(view.context?.live?.overrides?.get('other-camera')).toBe('other-substream');
|
|
expect(view.context?.live?.overrides?.get('camera')).toBe('substream');
|
|
});
|
|
|
|
it('should clear the override for an explicit camera', () => {
|
|
const view = createView({
|
|
camera: 'camera',
|
|
context: { live: { overrides: new Map([['other-camera', 'other-substream']]) } },
|
|
});
|
|
|
|
new SubstreamViewModifier({ camera: 'other-camera' }).modify(view);
|
|
|
|
expect(view.context?.live?.overrides?.get('other-camera')).toBeUndefined();
|
|
});
|
|
|
|
it('should clear the override when the stream equals the camera itself', () => {
|
|
const view = createView({
|
|
camera: 'camera',
|
|
context: { live: { overrides: new Map([['camera', 'substream']]) } },
|
|
});
|
|
|
|
new SubstreamViewModifier({ stream: 'camera' }).modify(view);
|
|
|
|
expect(view.context?.live?.overrides?.get('camera')).toBeUndefined();
|
|
});
|
|
|
|
it('should no-op for a view without a camera', () => {
|
|
const view = createView({ camera: null });
|
|
|
|
new SubstreamViewModifier({ stream: 'substream' }).modify(view);
|
|
|
|
expect(view.context).toBeNull();
|
|
});
|
|
});
|