@@ -67,28 +67,28 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
67
67
:ok
68
68
end
69
69
70
- test "it saves attributes to the media_item" , % { media_item: media_item } do
70
+ test "saves attributes to the media_item" , % { media_item: media_item } do
71
71
assert media_item . media_filepath == nil
72
72
perform_job ( MediaDownloadWorker , % { id: media_item . id } )
73
73
media_item = Repo . reload ( media_item )
74
74
75
75
assert media_item . media_filepath != nil
76
76
end
77
77
78
- test "it saves the metadata to the media_item" , % { media_item: media_item } do
78
+ test "saves the metadata to the media_item" , % { media_item: media_item } do
79
79
assert media_item . metadata == nil
80
80
perform_job ( MediaDownloadWorker , % { id: media_item . id } )
81
81
assert Repo . reload ( media_item ) . metadata != nil
82
82
end
83
83
84
- test "it won't double-schedule downloading jobs" , % { media_item: media_item } do
84
+ test "won't double-schedule downloading jobs" , % { media_item: media_item } do
85
85
Oban . insert ( MediaDownloadWorker . new ( % { id: media_item . id } ) )
86
86
Oban . insert ( MediaDownloadWorker . new ( % { id: media_item . id } ) )
87
87
88
88
assert [ _ ] = all_enqueued ( worker: MediaDownloadWorker )
89
89
end
90
90
91
- test "it sets the job to retryable if the download fails" , % { media_item: media_item } do
91
+ test "sets the job to retryable if the download fails" , % { media_item: media_item } do
92
92
expect ( YtDlpRunnerMock , :run , 2 , fn
93
93
_url , :get_downloadable_status , _opts , _ot , _addl -> { :ok , "{}" }
94
94
_url , :download , _opts , _ot , _addl -> { :error , "error" }
@@ -140,7 +140,7 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
140
140
end )
141
141
end
142
142
143
- test "it ensures error are returned in a 2-item tuple" , % { media_item: media_item } do
143
+ test "ensures error are returned in a 2-item tuple" , % { media_item: media_item } do
144
144
expect ( YtDlpRunnerMock , :run , 2 , fn
145
145
_url , :get_downloadable_status , _opts , _ot , _addl -> { :ok , "{}" }
146
146
_url , :download , _opts , _ot , _addl -> { :error , "error" , 1 }
@@ -149,7 +149,7 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
149
149
assert { :error , :download_failed } = perform_job ( MediaDownloadWorker , % { id: media_item . id } )
150
150
end
151
151
152
- test "it does not download if the source is set to not download" , % { media_item: media_item } do
152
+ test "does not download if the source is set to not download" , % { media_item: media_item } do
153
153
expect ( YtDlpRunnerMock , :run , 0 , fn _url , :download , _opts , _ot , _addl -> :ok end )
154
154
155
155
Sources . update_source ( media_item . source , % { download_media: false } )
@@ -165,7 +165,7 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
165
165
perform_job ( MediaDownloadWorker , % { id: media_item . id } )
166
166
end
167
167
168
- test "it saves the file's size to the database" , % { media_item: media_item } do
168
+ test "saves the file's size to the database" , % { media_item: media_item } do
169
169
expect ( YtDlpRunnerMock , :run , 3 , fn
170
170
_url , :get_downloadable_status , _opts , _ot , _addl ->
171
171
{ :ok , "{}" }
@@ -214,6 +214,14 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
214
214
215
215
perform_job ( MediaDownloadWorker , % { id: media_item . id } )
216
216
end
217
+
218
+ test "does not download if the media item isn't pending download" , % { media_item: media_item } do
219
+ expect ( YtDlpRunnerMock , :run , 0 , fn _url , :download , _opts , _ot , _addl -> :ok end )
220
+
221
+ Media . update_media_item ( media_item , % { media_filepath: "foo.mp4" } )
222
+
223
+ perform_job ( MediaDownloadWorker , % { id: media_item . id } )
224
+ end
217
225
end
218
226
219
227
describe "perform/1 when testing non-downloadable media" do
@@ -232,12 +240,30 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
232
240
233
241
describe "perform/1 when testing forced downloads" do
234
242
test "ignores 'prevent_download' if forced" , % { media_item: media_item } do
243
+ expect ( YtDlpRunnerMock , :run , 3 , fn
244
+ _url , :get_downloadable_status , _opts , _ot , _addl -> { :ok , "{}" }
245
+ _url , :download , _opts , _ot , _addl -> { :ok , render_metadata ( :media_metadata ) }
246
+ _url , :download_thumbnail , _opts , _ot , _addl -> { :ok , "" }
247
+ end )
248
+
235
249
Sources . update_source ( media_item . source , % { download_media: false } )
236
250
Media . update_media_item ( media_item , % { prevent_download: true } )
237
251
238
252
perform_job ( MediaDownloadWorker , % { id: media_item . id , force: true } )
239
253
end
240
254
255
+ test "ignores whether the media item is pending when forced" , % { media_item: media_item } do
256
+ expect ( YtDlpRunnerMock , :run , 3 , fn
257
+ _url , :get_downloadable_status , _opts , _ot , _addl -> { :ok , "{}" }
258
+ _url , :download , _opts , _ot , _addl -> { :ok , render_metadata ( :media_metadata ) }
259
+ _url , :download_thumbnail , _opts , _ot , _addl -> { :ok , "" }
260
+ end )
261
+
262
+ Media . update_media_item ( media_item , % { media_filepath: "foo.mp4" } )
263
+
264
+ perform_job ( MediaDownloadWorker , % { id: media_item . id , force: true } )
265
+ end
266
+
241
267
test "sets force_overwrites runner option" , % { media_item: media_item } do
242
268
expect ( YtDlpRunnerMock , :run , 3 , fn
243
269
_url , :get_downloadable_status , _opts , _ot , _addl ->
@@ -265,6 +291,34 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
265
291
assert media_item . media_redownloaded_at != nil
266
292
end
267
293
294
+ test "ignores whether the media item is pending when re-downloaded" , % { media_item: media_item } do
295
+ expect ( YtDlpRunnerMock , :run , 3 , fn
296
+ _url , :get_downloadable_status , _opts , _ot , _addl -> { :ok , "{}" }
297
+ _url , :download , _opts , _ot , _addl -> { :ok , render_metadata ( :media_metadata ) }
298
+ _url , :download_thumbnail , _opts , _ot , _addl -> { :ok , "" }
299
+ end )
300
+
301
+ Media . update_media_item ( media_item , % { media_filepath: "foo.mp4" } )
302
+
303
+ perform_job ( MediaDownloadWorker , % { id: media_item . id , quality_upgrade?: true } )
304
+ end
305
+
306
+ test "doesn't redownload if the source is set to not download" , % { media_item: media_item } do
307
+ expect ( YtDlpRunnerMock , :run , 0 , fn _url , :download , _opts , _ot , _addl -> :ok end )
308
+
309
+ Sources . update_source ( media_item . source , % { download_media: false } )
310
+
311
+ perform_job ( MediaDownloadWorker , % { id: media_item . id , quality_upgrade?: true } )
312
+ end
313
+
314
+ test "doesn't redownload if the media item is set to not download" , % { media_item: media_item } do
315
+ expect ( YtDlpRunnerMock , :run , 0 , fn _url , :download , _opts , _ot , _addl -> :ok end )
316
+
317
+ Media . update_media_item ( media_item , % { prevent_download: true } )
318
+
319
+ perform_job ( MediaDownloadWorker , % { id: media_item . id , quality_upgrade?: true } )
320
+ end
321
+
268
322
test "sets force_overwrites runner option" , % { media_item: media_item } do
269
323
expect ( YtDlpRunnerMock , :run , 3 , fn
270
324
_url , :get_downloadable_status , _opts , _ot , _addl ->
0 commit comments