Make sure to pull artists info when record is updated
Catches the scenario when a new artist is added
This commit is contained in:
@@ -430,6 +430,13 @@ defmodule MusicLibrary.Records do
|
|||||||
|
|
||||||
@spec update_record(Record.t(), map()) :: {:ok, Record.t()} | {:error, Ecto.Changeset.t()}
|
@spec update_record(Record.t(), map()) :: {:ok, Record.t()} | {:error, Ecto.Changeset.t()}
|
||||||
def update_record(%Record{} = record, attrs) do
|
def update_record(%Record{} = record, attrs) do
|
||||||
|
with {:ok, updated_record} <- do_update_record(record, attrs),
|
||||||
|
:ok <- refresh_artist_info_async(updated_record) do
|
||||||
|
{:ok, updated_record}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp do_update_record(record, attrs) do
|
||||||
record
|
record
|
||||||
|> Record.changeset(attrs)
|
|> Record.changeset(attrs)
|
||||||
|> Repo.update()
|
|> Repo.update()
|
||||||
|
|||||||
@@ -69,6 +69,22 @@ defmodule MusicLibrary.RecordsTest do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "update_record/2" do
|
||||||
|
test "queues a task to retrieve artist info data" do
|
||||||
|
record =
|
||||||
|
record(musicbrainz_data: release_group(:lockdown_trilogy))
|
||||||
|
|
||||||
|
[artist] = record.artists
|
||||||
|
|
||||||
|
Oban.drain_queue(queue: :default)
|
||||||
|
|
||||||
|
Records.update_record(record, %{title: "Updated Title"})
|
||||||
|
|
||||||
|
assert_enqueued worker: MusicLibrary.Worker.FetchArtistInfo,
|
||||||
|
args: %{id: artist.musicbrainz_id}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "delete_record/1" do
|
describe "delete_record/1" do
|
||||||
test "queues a task to delete artist info data" do
|
test "queues a task to delete artist info data" do
|
||||||
record =
|
record =
|
||||||
|
|||||||
Reference in New Issue
Block a user