swiftyy-mage commited on
Commit
9f6f947
·
unverified ·
1 Parent(s): e1764bc
Files changed (1) hide show
  1. tests/test_cli.py +63 -17
tests/test_cli.py CHANGED
@@ -84,6 +84,12 @@ def test_download_caption_with_language_not_found(youtube):
84
  wrapped_all.assert_called()
85
 
86
 
 
 
 
 
 
 
87
  @mock.patch("pytube.Stream")
88
  @mock.patch("io.BufferedWriter")
89
  def test_on_progress(stream, writer):
@@ -101,8 +107,6 @@ def test_parse_args_falsey():
101
  assert args.itag is None
102
  assert args.list is False
103
  assert args.verbosity == 0
104
- assert args.resolution is None
105
- assert args.ffmpeg is None
106
 
107
 
108
  def test_parse_args_truthy():
@@ -116,21 +120,15 @@ def test_parse_args_truthy():
116
  "en",
117
  "-l",
118
  "--itag=10",
119
- "--resolution=720p",
120
- "--audio=mp4",
121
- "--ffmpeg=2160p",
122
  ],
123
  )
124
  assert args.url == "http://youtube.com/watch?v=9bZkp7q19f0"
125
  assert args.build_playback_report is True
126
  assert args.itag == 10
127
  assert args.list is True
128
- assert args.resolution == "720p"
129
- assert args.audio == "mp4"
130
- assert args.ffmpeg == "2160p"
131
 
132
 
133
- @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
134
  def test_main_download_by_itag(youtube):
135
  parser = argparse.ArgumentParser()
136
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "--itag=10"])
@@ -141,7 +139,7 @@ def test_main_download_by_itag(youtube):
141
  cli.download_by_itag.assert_called()
142
 
143
 
144
- @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
145
  def test_main_build_playback_report(youtube):
146
  parser = argparse.ArgumentParser()
147
  args = parse_args(
@@ -154,7 +152,7 @@ def test_main_build_playback_report(youtube):
154
  cli.build_playback_report.assert_called()
155
 
156
 
157
- @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
158
  def test_main_display_streams(youtube):
159
  parser = argparse.ArgumentParser()
160
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-l"])
@@ -165,7 +163,7 @@ def test_main_display_streams(youtube):
165
  cli.display_streams.assert_called()
166
 
167
 
168
- @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
169
  def test_main_download_caption(youtube):
170
  parser = argparse.ArgumentParser()
171
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-c"])
@@ -176,15 +174,15 @@ def test_main_download_caption(youtube):
176
  cli.download_caption.assert_called()
177
 
178
 
179
- @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
180
- def test_download_by_resolution(youtube):
 
181
  parser = argparse.ArgumentParser()
182
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-r", "320p"])
183
  cli._parse_args = MagicMock(return_value=args)
184
- cli.download_by_resolution = MagicMock()
185
  cli.main()
186
  youtube.assert_called()
187
- cli.download_by_resolution.assert_called()
188
 
189
 
190
  @mock.patch("pytube.cli.Playlist")
@@ -193,11 +191,48 @@ def test_download_with_playlist(playlist):
193
  parser = argparse.ArgumentParser()
194
  args = parse_args(parser, ["https://www.youtube.com/playlist?list=PLyn"])
195
  cli._parse_args = MagicMock(return_value=args)
196
- cli.download_by_resolution = MagicMock()
197
  cli.main()
198
  playlist.assert_called()
199
 
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
202
  def test_download_audio(youtube):
203
  parser = argparse.ArgumentParser()
@@ -218,3 +253,14 @@ def test_ffmpeg_process(youtube):
218
  cli.main()
219
  youtube.assert_called()
220
  cli.ffmpeg_process.assert_called()
 
 
 
 
 
 
 
 
 
 
 
 
84
  wrapped_all.assert_called()
85
 
86
 
87
+ def test_display_progress_bar(capsys):
88
+ cli.display_progress_bar(bytes_received=25, filesize=100, scale=0.55)
89
+ out, _ = capsys.readouterr()
90
+ assert "25.0%" in out
91
+
92
+
93
  @mock.patch("pytube.Stream")
94
  @mock.patch("io.BufferedWriter")
95
  def test_on_progress(stream, writer):
 
107
  assert args.itag is None
108
  assert args.list is False
109
  assert args.verbosity == 0
 
 
110
 
111
 
112
  def test_parse_args_truthy():
 
120
  "en",
121
  "-l",
122
  "--itag=10",
 
 
 
123
  ],
124
  )
125
  assert args.url == "http://youtube.com/watch?v=9bZkp7q19f0"
126
  assert args.build_playback_report is True
