import { describe, expect, it } from 'vitest'; import { isPlaylistUrl } from '../src/playlistUrl'; describe('isPlaylistUrl', () => { it.each([ 'https://www.youtube.com/playlist?list=PLKDZ1ig0uz-U', 'https://youtube.com/playlist?list=PLKDZ1ig0uz-U', 'https://m.youtube.com/playlist?list=PLKDZ1ig0uz-U', 'https://music.youtube.com/playlist?list=OLAK5uy_abc', 'https://www.youtube.com/playlist?si=abc&list=PLKDZ1ig0uz-U&index=2', ' https://www.youtube.com/playlist?list=PLKDZ1ig0uz-U ', ])('reconnaît %j comme une playlist', (input) => { expect(isPlaylistUrl(input)).toBe(true); }); it.each([ ['un lien de vidéo', 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'], [ 'un lien de vidéo dans une playlist', 'https://www.youtube.com/watch?v=dQw4w9WgXcQ&list=PLabc', ], ['un lien court dans une playlist', 'https://youtu.be/dQw4w9WgXcQ?list=PLabc'], ['une playlist sans identifiant', 'https://www.youtube.com/playlist'], ['une playlist à identifiant vide', 'https://www.youtube.com/playlist?list='], ['un autre domaine', 'https://example.com/playlist?list=PLabc'], ['un schéma http', 'http://www.youtube.com/playlist?list=PLabc'], ['du texte quelconque', 'pas une url'], ['une chaîne vide', ''], ])('ne prend pas %s pour une playlist', (_label, input) => { expect(isPlaylistUrl(input)).toBe(false); }); });