Files
advanced-camera-card/tests/ha/side-load-ha-elements.test.ts

64 lines
1.8 KiB
TypeScript

import { LitElement } from 'lit';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { sideLoadHomeAssistantElements } from '../../src/ha/side-load-ha-elements';
describe('sideLoadHomeAssistantElements', () => {
beforeEach(() => {
vi.stubGlobal('customElements', {
get: vi.fn(),
whenDefined: vi.fn(),
});
});
afterEach(() => {
vi.unstubAllGlobals();
});
it('should return if all elements already registered', async () => {
vi.mocked(customElements.get).mockResolvedValue(LitElement);
await sideLoadHomeAssistantElements();
});
it('should throw when the picture glance card cannot be found', async () => {
vi.mocked(customElements.get).mockReturnValue(undefined);
const createCardElement = vi.fn();
vi.stubGlobal('window', {
loadCardHelpers: vi.fn().mockReturnValue({
createCardElement,
}),
});
await expect(sideLoadHomeAssistantElements()).rejects.toThrow();
});
it('should return when elements are loaded', async () => {
vi.mocked(customElements.get).mockImplementation((name: string) => {
if (name === 'hui-picture-glance-card') {
const result = LitElement;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(result as any).getConfigElement = vi.fn();
return LitElement;
}
return undefined;
});
const createCardElement = vi.fn();
vi.stubGlobal('window', {
loadCardHelpers: vi.fn().mockReturnValue({
createCardElement,
}),
});
await sideLoadHomeAssistantElements();
expect(customElements.whenDefined).toHaveBeenCalledWith('hui-picture-glance-card');
expect(createCardElement).toHaveBeenCalledWith({
type: 'picture-glance',
entities: [],
camera_image: 'dummy-to-load-editor-components',
});
});
});