127
  assert args.itag == 10
128
  assert args.list is True
 
 
 
129
 
130
 
131
+ @mock.patch("pytube.cli.YouTube", return_value=None)
132
  def test_main_download_by_itag(youtube):
133
  parser = argparse.ArgumentParser()
134
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "--itag=10"])
 
139
  cli.download_by_itag.assert_called()
140
 
141
 
142
+ @mock.patch("pytube.cli.YouTube", return_value=None)
143
  def test_main_build_playback_report(youtube):
144
  parser = argparse.ArgumentParser()
145
  args = parse_args(
 
152
  cli.build_playback_report.assert_called()
153
 
154
 
155
+ @mock.patch("pytube.cli.YouTube", return_value=None)
156
  def test_main_display_streams(youtube):
157
  parser = argparse.ArgumentParser()
158
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-l"])
 
163
  cli.display_streams.assert_called()
164
 
165
 
166
+ @mock.patch("pytube.cli.YouTube", return_value=None)
167
  def test_main_download_caption(youtube):
168
  parser = argparse.ArgumentParser()
169
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-c"])
 
174
  cli.download_caption.assert_called()
175
 
176
 
177
+ @mock.patch("pytube.cli.YouTube", return_value=None)
178
+ @mock.patch("pytube.cli.download_by_resolution")
179
+ def test_download_by_resolution_flag(youtube, download_by_resolution):
180
  parser = argparse.ArgumentParser()
181
  args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-r", "320p"])
182
  cli._parse_args = MagicMock(return_value=args)
 
183
  cli.main()
184
  youtube.assert_called()
185
+ download_by_resolution.assert_called()
186
 
187
 
188
  @mock.patch("pytube.cli.Playlist")
 
191
  parser = argparse.ArgumentParser()
192
  args = parse_args(parser, ["https://www.youtube.com/playlist?list=PLyn"])
193
  cli._parse_args = MagicMock(return_value=args)
 
194
  cli.main()
195
  playlist.assert_called()
196
 
197
 
198
+ @mock.patch("pytube.cli.YouTube")
199
+ @mock.patch("pytube.StreamQuery")
200
+ @mock.patch("pytube.Stream")
201
+ def test_download_by_resolution(youtube, stream_query, stream):
202
+ stream_query.get_by_resolution.return_value = stream
203
+ youtube.streams = stream_query
204
+ cli._download = MagicMock()
205
+ cli.download_by_resolution(youtube=youtube, resolution="320p", target="test_target")
206
+ cli._download.assert_called_with(stream, target="test_target")
207
+
208
+
209
+ @mock.patch("pytube.cli.YouTube")
210
+ @mock.patch("pytube.StreamQuery")
211
+ def test_download_by_resolution_not_exists(youtube, stream_query):
212
+ stream_query.get_by_resolution.return_value = None
213
+ youtube.streams = stream_query
214
+ cli._download = MagicMock()
215
+ with pytest.raises(SystemExit):
216
+ cli.download_by_resolution(
217
+ youtube=youtube, resolution="DOESNT EXIST", target="test_target"
218
+ )
219
+ cli._download.assert_not_called()
220
+
221
+
222
+ @mock.patch("pytube.cli.YouTube")
223
+ @mock.patch("pytube.cli.Stream")
224
+ def test_ffmpeg_downloader(youtube, stream):
225
+ parser = argparse.ArgumentParser()
226
+ args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0", "-f", "best"])
227
+ cli._parse_args = MagicMock(return_value=args)
228
+ cli.safe_filename = MagicMock(return_value="PSY - GANGNAM STYLE(강남스타일) MV")
229
+ cli.subprocess.run = MagicMock()
230
+ cli.os.unlink = MagicMock()
231
+ cli.ffmpeg_downloader = MagicMock()
232
+ cli.main()
233
+ cli.ffmpeg_downloader.assert_called()
234
+
235
+
236
  @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
237
  def test_download_audio(youtube):
238
  parser = argparse.ArgumentParser()
 
253
  cli.main()
254
  youtube.assert_called()
255
  cli.ffmpeg_process.assert_called()
256
+
257
+
258
+ @mock.patch("pytube.cli.YouTube.__init__", return_value=None)
259
+ def test_perform_args_on_youtube(youtube):
260
+ parser = argparse.ArgumentParser()
261
+ args = parse_args(parser, ["http://youtube.com/watch?v=9bZkp7q19f0"])
262
+ cli._parse_args = MagicMock(return_value=args)
263
+ cli._perform_args_on_youtube = MagicMock()
264
+ cli.main()
265
+ youtube.assert_called()
266
+ cli._perform_args_on_youtube.assert_called()