import { describe, it, expect } from 'vitest'; import { resolveStreamPreview } from '../resolve-stream-preview'; describe('resolveStreamPreview', () => { const preferred = ['240p', '480p']; it('берёт самое лёгкое качество из доступных', () => { const model = { streams: [{ key: '480p', url: 'b' }, { key: '240p', url: 'a' }] }; expect(resolveStreamPreview(model, preferred)).toBe('a'); }); it('спускается к следующему качеству, если лёгкого нет', () => { const model = { streams: [{ key: '720p', url: 'hq' }, { key: '480p', url: 'mid' }] }; expect(resolveStreamPreview(model, preferred)).toBe('mid'); }); it('если предпочтительных нет — берёт любой доступный поток', () => { expect(resolveStreamPreview({ streams: [{ key: '1080p', url: 'fhd' }] }, preferred)).toBe('fhd'); }); it('в самом конце — общий stream_url провайдера', () => { expect(resolveStreamPreview({ stream_url: 'fallback' }, preferred)).toBe('fallback'); expect(resolveStreamPreview({ streams: [], stream_url: 'fallback' }, preferred)).toBe('fallback'); }); it('понимает streams в виде словаря', () => { expect(resolveStreamPreview({ streams: { '240p': 'low' } }, preferred)).toBe('low'); }); it('без данных возвращает пустую строку', () => { expect(resolveStreamPreview({}, preferred)).toBe(''); }); });