import pytest from src.utils.youtube import extract_youtube_video_id, is_youtube_url, get_canonical_youtube_url def test_extract_standard_watch_url(): url = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" assert extract_youtube_video_id(url) == "dQw4w9WgXcQ" assert is_youtube_url(url) is True def test_extract_short_url(): url = "https://youtu.be/dQw4w9WgXcQ?si=abcdef123456" assert extract_youtube_video_id(url) == "dQw4w9WgXcQ" assert is_youtube_url(url) is True def test_extract_shorts_url(): url = "https://youtube.com/shorts/dQw4w9WgXcQ" assert extract_youtube_video_id(url) == "dQw4w9WgXcQ" assert is_youtube_url(url) is True def test_extract_kodi_plugin_url(): url = "plugin://plugin.video.youtube/play/?video_id=dQw4w9WgXcQ" assert extract_youtube_video_id(url) == "dQw4w9WgXcQ" assert is_youtube_url(url) is True def test_extract_embed_url(): url = "https://www.youtube.com/embed/dQw4w9WgXcQ" assert extract_youtube_video_id(url) == "dQw4w9WgXcQ" assert is_youtube_url(url) is True def test_non_youtube_url(): url = "https://example.com/video.mp4" assert extract_youtube_video_id(url) is None assert is_youtube_url(url) is False def test_canonical_url(): assert get_canonical_youtube_url("dQw4w9WgXcQ") == "https://www.youtube.com/watch?v=dQw4w9WgXcQ"