Added way to track media filesize (#48)

This commit is contained in:
Kieran
2024-03-02 19:19:10 -08:00
committed by GitHub
parent 0f40dcf5dd
commit b370c97bfb
10 changed files with 141 additions and 6 deletions
@@ -0,0 +1,25 @@
defmodule Pinchflat.Tasks.MediaItemTasksTest do
use Pinchflat.DataCase
import Pinchflat.MediaFixtures
alias Pinchflat.Tasks.MediaItemTasks
describe "compute_and_save_media_filesize/1" do
test "updates the media item with the file size" do
media_item = media_item_with_attachments()
refute media_item.media_size_bytes
assert {:ok, media_item} = MediaItemTasks.compute_and_save_media_filesize(media_item)
assert Repo.reload!(media_item).media_size_bytes
end
test "returns the error if operation fails" do
media_item = media_item_fixture(%{media_filepath: "/nonexistent/file.mkv"})
assert {:error, _} = MediaItemTasks.compute_and_save_media_filesize(media_item)
end
end
end
@@ -0,0 +1,19 @@
defmodule Pinchflat.Workers.FilesystemDataWorkerTest do
use Pinchflat.DataCase
import Pinchflat.MediaFixtures
alias Pinchflat.Workers.FilesystemDataWorker
describe "perform/1" do
test "Computes and stores the media file size" do
media_item = media_item_with_attachments()
refute media_item.media_size_bytes
perform_job(FilesystemDataWorker, %{id: media_item.id})
assert Repo.reload!(media_item).media_size_bytes
end
end
end
@@ -6,6 +6,7 @@ defmodule Pinchflat.Workers.VideoDownloadWorkerTest do
alias Pinchflat.Sources
alias Pinchflat.Workers.VideoDownloadWorker
alias Pinchflat.Workers.FilesystemDataWorker
setup :verify_on_exit!
@@ -68,5 +69,17 @@ defmodule Pinchflat.Workers.VideoDownloadWorkerTest do
perform_job(VideoDownloadWorker, %{id: media_item.id})
end
test "it schedules a filesystem data worker", %{media_item: media_item} do
expect(YtDlpRunnerMock, :run, fn _url, _opts, _ot ->
{:ok, render_metadata(:media_metadata)}
end)
assert [] = all_enqueued(worker: FilesystemDataWorker)
perform_job(VideoDownloadWorker, %{id: media_item.id})
assert [_] = all_enqueued(worker: FilesystemDataWorker)
end
end
end