75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
getEditorCameraTitle,
|
|
getEditorFolderTitle,
|
|
getEditorTriggerEventTitle,
|
|
} from '../../../src/components-lib/editor/titles';
|
|
import { createHASS, createStateEntity } from '../../test-utils';
|
|
|
|
describe('getEditorCameraTitle', () => {
|
|
it('should prefer the configured title', () => {
|
|
expect(getEditorCameraTitle(0, { title: 'Front', id: 'front' })).toBe('Front');
|
|
});
|
|
|
|
it('should use the camera entity title', () => {
|
|
const hass = createHASS({
|
|
'camera.front': createStateEntity({
|
|
attributes: { friendly_name: 'Front Door' },
|
|
}),
|
|
});
|
|
expect(getEditorCameraTitle(0, { camera_entity: 'camera.front' }, hass)).toBe(
|
|
'Front Door',
|
|
);
|
|
});
|
|
|
|
it('should use the webrtc_card entity', () => {
|
|
expect(getEditorCameraTitle(0, { webrtc_card: { entity: 'camera.front' } })).toBe(
|
|
'camera.front',
|
|
);
|
|
});
|
|
|
|
it('should prettify the frigate camera name', () => {
|
|
expect(getEditorCameraTitle(0, { frigate: { camera_name: 'front_door' } })).toBe(
|
|
'Front Door',
|
|
);
|
|
});
|
|
|
|
it('should use the camera id', () => {
|
|
expect(getEditorCameraTitle(0, { id: 'front' })).toBe('front');
|
|
});
|
|
|
|
it('should fall back to an indexed label', () => {
|
|
expect(getEditorCameraTitle(2, {})).toBe('Camera #2');
|
|
expect(getEditorCameraTitle(2, 'NOT_AN_OBJECT')).toBe('Camera #2');
|
|
});
|
|
});
|
|
|
|
describe('getEditorFolderTitle', () => {
|
|
it('should prefer the configured title', () => {
|
|
expect(getEditorFolderTitle(0, { title: 'Snapshots', id: 'snaps' })).toBe(
|
|
'Snapshots',
|
|
);
|
|
});
|
|
|
|
it('should use the folder id', () => {
|
|
expect(getEditorFolderTitle(0, { id: 'snaps' })).toBe('snaps');
|
|
});
|
|
|
|
it('should fall back to an indexed label', () => {
|
|
expect(getEditorFolderTitle(1, {})).toBe('Folder #1');
|
|
expect(getEditorFolderTitle(1, 'NOT_AN_OBJECT')).toBe('Folder #1');
|
|
});
|
|
});
|
|
|
|
describe('getEditorTriggerEventTitle', () => {
|
|
it('should prefer the event type', () => {
|
|
expect(getEditorTriggerEventTitle(0, { event_type: 'motion' })).toBe('motion');
|
|
});
|
|
|
|
it('should fall back to an indexed label', () => {
|
|
expect(getEditorTriggerEventTitle(3, {})).toBe('Event #3');
|
|
expect(getEditorTriggerEventTitle(3, 'NOT_AN_OBJECT')).toBe('Event #3');
|
|
});
|
|
});
|