# -*- coding: utf-8 -*- from unittest import mock from unittest.mock import MagicMock from pytube import Playlist @mock.patch("pytube.contrib.playlist.request.get") def test_title(request_get): request_get.return_value = ( "(149) Python Tutorial for Beginners " "(For Absolute Beginners) - YouTube" ) url = "https://www.fakeurl.com/playlist?list=PLsyeobzWxl7poL9JTVyndKe62ieoN" pl = Playlist(url) pl_title = pl.title() assert pl_title == "(149) Python Tutorial for Beginners (For Absolute Beginners)" def test_init_with_playlist_url(): url = "https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X" playlist = Playlist(url) assert playlist.playlist_url == url def test_init_with_watch_url(): url = ( "https://www.youtube.com/watch?v=1KeYzjILqDo&" "list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X&index=2&t=661s" ) playlist = Playlist(url) assert ( playlist.playlist_url == "https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X" ) @mock.patch("pytube.contrib.playlist.request.get") def test_parse_links(request_get, playlist_html): url = "https://www.fakeurl.com/playlist?list=whatever" request_get.return_value = playlist_html playlist = Playlist(url) playlist._find_load_more_url = MagicMock(return_value=None) links = playlist.parse_links() request_get.assert_called() assert links == [ "/watch?v=ujTCoH21GlA", "/watch?v=45ryDIPHdGg", "/watch?v=1BYu65vLKdA", "/watch?v=3AQ_74xrch8", "/watch?v=ddqQUz9mZaM", "/watch?v=vwLT6bZrHEE", "/watch?v=TQKI0KE-JYY", "/watch?v=dNBvQ38MlT8", "/watch?v=JHxyrMgOUWI", "/watch?v=l2I8NycJMCY", "/watch?v=g1Zbuk1gAfk", "/watch?v=zixd-si9Q-o", ] @mock.patch("pytube.contrib.playlist.request.get") def test_populate_video_urls(request_get, playlist_html): url = "https://www.fakeurl.com/playlist?list=whatever" request_get.return_value = playlist_html playlist = Playlist(url) playlist._find_load_more_url = MagicMock(return_value=None) playlist.populate_video_urls() request_get.assert_called() assert playlist.video_urls == [ "https://www.youtube.com/watch?v=ujTCoH21GlA", "https://www.youtube.com/watch?v=45ryDIPHdGg", "https://www.youtube.com/watch?v=1BYu65vLKdA", "https://www.youtube.com/watch?v=3AQ_74xrch8", "https://www.youtube.com/watch?v=ddqQUz9mZaM", "https://www.youtube.com/watch?v=vwLT6bZrHEE", "https://www.youtube.com/watch?v=TQKI0KE-JYY", "https://www.youtube.com/watch?v=dNBvQ38MlT8", "https://www.youtube.com/watch?v=JHxyrMgOUWI", "https://www.youtube.com/watch?v=l2I8NycJMCY", "https://www.youtube.com/watch?v=g1Zbuk1gAfk", "https://www.youtube.com/watch?v=zixd-si9Q-o", ]