Added tests for video download worker
This commit is contained in:
parent
777ccb7459
commit
95a766f3d4
2 changed files with 45 additions and 1 deletions
|
|
@ -11,7 +11,9 @@ defmodule Pinchflat.Workers.VideoDownloadWorker do
|
||||||
|
|
||||||
@impl Oban.Worker
|
@impl Oban.Worker
|
||||||
@doc """
|
@doc """
|
||||||
TODO: test
|
For a given media item, download the video and save the metadata.
|
||||||
|
|
||||||
|
Returns {:ok, %MediaItem{}} | {:error, any, ...any}
|
||||||
"""
|
"""
|
||||||
def perform(%Oban.Job{args: %{"id" => media_item_id}}) do
|
def perform(%Oban.Job{args: %{"id" => media_item_id}}) do
|
||||||
media_item = Media.get_media_item!(media_item_id)
|
media_item = Media.get_media_item!(media_item_id)
|
||||||
|
|
|
||||||
42
test/pinchflat/workers/video_download_worker_test.exs
Normal file
42
test/pinchflat/workers/video_download_worker_test.exs
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
defmodule Pinchflat.Workers.VideoDownloadWorkerTest do
|
||||||
|
use Pinchflat.DataCase
|
||||||
|
|
||||||
|
import Mox
|
||||||
|
import Pinchflat.MediaFixtures
|
||||||
|
|
||||||
|
alias Pinchflat.Workers.VideoDownloadWorker
|
||||||
|
|
||||||
|
setup :verify_on_exit!
|
||||||
|
|
||||||
|
setup do
|
||||||
|
media_item =
|
||||||
|
Repo.preload(
|
||||||
|
media_item_fixture(%{video_filepath: nil}),
|
||||||
|
[:metadata, channel: :media_profile]
|
||||||
|
)
|
||||||
|
|
||||||
|
{:ok, %{media_item: media_item}}
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "perform/1" do
|
||||||
|
test "it saves attributes to the media_item", %{media_item: media_item} do
|
||||||
|
expect(YtDlpRunnerMock, :run, fn _url, _opts, _ot ->
|
||||||
|
{:ok, render_metadata(:media_metadata)}
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert media_item.video_filepath == nil
|
||||||
|
perform_job(VideoDownloadWorker, %{id: media_item.id})
|
||||||
|
assert Repo.reload(media_item).video_filepath != nil
|
||||||
|
end
|
||||||
|
|
||||||
|
test "it saves the metadata to the media_item", %{media_item: media_item} do
|
||||||
|
expect(YtDlpRunnerMock, :run, fn _url, _opts, _ot ->
|
||||||
|
{:ok, render_metadata(:media_metadata)}
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert media_item.metadata == nil
|
||||||
|
perform_job(VideoDownloadWorker, %{id: media_item.id})
|
||||||
|
assert Repo.reload(media_item).metadata != nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in a new issue