test: Split test utilities to improve test times (#2622)

This commit is contained in:
Dermot Duffy
2026-07-26 16:29:53 -07:00
committed by GitHub
parent 8d44fcecf1
commit ad89aa9538
234 changed files with 2730 additions and 2516 deletions
@@ -9,7 +9,8 @@ import type { FolderConfig } from '../../../src/config/schema/folders';
import { QuerySource } from '../../../src/query-source';
import type { Endpoint } from '../../../src/types';
import { ViewFolder } from '../../../src/view/item';
import { createFolder, createHASS, TestViewMedia } from '../../test-utils';
import { createFolder, createHASS } from '../../test-utils';
import { TestViewMedia } from '../../view/test-utils';
vi.mock('../../../src/card-controller/folders/ha/engine');
vi.mock('../../../../src/utils/ha/download');
@@ -134,7 +135,7 @@ describe('FoldersExecutor', () => {
await executor.favorite(hass, item, true);
expect(haFolderEngine.favorite).toBeCalledWith(hass, item, true);
expect(haFolderEngine.favorite).toHaveBeenCalledWith(hass, item, true);
});
});
@@ -153,7 +154,10 @@ describe('FoldersExecutor', () => {
const executor = new FoldersExecutor(templateManager, { ha: haFolderEngine });
expect(executor.generateChildFolderQuery(query, viewFolder)).toEqual(query);
expect(haFolderEngine.generateChildFolderQuery).toBeCalledWith(query, viewFolder);
expect(haFolderEngine.generateChildFolderQuery).toHaveBeenCalledWith(
query,
viewFolder,
);
});
it('should return null for non-existent folder engine', () => {
@@ -11,12 +11,8 @@ import { homeAssistantWSRequest } from '../../../../src/ha/ws-request';
import { QuerySource } from '../../../../src/query-source';
import type { Endpoint } from '../../../../src/types';
import { ViewFolder, ViewMedia } from '../../../../src/view/item';
import {
createBrowseMedia,
createFolder,
createHASS,
TestViewMedia,
} from '../../../test-utils';
import { createBrowseMedia, createFolder, createHASS } from '../../../test-utils';
import { TestViewMedia } from '../../../view/test-utils';
vi.mock('../../../../src/ha/download');
vi.mock('../../../../src/ha/ws-request');
@@ -143,11 +139,11 @@ describe('HAFoldersEngine', () => {
expect(results?.[0]).toBeInstanceOf(ViewMedia);
expect(results?.[1]).toBeInstanceOf(ViewFolder);
expect(homeAssistantWSRequest).toBeCalledTimes(1);
expect(homeAssistantWSRequest).toHaveBeenCalledTimes(1);
// Expanding the folder again should use the cache.
await engine.expandFolder(createHASS(), query);
expect(homeAssistantWSRequest).toBeCalledTimes(1);
expect(homeAssistantWSRequest).toHaveBeenCalledTimes(1);
});
it('should expand folder without cache when requested', async () => {
@@ -190,11 +186,11 @@ describe('HAFoldersEngine', () => {
expect(results?.[0]).toBeInstanceOf(ViewMedia);
expect(results?.[1]).toBeInstanceOf(ViewFolder);
expect(homeAssistantWSRequest).toBeCalledTimes(1);
expect(homeAssistantWSRequest).toHaveBeenCalledTimes(1);
// Expanding the folder again should use the cache.
await engine.expandFolder(createHASS(), query);
expect(homeAssistantWSRequest).toBeCalledTimes(2);
expect(homeAssistantWSRequest).toHaveBeenCalledTimes(2);
});
it('should use id from browsemedia in folder in query', async () => {
@@ -225,7 +221,7 @@ describe('HAFoldersEngine', () => {
const engine = new HAFoldersEngine(templateManager);
await engine.expandFolder(hass, query);
expect(homeAssistantWSRequest).toBeCalledWith(hass, browseMediaSchema, {
expect(homeAssistantWSRequest).toHaveBeenCalledWith(hass, browseMediaSchema, {
type: 'media_source/browse_media',
media_content_id: 'media-source://id',
});
+14 -16
View File
@@ -13,12 +13,8 @@ import { QuerySource } from '../../../src/query-source';
import type { Endpoint } from '../../../src/types';
import { ViewFolder } from '../../../src/view/item';
import type { ViewItemCapabilities } from '../../../src/view/types';
import {
createCardAPI,
createFolder,
createHASS,
TestViewMedia,
} from '../../test-utils';
import { createCardAPI, createFolder, createHASS } from '../../test-utils';
import { TestViewMedia } from '../../view/test-utils';
describe('FoldersManager', () => {
it('should initialize with no folders', () => {
@@ -74,7 +70,7 @@ describe('FoldersManager', () => {
const folder_1 = createFolder({ id: 'DUP' });
const folder_2 = createFolder({ id: 'DUP' });
expect(() => manager.addFolders([folder_1, folder_2])).toThrowError(
expect(() => manager.addFolders([folder_1, folder_2])).toThrow(
/Duplicate folder id/,
);
});
@@ -119,7 +115,7 @@ describe('FoldersManager', () => {
executor.getDefaultQueryParameters.mockReturnValue(query);
expect(manager.getDefaultQueryParameters(folder)).toEqual(query);
expect(executor.getDefaultQueryParameters).toBeCalledWith(folder);
expect(executor.getDefaultQueryParameters).toHaveBeenCalledWith(folder);
});
it('should fallback to default folder if none provided', () => {
@@ -133,7 +129,9 @@ describe('FoldersManager', () => {
executor.getDefaultQueryParameters.mockReturnValue(query);
expect(manager.getDefaultQueryParameters()).toEqual(query);
expect(executor.getDefaultQueryParameters).toBeCalledWith(manager.getFolder());
expect(executor.getDefaultQueryParameters).toHaveBeenCalledWith(
manager.getFolder(),
);
});
});
@@ -186,7 +184,7 @@ describe('FoldersManager', () => {
const manager = new FoldersManager(createCardAPI(), executor);
expect(manager.generateChildFolderQuery(query, viewFolder)).toEqual(query);
expect(executor.generateChildFolderQuery).toBeCalledWith(query, viewFolder);
expect(executor.generateChildFolderQuery).toHaveBeenCalledWith(query, viewFolder);
});
});
@@ -215,7 +213,7 @@ describe('FoldersManager', () => {
media,
]);
expect(executor.expandFolder).toBeCalledWith(
expect(executor.expandFolder).toHaveBeenCalledWith(
hass,
query,
conditionState,
@@ -237,7 +235,7 @@ describe('FoldersManager', () => {
}),
).toBeNull();
expect(executor.expandFolder).not.toBeCalled();
expect(executor.expandFolder).not.toHaveBeenCalled();
});
it('should return null for query with unsupported filters', async () => {
@@ -257,7 +255,7 @@ describe('FoldersManager', () => {
};
expect(await manager.expandFolder(query)).toBeNull();
expect(executor.expandFolder).not.toBeCalled();
expect(executor.expandFolder).not.toHaveBeenCalled();
});
});
@@ -275,7 +273,7 @@ describe('FoldersManager', () => {
const manager = new FoldersManager(api, executor);
expect(manager.getItemCapabilities(item)).toEqual(capabilities);
expect(executor.getItemCapabilities).toBeCalledWith(item);
expect(executor.getItemCapabilities).toHaveBeenCalledWith(item);
});
});
@@ -294,7 +292,7 @@ describe('FoldersManager', () => {
const manager = new FoldersManager(api, executor);
expect(await manager.getDownloadPath(item)).toEqual(endpoint);
expect(executor.getDownloadPath).toBeCalledWith(hass, item, {
expect(executor.getDownloadPath).toHaveBeenCalledWith(hass, item, {
resolvedMediaCache: cache,
});
});
@@ -311,7 +309,7 @@ describe('FoldersManager', () => {
const manager = new FoldersManager(api, executor);
await manager.favorite(item, true);
expect(executor.favorite).toBeCalledWith(hass, item, true);
expect(executor.favorite).toHaveBeenCalledWith(hass, item, true);
});
});