Files
advanced-camera-card/tests/card-controller/view/test-utils.ts
T

60 lines
1.8 KiB
TypeScript

import { expect, vi } from 'vitest';
import type { CardController } from '../../../src/card-controller/controller';
import { applyViewModifiers } from '../../../src/card-controller/view/modifiers';
import type { ViewManagerInterface } from '../../../src/card-controller/view/types';
import type { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import type { View } from '../../../src/view/view';
import {
createCameraManager,
createCapabilities,
createStore,
} from '../../camera-manager/test-utils';
import { createConfig } from '../../config/test-utils';
import { createCardAPI } from '../../test-utils';
export const createPopulatedAPI = (
config?: RawAdvancedCameraCardConfig,
): CardController => {
const api = createCardAPI();
const store = createStore([
{
cameraID: 'camera.office',
capabilities: createCapabilities({
live: true,
snapshots: true,
clips: true,
recordings: true,
reviews: true,
substream: true,
}),
},
{
cameraID: 'camera.kitchen',
capabilities: createCapabilities({
live: true,
snapshots: true,
clips: true,
recordings: true,
reviews: true,
substream: true,
}),
},
]);
vi.mocked(api.getCameraManager).mockReturnValue(createCameraManager(store));
vi.mocked(api.getConfigManager().getConfig).mockReturnValue(createConfig(config));
return api;
};
// Apply the modifiers from the nth `setViewWithModifiers` call to the given
// view, so that a caller can assert on the resulting view.
export const applySetViewModifiers = (
viewManager: ViewManagerInterface,
view: View,
n = 0,
): View => {
const mock = vi.mocked(viewManager.setViewWithModifiers).mock;
expect(mock.calls.length).greaterThan(n);
return applyViewModifiers(view, mock.calls[n][0]);
};