feat: Implement basic general folder support (#2051)

- Related: #1748
This commit is contained in:
Dermot Duffy
2025-05-21 19:59:21 -07:00
committed by GitHub
parent 2eb0d9e35e
commit c6a4c8aea2
350 changed files with 12837 additions and 4509 deletions
+49
View File
@@ -0,0 +1,49 @@
import { describe, expect, it, vi } from 'vitest';
import { mock } from 'vitest-mock-extended';
import { getMediaDownloadPath } from '../../src/ha/download';
import { ResolvedMediaCache, resolveMedia } from '../../src/ha/resolved-media.js';
import { createHASS } from '../test-utils';
vi.mock('../../src/ha/canonical-url.js', () => ({
canonicalizeHAURL: vi.fn((_hass, url) => `canonicalized:${url}`),
}));
vi.mock('../../src/ha/resolved-media.js', () => ({
resolveMedia: vi.fn(),
}));
describe('getMediaDownloadPath', () => {
it('returns null if contentID is undefined', async () => {
expect(
await getMediaDownloadPath(createHASS(), undefined, mock<ResolvedMediaCache>()),
).toBeNull();
});
it('returns null if contentID is null', async () => {
expect(
await getMediaDownloadPath(createHASS(), null, mock<ResolvedMediaCache>()),
).toBeNull();
});
it('returns null if resolveMedia returns null', async () => {
const hass = createHASS();
const resolvedMediaCache = mock<ResolvedMediaCache>();
vi.mocked(resolveMedia).mockResolvedValueOnce(null);
expect(await getMediaDownloadPath(hass, 'id-1', resolvedMediaCache)).toBeNull();
expect(resolveMedia).toHaveBeenCalledWith(hass, 'id-1', resolvedMediaCache);
});
it('returns endpoint if resolveMedia returns a url', async () => {
const hass = createHASS();
const resolvedMediaCache = mock<ResolvedMediaCache>();
vi.mocked(resolveMedia).mockResolvedValueOnce({
url: '/media/path.mp4',
mime_type: 'video/mp4',
});
expect(await getMediaDownloadPath(hass, 'id-1', resolvedMediaCache)).toEqual({
endpoint: 'canonicalized:/media/path.mp4',
});
expect(resolveMedia).toBeCalledWith(hass, 'id-1', resolvedMediaCache);
});
});