Kord/apps/bot/tests/services/MusicService.test.ts

27 lines
1.1 KiB
TypeScript

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');
});
});