refactor: Break apart monolithic configuration schema (#1977)

[skip ci]
This commit is contained in:
Dermot Duffy
2025-03-22 15:06:11 -07:00
committed by GitHub
parent 92fc8dd844
commit d6225fefda
266 changed files with 2789 additions and 2562 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ import { Camera } from '../../src/camera-manager/camera.js';
import { GenericCameraManagerEngine } from '../../src/camera-manager/generic/engine-generic.js';
import { CameraProxyConfig } from '../../src/camera-manager/types.js';
import { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher.js';
import { ProxyConfig } from '../../src/config/types.js';
import { ProxyConfig } from '../../src/config/schema/cameras.js';
import {
callStateWatcherCallback,
createCameraConfig,
+2 -2
View File
@@ -4,9 +4,10 @@ import { CameraManagerEngineFactory } from '../../src/camera-manager/engine-fact
import { FrigateCameraManagerEngine } from '../../src/camera-manager/frigate/engine-frigate';
import { GenericCameraManagerEngine } from '../../src/camera-manager/generic/engine-generic';
import { MotionEyeCameraManagerEngine } from '../../src/camera-manager/motioneye/engine-motioneye';
import { ReolinkCameraManagerEngine } from '../../src/camera-manager/reolink/engine-reolink.js';
import { Engine } from '../../src/camera-manager/types.js';
import { StateWatcherSubscriptionInterface } from '../../src/card-controller/hass/state-watcher.js';
import { CardWideConfig } from '../../src/config/types.js';
import { CardWideConfig } from '../../src/config/schema/types.js';
import {
createEntityRegistryCache,
EntityRegistryManager,
@@ -18,7 +19,6 @@ import {
createRegistryEntity,
createStateEntity,
} from '../test-utils';
import { ReolinkCameraManagerEngine } from '../../src/camera-manager/reolink/engine-reolink.js';
vi.mock('../../src/utils/ha/entity-registry');
vi.mock('../../src/utils/ha/entity-registry/cache');
+1 -1
View File
@@ -6,7 +6,7 @@ import { FrigateEventWatcher } from '../../../src/camera-manager/frigate/event-w
import { getPTZInfo } from '../../../src/camera-manager/frigate/requests';
import { FrigateEventChange } from '../../../src/camera-manager/frigate/types';
import { StateWatcher } from '../../../src/card-controller/hass/state-watcher';
import { CameraTriggerEventType } from '../../../src/config/types';
import { CameraTriggerEventType } from '../../../src/config/schema/cameras';
import { EntityRegistryManager } from '../../../src/utils/ha/registry/entity';
import { Entity } from '../../../src/utils/ha/registry/entity/types';
import { createCameraConfig, createHASS, createRegistryEntity } from '../../test-utils';
@@ -7,12 +7,10 @@ import {
} from '../../../src/camera-manager/frigate/media';
import { FrigateEvent, eventSchema } from '../../../src/camera-manager/frigate/types.js';
import { StateWatcher } from '../../../src/card-controller/hass/state-watcher';
import { PTZAction } from '../../../src/config/ptz';
import {
AdvancedCameraCardView,
CameraConfig,
RawAdvancedCameraCardConfig,
} from '../../../src/config/types';
import { PTZAction } from '../../../src/config/schema/actions/custom/ptz';
import { CameraConfig } from '../../../src/config/schema/cameras';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import {
EntityRegistryManager,
createEntityRegistryCache,
+1 -1
View File
@@ -9,7 +9,7 @@ import {
getRecordingMediaContentID,
getRecordingTitle,
} from '../../../src/camera-manager/frigate/util';
import { CameraConfig } from '../../../src/config/types';
import { CameraConfig } from '../../../src/config/schema/cameras';
import {
createCameraConfig,
createFrigateEvent,
@@ -3,7 +3,8 @@ import { mock } from 'vitest-mock-extended';
import { GenericCameraManagerEngine } from '../../../src/camera-manager/generic/engine-generic';
import { Engine, QueryResultsType, QueryType } from '../../../src/camera-manager/types';
import { StateWatcherSubscriptionInterface } from '../../../src/card-controller/hass/state-watcher';
import { CameraConfig, RawAdvancedCameraCardConfig } from '../../../src/config/types';
import { CameraConfig } from '../../../src/config/schema/cameras';
import { RawAdvancedCameraCardConfig } from '../../../src/config/types';
import {
TestViewMedia,
createCameraConfig,
+1 -1
View File
@@ -27,7 +27,7 @@ import {
} from '../../src/camera-manager/types.js';
import { sortMedia } from '../../src/camera-manager/utils/sort-media.js';
import { CardController } from '../../src/card-controller/controller.js';
import { CameraConfig } from '../../src/config/types.js';
import { CameraConfig } from '../../src/config/schema/cameras.js';
import { HomeAssistant } from '../../src/ha/types.js';
import { ViewMedia } from '../../src/view/media.js';
import {
+1 -1
View File
@@ -4,7 +4,7 @@ import { CameraManagerEngine } from '../../../src/camera-manager/engine';
import { ReolinkCamera } from '../../../src/camera-manager/reolink/camera';
import { CameraProxyConfig } from '../../../src/camera-manager/types';
import { StateWatcher } from '../../../src/card-controller/hass/state-watcher';
import { ProxyConfig } from '../../../src/config/types';
import { ProxyConfig } from '../../../src/config/schema/cameras';
import { EntityRegistryManager } from '../../../src/utils/ha/registry/entity';
import { createCameraConfig, createHASS, createRegistryEntity } from '../../test-utils';
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest';
import { getCameraEntityFromConfig } from '../../../src/camera-manager/utils/camera-entity-from-config.js';
import { CameraConfig, cameraConfigSchema } from '../../../src/config/types.js';
import { CameraConfig, cameraConfigSchema } from '../../../src/config/schema/cameras.js';
describe('getCameraEntityFromConfig', () => {
const createCameraConfig = (config: Partial<CameraConfig>): CameraConfig => {
@@ -15,7 +15,7 @@ import {
InteractionName,
} from '../../../src/card-controller/actions/actions-manager';
import { TemplateRenderer } from '../../../src/card-controller/templates';
import { AdvancedCameraCardView } from '../../../src/config/types';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { createLogAction } from '../../../src/utils/action';
import { createCardAPI, createConfig, createHASS, createView } from '../../test-utils';
@@ -1,6 +1,6 @@
import { expect, it, vi } from 'vitest';
import { InternalCallbackAction } from '../../../../src/card-controller/actions/actions/internal-callback';
import { INTERNAL_CALLBACK_ACTION } from '../../../../src/config/types';
import { INTERNAL_CALLBACK_ACTION } from '../../../../src/config/schema/actions/custom/internal';
import { createCardAPI } from '../../../test-utils';
it('should handle internal callback action', async () => {
@@ -38,7 +38,8 @@ import { UnmuteAction } from '../../../src/card-controller/actions/actions/unmut
import { URLAction } from '../../../src/card-controller/actions/actions/url';
import { ViewAction } from '../../../src/card-controller/actions/actions/view';
import { ActionFactory } from '../../../src/card-controller/actions/factory';
import { ActionConfig, INTERNAL_CALLBACK_ACTION } from '../../../src/config/types';
import { INTERNAL_CALLBACK_ACTION } from '../../../src/config/schema/actions/custom/internal';
import { ActionConfig } from '../../../src/config/schema/actions/types';
// @vitest-environment jsdom
describe('ActionFactory', () => {
@@ -1,7 +1,7 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { AutomationsManager } from '../../src/card-controller/automations-manager.js';
import { ConditionStateManager } from '../../src/conditions/state-manager.js';
import { ActionConfig } from '../../src/config/types.js';
import { ActionConfig } from '../../src/config/schema/actions/types.js';
import { createCardAPI } from '../test-utils.js';
describe('AutomationsManager', () => {
@@ -3,7 +3,7 @@ import { ZodError } from 'zod';
import { ConfigManager } from '../../../src/card-controller/config/config-manager';
import { InitializationAspect } from '../../../src/card-controller/initialization-manager';
import { ConditionStateManager } from '../../../src/conditions/state-manager';
import { advancedCameraCardConfigSchema } from '../../../src/config/types';
import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types';
import { createCardAPI, flushPromises } from '../../test-utils';
describe('ConfigManager', () => {
@@ -1,7 +1,8 @@
import { describe, expect, it, vi } from 'vitest';
import { assert, describe, expect, it, vi } from 'vitest';
import { setRemoteControlEntityFromConfig } from '../../../src/card-controller/config/load-control-entities';
import { INTERNAL_CALLBACK_ACTION } from '../../../src/config/schema/actions/custom/internal';
import { isAdvancedCameraCardCustomAction } from '../../../src/utils/action';
import { createCardAPI, createConfig, createHASS, createStore } from '../../test-utils';
import { INTERNAL_CALLBACK_ACTION } from '../../../src/config/types';
describe('setRemoteControlEntityFromConfig', () => {
it('without control entity', () => {
@@ -119,8 +120,9 @@ describe('setRemoteControlEntityFromConfig', () => {
setRemoteControlEntityFromConfig(api);
const addOptionsAction = vi.mocked(api.getAutomationsManager().addAutomations).mock
.calls[0][0][0].actions[0];
expect(addOptionsAction.advanced_camera_card_action).toBe(INTERNAL_CALLBACK_ACTION);
.calls[0][0][0].actions?.[0];
assert(addOptionsAction && isAdvancedCameraCardCustomAction(addOptionsAction));
assert(addOptionsAction.advanced_camera_card_action === INTERNAL_CALLBACK_ACTION);
addOptionsAction.callback(api);
expect(hass.callService).toBeCalledWith(
@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest';
import { StatusBarItemManager } from '../../src/card-controller/status-bar-item-manager';
import { StatusBarString } from '../../src/config/types';
import { StatusBarString } from '../../src/config/schema/actions/types';
import { MediaQueriesResults } from '../../src/view/media-queries-results';
import {
TestViewMedia,
@@ -21,8 +21,7 @@ describe('StatusBarItemManager', () => {
manager.addDynamicStatusBarItem(testItem);
manager.addDynamicStatusBarItem(testItem);
expect(manager.calculateItems()).toContain(testItem);
expect(manager.calculateItems().find((item) => item === testItem).length === 1);
expect(manager.calculateItems()).toEqual([testItem]);
});
it('should remove', () => {
+2 -1
View File
@@ -1,6 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { StyleManager } from '../../src/card-controller/style-manager';
import { AdvancedCameraCardView, ThemeName } from '../../src/config/types';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { ThemeName } from '../../src/config/schema/view';
import { createCardAPI, createConfig, createView } from '../test-utils';
// @vitest-environment jsdom
@@ -2,11 +2,8 @@ import { add } from 'date-fns';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { CardController } from '../../src/card-controller/controller';
import { TriggersManager } from '../../src/card-controller/triggers-manager';
import {
AdvancedCameraCardView,
TriggersOptions,
triggersSchema,
} from '../../src/config/types';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { TriggersOptions, triggersSchema } from '../../src/config/schema/view';
import {
createCameraConfig,
createCameraManager,
+2 -1
View File
@@ -1,7 +1,8 @@
import { describe, expect, it, vi } from 'vitest';
import { ViewFactory } from '../../../src/card-controller/view/factory';
import { ViewModifier } from '../../../src/card-controller/view/types';
import { AdvancedCameraCardView, ViewDisplayMode } from '../../../src/config/types';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { ViewDisplayMode } from '../../../src/config/schema/common/display';
import { View } from '../../../src/view/view';
import {
createCameraManager,
@@ -10,7 +10,7 @@ import {
} from '../../../src/card-controller/view/types';
import { ViewManager } from '../../../src/card-controller/view/view-manager';
import { ViewQueryExecutor } from '../../../src/card-controller/view/view-query-executor';
import { AdvancedCameraCardView } from '../../../src/config/types';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import { ViewMedia } from '../../../src/view/media';
import { EventMediaQueries } from '../../../src/view/media-queries';
import { MediaQueriesResults } from '../../../src/view/media-queries-results';
@@ -3,7 +3,7 @@ import { mock } from 'vitest-mock-extended';
import { applyViewModifiers } from '../../../src/card-controller/view/modifiers';
import { QueryExecutor } from '../../../src/card-controller/view/query-executor';
import { ViewQueryExecutor } from '../../../src/card-controller/view/view-query-executor';
import { AdvancedCameraCardView } from '../../../src/config/types';
import { AdvancedCameraCardView } from '../../../src/config/schema/common/const';
import {
EventMediaQueries,
RecordingMediaQueries,
@@ -12,12 +12,10 @@ import {
MenuButtonController,
MenuButtonControllerOptions,
} from '../../src/components-lib/menu-button-controller.js';
import {
AdvancedCameraCardConfig,
AdvancedCameraCardView,
MenuItem,
ViewDisplayMode,
} from '../../src/config/types.js';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const.js';
import { ViewDisplayMode } from '../../src/config/schema/common/display.js';
import { MenuItem } from '../../src/config/schema/elements/custom/menu/types.js';
import { AdvancedCameraCardConfig } from '../../src/config/schema/types.js';
import { HomeAssistant } from '../../src/ha/types.js';
import { MediaPlayerController } from '../../src/types.js';
import { createGeneralAction, createViewAction } from '../../src/utils/action.js';
+1 -1
View File
@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { MenuController } from '../../src/components-lib/menu-controller.js';
import { SubmenuItem } from '../../src/components/submenu/types.js';
import { MenuConfig, menuConfigSchema } from '../../src/config/types.js';
import { MenuConfig, menuConfigSchema } from '../../src/config/schema/menu.js';
import {
createInteractionActionEvent,
createLitElement,
@@ -1,8 +1,11 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { Capabilities } from '../../../src/camera-manager/capabilities';
import { PTZController } from '../../../src/components-lib/ptz/ptz-controller';
import { PTZControlAction } from '../../../src/config/ptz';
import { PTZControlsConfig, ptzControlsConfigSchema } from '../../../src/config/types';
import { PTZControlAction } from '../../../src/config/schema/actions/custom/ptz';
import {
PTZControlsConfig,
ptzControlsConfigSchema,
} from '../../../src/config/schema/common/controls/ptz';
import { createCameraManager, createCapabilities, createStore } from '../../test-utils';
const createConfig = (config?: Partial<PTZControlsConfig>): PTZControlsConfig => {
@@ -1,6 +1,9 @@
import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
import { StatusBarController } from '../../src/components-lib/status-bar-controller';
import { StatusBarConfig, statusBarConfigSchema } from '../../src/config/types';
import {
StatusBarConfig,
statusBarConfigSchema,
} from '../../src/config/schema/status-bar';
import { setOrRemoveAttribute } from '../../src/utils/basic';
import { createInteractionActionEvent, createLitElement } from '../test-utils';
@@ -79,7 +82,7 @@ describe('StatusBarController', () => {
const controller = new StatusBarController(host);
const items = [
{
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Test',
},
];
@@ -92,22 +95,22 @@ describe('StatusBarController', () => {
const host = createLitElement();
const controller = new StatusBarController(host);
const item1 = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
priority: 40,
};
const item2 = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 2',
priority: 10,
};
const item3 = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 3',
priority: 60,
};
const item4 = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 4',
priority: undefined,
};
@@ -120,12 +123,12 @@ describe('StatusBarController', () => {
const host = createLitElement();
const controller = new StatusBarController(host);
const item1 = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
priority: 100,
};
const exclusiveItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 2',
priority: 1,
exclusive: true,
@@ -140,12 +143,12 @@ describe('StatusBarController', () => {
const host = createLitElement();
const controller = new StatusBarController(host);
const insufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
sufficient: false,
};
const sufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 2',
sufficient: true,
};
@@ -159,12 +162,12 @@ describe('StatusBarController', () => {
const host = createLitElement();
const controller = new StatusBarController(host);
const insufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
sufficient: false,
};
const sufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 2',
sufficient: false,
};
@@ -188,7 +191,7 @@ describe('StatusBarController', () => {
);
const sufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
priority: 100,
sufficient: true,
@@ -210,7 +213,7 @@ describe('StatusBarController', () => {
);
const insufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
priority: 100,
sufficient: false,
@@ -231,19 +234,19 @@ describe('StatusBarController', () => {
);
const sufficientString = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'String',
priority: 100,
sufficient: true,
};
const sufficientIcon = {
type: 'custom:advanced-camera-card-status-bar-icon',
type: 'custom:advanced-camera-card-status-bar-icon' as const,
icon: 'Icon',
priority: 100,
sufficient: true,
};
const sufficientImage = {
type: 'custom:advanced-camera-card-status-bar-image',
type: 'custom:advanced-camera-card-status-bar-image' as const,
image: 'Image',
priority: 100,
sufficient: true,
@@ -275,7 +278,7 @@ describe('StatusBarController', () => {
);
const sufficientItem = {
type: 'custom:advanced-camera-card-status-bar-string',
type: 'custom:advanced-camera-card-status-bar-string' as const,
string: 'Item 1',
priority: 100,
sufficient: true,
+6 -10
View File
@@ -17,16 +17,12 @@ import {
upgradeObjectRecursively,
upgradeWithOverrides,
} from '../../src/config/management.js';
import { PTZControlAction } from '../../src/config/ptz.js';
import {
Actions,
RawAdvancedCameraCardConfig,
advancedCameraCardConfigSchema,
} from '../../src/config/types.js';
import {
CallServiceActionConfig,
PerformActionActionConfig,
} from '../../src/ha/types.js';
import { PTZControlAction } from '../../src/config/schema/actions/custom/ptz.js';
import { CallServiceActionConfig } from '../../src/config/schema/actions/stock/call-service.js';
import { PerformActionActionConfig } from '../../src/config/schema/actions/stock/perform-action.js';
import { Actions } from '../../src/config/schema/actions/types.js';
import { advancedCameraCardConfigSchema } from '../../src/config/schema/types.js';
import { RawAdvancedCameraCardConfig } from '../../src/config/types.js';
import { getParseErrorPaths } from '../../src/utils/zod.js';
describe('general functions', () => {
+2 -2
View File
@@ -1,7 +1,7 @@
import { expect, it } from 'vitest';
import { setProfiles } from '../../../src/config/profiles';
import { CASTING_PROFILE } from '../../../src/config/profiles/casting';
import { advancedCameraCardConfigSchema } from '../../../src/config/types';
import { setProfiles } from '../../../src/config/profiles/set-profiles';
import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types';
import { createRawConfig } from '../../test-utils';
it('should contain expected defaults', () => {
+2 -2
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest';
import { ProfileType } from '../../../src/config/types';
import { setProfiles } from '../../../src/config/profiles';
import { setProfiles } from '../../../src/config/profiles/set-profiles';
import { ProfileType } from '../../../src/config/schema/profiles';
import { createConfig } from '../../test-utils';
describe('setProfiles', () => {
@@ -1,7 +1,7 @@
import { expect, it } from 'vitest';
import { setProfiles } from '../../../src/config/profiles';
import { LOW_PERFORMANCE_PROFILE } from '../../../src/config/profiles/low-performance';
import { advancedCameraCardConfigSchema } from '../../../src/config/types';
import { setProfiles } from '../../../src/config/profiles/set-profiles';
import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types';
import { createRawConfig } from '../../test-utils';
it('should contain expected defaults', () => {
+2 -2
View File
@@ -1,7 +1,7 @@
import { expect, it } from 'vitest';
import { setProfiles } from '../../../src/config/profiles';
import { SCRUBBING_PROFILE } from '../../../src/config/profiles/scrubbing';
import { advancedCameraCardConfigSchema } from '../../../src/config/types';
import { setProfiles } from '../../../src/config/profiles/set-profiles';
import { advancedCameraCardConfigSchema } from '../../../src/config/schema/types';
import { createRawConfig } from '../../test-utils';
it('should contain expected defaults', () => {
+21 -21
View File
@@ -1,13 +1,11 @@
import { describe, expect, it } from 'vitest';
import {
advancedCameraCardConditionSchema,
advancedCameraCardCustomActionsBaseSchema,
cameraConfigSchema,
conditionalSchema,
customSchema,
dimensionsConfigSchema,
statusBarActionConfigSchema,
} from '../../src/config/types';
import { advancedCameraCardCustomActionsBaseSchema } from '../../src/config/schema/actions/custom/base';
import { statusBarActionConfigSchema } from '../../src/config/schema/actions/types';
import { cameraConfigSchema } from '../../src/config/schema/cameras';
import { advancedCameraCardConditionSchema } from '../../src/config/schema/conditions/types';
import { dimensionsConfigSchema } from '../../src/config/schema/dimensions';
import { customSchema } from '../../src/config/schema/elements/stock/custom';
import { conditionalSchema } from '../../src/config/schema/elements/types';
import { createConfig } from '../test-utils';
// @vitest-environment jsdom
@@ -741,22 +739,24 @@ describe('config defaults', () => {
{ condition: 'view', views: ['live'] },
];
expect(
createConfig({
const elements = [
{
type: 'custom:advanced-camera-card-conditional',
elements: [
{
type: 'custom:advanced-camera-card-conditional',
elements: [
{
type: 'icon',
icon: 'mdi:pig',
},
],
conditions: conditions,
type: 'icon',
icon: 'mdi:pig',
},
],
}).elements[0].conditions,
).toEqual(conditions);
conditions: conditions,
},
];
expect(
createConfig({
elements: elements,
}).elements,
).toEqual(elements);
});
it('should include all stock actions', () => {
+7 -6
View File
@@ -40,15 +40,16 @@ import { TriggersManager } from '../src/card-controller/triggers-manager';
import { ViewManager } from '../src/card-controller/view/view-manager';
import { SubmenuInteraction, SubmenuItem } from '../src/components/submenu/types';
import { ConditionStateManager } from '../src/conditions/state-manager';
import { CameraConfig, cameraConfigSchema } from '../src/config/schema/cameras';
import {
PerformanceConfig,
performanceConfigSchema,
} from '../src/config/schema/performance';
import {
AdvancedCameraCardConfig,
CameraConfig,
PerformanceConfig,
RawAdvancedCameraCardConfig,
advancedCameraCardConfigSchema,
cameraConfigSchema,
performanceConfigSchema,
} from '../src/config/types';
} from '../src/config/schema/types';
import { RawAdvancedCameraCardConfig } from '../src/config/types';
import { CurrentUser, HomeAssistant } from '../src/ha/types';
import { CapabilitiesRaw, Interaction, MediaLoadedInfo } from '../src/types';
import { HassStateDifference } from '../src/utils/ha';
+2 -1
View File
@@ -1,6 +1,7 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { ActionConfig, INTERNAL_CALLBACK_ACTION } from '../../src/config/types.js';
import { INTERNAL_CALLBACK_ACTION } from '../../src/config/schema/actions/custom/internal.js';
import { ActionConfig } from '../../src/config/schema/actions/types.js';
import {
createCameraAction,
createDisplayModeAction,
@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { MEDIA_ACTION_NEGATIVE_CONDITIONS } from '../../../../../src/config/types';
import { MEDIA_ACTION_NEGATIVE_CONDITIONS } from '../../../../../src/config/schema/common/media-actions';
import { AutoLazyLoad } from '../../../../../src/utils/embla/plugins/auto-lazy-load/auto-lazy-load';
import {
callEmblaHandler,
+1 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest';
import { Capabilities } from '../../src/camera-manager/capabilities';
import { AdvancedCameraCardView } from '../../src/config/types';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { IMAGE_VIEW_ZOOM_TARGET_SENTINEL } from '../../src/const';
import {
getPTZTarget,
+1 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { AdvancedCameraCardView } from '../../src/config/types';
import { AdvancedCameraCardView } from '../../src/config/schema/common/const';
import { CapabilityKey } from '../../src/types';
import { getCameraIDsForViewName } from '../../src/view/view-to-cameras';
import {