import { extractYouTubeVideoId, formatDuration, isYouTubePlaylistUrl } from '../../src/services/MusicService'; describe('MusicService helpers', () => { it('extracts a video id from standard watch URLs', () => { expect(extractYouTubeVideoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ'); }); it('extracts a video id from short URLs', () => { expect(extractYouTubeVideoId('https://youtu.be/dQw4w9WgXcQ')).toBe('dQw4w9WgXcQ'); }); it('returns null for invalid URLs', () => { expect(extractYouTubeVideoId('https://example.com/watch?v=dQw4w9WgXcQ')).toBeNull(); }); it('detects playlist URLs', () => { expect(isYouTubePlaylistUrl('https://www.youtube.com/playlist?list=PL1234567890')).toBe(true); expect(isYouTubePlaylistUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PL1234567890')).toBe(true); expect(isYouTubePlaylistUrl('https://www.youtube.com/watch?v=dQw4w9WgXcQ')).toBe(false); }); it('formats durations consistently', () => { expect(formatDuration(65)).toBe('01:05'); expect(formatDuration(3665)).toBe('1:01:05'); }); });