@@ -38,44 +38,56 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
38
38
end
39
39
end
40
40
41
- describe "kickoff_download_tasks_from_youtube_rss_feed /1" do
42
- test "enqueues a new worker for each new media_id in the source's RSS feed" , % { source: source } do
41
+ describe "index_and_kickoff_downloads /1" do
42
+ test "enqueues a worker for each new media_id in the source's RSS feed" , % { source: source } do
43
43
expect ( HTTPClientMock , :get , fn _url -> { :ok , "<yt:videoId>test_1</yt:videoId>" } end )
44
44
45
- assert [ media_item ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
45
+ assert [ media_item ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
46
46
47
47
assert [ worker ] = all_enqueued ( worker: MediaDownloadWorker )
48
48
assert worker . args [ "id" ] == media_item . id
49
+ assert worker . priority == 0
49
50
end
50
51
51
52
test "does not enqueue a new worker for the source's media IDs we already know about" , % { source: source } do
52
53
expect ( HTTPClientMock , :get , fn _url -> { :ok , "<yt:videoId>test_1</yt:videoId>" } end )
53
54
media_item_fixture ( source_id: source . id , media_id: "test_1" )
54
55
55
- assert [ ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
56
+ assert [ ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
56
57
57
58
refute_enqueued ( worker: MediaDownloadWorker )
58
59
end
59
60
61
+ test "kicks off a download task for all pending media but at a lower priority" , % { source: source } do
62
+ pending_item = media_item_fixture ( source_id: source . id , media_filepath: nil )
63
+ expect ( HTTPClientMock , :get , fn _url -> { :ok , "<yt:videoId>test_1</yt:videoId>" } end )
64
+
65
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
66
+
67
+ assert [ worker_1 , _worker_2 ] = all_enqueued ( worker: MediaDownloadWorker )
68
+ assert worker_1 . args [ "id" ] == pending_item . id
69
+ assert worker_1 . priority == 1
70
+ end
71
+
60
72
test "returns the found media items" , % { source: source } do
61
73
expect ( HTTPClientMock , :get , fn _url -> { :ok , "<yt:videoId>test_1</yt:videoId>" } end )
62
74
63
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
75
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
64
76
end
65
77
66
78
test "does not enqueue a download job if the source does not allow it" do
67
79
expect ( HTTPClientMock , :get , fn _url -> { :ok , "<yt:videoId>test_1</yt:videoId>" } end )
68
80
source = source_fixture ( % { download_media: false } )
69
81
70
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
82
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
71
83
72
84
refute_enqueued ( worker: MediaDownloadWorker )
73
85
end
74
86
75
87
test "creates a download task record" , % { source: source } do
76
88
expect ( HTTPClientMock , :get , fn _url -> { :ok , "<yt:videoId>test_1</yt:videoId>" } end )
77
89
78
- assert [ media_item ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
90
+ assert [ media_item ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
79
91
80
92
assert [ _ ] = Tasks . list_tasks_for ( media_item , "MediaDownloadWorker" )
81
93
end
@@ -89,7 +101,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
89
101
{ :ok , media_attributes_return_fixture ( ) }
90
102
end )
91
103
92
- FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
104
+ FastIndexingHelpers . index_and_kickoff_downloads ( source )
93
105
end
94
106
95
107
test "sets use_cookies if the source uses cookies" do
@@ -103,7 +115,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
103
115
104
116
source = source_fixture ( % { use_cookies: true } )
105
117
106
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
118
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
107
119
end
108
120
109
121
test "does not set use_cookies if the source does not use cookies" do
@@ -117,7 +129,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
117
129
118
130
source = source_fixture ( % { use_cookies: false } )
119
131
120
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
132
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
121
133
end
122
134
123
135
test "does not enqueue a download job if the media item does not match the format rules" do
@@ -142,7 +154,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
142
154
{ :ok , output }
143
155
end )
144
156
145
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
157
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
146
158
147
159
refute_enqueued ( worker: MediaDownloadWorker )
148
160
end
@@ -154,7 +166,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
154
166
{ :ok , "{}" }
155
167
end )
156
168
157
- assert [ ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
169
+ assert [ ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
158
170
end
159
171
160
172
test "does not blow up if a media item causes a yt-dlp error" , % { source: source } do
@@ -164,11 +176,11 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
164
176
{ :error , "message" , 1 }
165
177
end )
166
178
167
- assert [ ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
179
+ assert [ ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
168
180
end
169
181
end
170
182
171
- describe "kickoff_download_tasks_from_youtube_rss_feed /1 when testing backends" do
183
+ describe "index_and_kickoff_downloads /1 when testing backends" do
172
184
test "uses the YouTube API if it is enabled" , % { source: source } do
173
185
expect ( HTTPClientMock , :get , fn url , _headers ->
174
186
assert url =~ "https://youtube.googleapis.com/youtube/v3/playlistItems"
@@ -178,7 +190,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
178
190
179
191
Settings . set ( youtube_api_key: "test_key" )
180
192
181
- assert [ ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
193
+ assert [ ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
182
194
end
183
195
184
196
test "the YouTube API creates records as expected" , % { source: source } do
@@ -188,7 +200,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
188
200
189
201
Settings . set ( youtube_api_key: "test_key" )
190
202
191
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
203
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
192
204
end
193
205
194
206
test "RSS is used as a backup if the API fails" , % { source: source } do
@@ -197,7 +209,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
197
209
198
210
Settings . set ( youtube_api_key: "test_key" )
199
211
200
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
212
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
201
213
end
202
214
203
215
test "RSS is used if the API is not enabled" , % { source: source } do
@@ -209,7 +221,7 @@ defmodule Pinchflat.FastIndexing.FastIndexingHelpersTest do
209
221
210
222
Settings . set ( youtube_api_key: nil )
211
223
212
- assert [ % MediaItem { } ] = FastIndexingHelpers . kickoff_download_tasks_from_youtube_rss_feed ( source )
224
+ assert [ % MediaItem { } ] = FastIndexingHelpers . index_and_kickoff_downloads ( source )
213
225
end
214
226
end
215
227
end
0 commit comments