Cancel refresh cover job if image is not available
This commit is contained in:
@@ -5,8 +5,15 @@ defmodule MusicLibrary.Worker.RefreshCover do
|
|||||||
def perform(%Oban.Job{args: %{"id" => record_id}}) do
|
def perform(%Oban.Job{args: %{"id" => record_id}}) do
|
||||||
record = MusicLibrary.Records.get_record!(record_id)
|
record = MusicLibrary.Records.get_record!(record_id)
|
||||||
|
|
||||||
with {:ok, updated_record} <- MusicLibrary.Records.refresh_cover(record) do
|
case MusicLibrary.Records.refresh_cover(record) do
|
||||||
MusicLibrary.Records.notify_update(updated_record)
|
{:ok, updated_record} ->
|
||||||
|
MusicLibrary.Records.notify_update(updated_record)
|
||||||
|
|
||||||
|
{:error, :cover_not_available} ->
|
||||||
|
{:cancel, :cover_not_available}
|
||||||
|
|
||||||
|
error ->
|
||||||
|
error
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -24,6 +24,18 @@ defmodule MusicLibrary.Worker.RefreshCoverTest do
|
|||||||
assert asset.format == "image/jpeg"
|
assert asset.format == "image/jpeg"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@tag :capture_log
|
||||||
|
test "cancels the job when cover is not available" do
|
||||||
|
record = record()
|
||||||
|
|
||||||
|
Req.Test.stub(MusicBrainz.API, fn conn ->
|
||||||
|
Plug.Conn.send_resp(conn, 404, "Not Found")
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert {:cancel, :cover_not_available} =
|
||||||
|
perform_job(RefreshCover, %{"id" => record.id})
|
||||||
|
end
|
||||||
|
|
||||||
test "raises when record does not exist" do
|
test "raises when record does not exist" do
|
||||||
assert_raise Ecto.NoResultsError, fn ->
|
assert_raise Ecto.NoResultsError, fn ->
|
||||||
perform_job(RefreshCover, %{"id" => Ecto.UUID.generate()})
|
perform_job(RefreshCover, %{"id" => Ecto.UUID.generate()})
|
||||||
|
|||||||
Reference in New Issue
Block a user