Add test for importing a record from a release

This commit is contained in:
Claudio Ortolina
2024-11-12 09:54:47 +00:00
parent c8df700939
commit ae3c754570
2 changed files with 93 additions and 0 deletions
+40
View File
@@ -167,4 +167,44 @@ defmodule MusicLibrary.RecordsTest do
assert record.purchased_at == DateTime.truncate(current_time, :second)
end
end
describe "import_from_musicbrainz_release/2" do
test "it saves a record with its cover art" do
current_time = DateTime.utc_now()
release = release()
release_id = release_id()
release_group = release_group()
release_group_id = release_group_id()
expect(APIBehaviourMock, :get_release, fn ^release_id ->
{:ok, release}
end)
expect(APIBehaviourMock, :get_release_group, fn ^release_group_id ->
{:ok, release_group}
end)
cover_data = File.read!(marbles_cover_fixture())
expect(APIBehaviourMock, :get_cover_art, fn {:musicbrainz_id, ^release_group_id} ->
{:ok, cover_data}
end)
assert {:ok, record} =
Records.import_from_musicbrainz_release(release_id,
format: :vinyl,
purchased_at: current_time
)
assert [artist] = record.artists
assert artist.name == "Marillion"
assert record.musicbrainz_id == release_group_id
assert record.title == "Marbles"
assert record.format == :vinyl
assert record.purchased_at == DateTime.truncate(current_time, :second)
end
end
end
@@ -100,4 +100,57 @@ defmodule MusicLibrary.ReleaseGroupsFixtures do
"title" => "Marbles"
}
end
def release_id do
release() |> Map.get("id")
end
def release do
%{
"asin" => nil,
"barcode" => "",
"country" => "XE",
"cover-art-archive" => %{
"artwork" => false,
"back" => false,
"count" => 0,
"darkened" => false,
"front" => false
},
"date" => "2004-05-03",
"disambiguation" => "nondeluxe double CD with ocard",
"id" => "0e290154-5375-4f4f-a658-4a92bf02faa5",
"packaging" => "Jewel Case",
"packaging-id" => "ec27701a-4a22-37f4-bfac-6616e0f9750a",
"quality" => "normal",
"release-events" => [
%{
"area" => %{
"disambiguation" => "",
"id" => "89a675c2-3e37-3518-b83c-418bad59a85a",
"iso-3166-1-codes" => ["XE"],
"name" => "Europe",
"sort-name" => "Europe",
"type" => nil,
"type-id" => nil
},
"date" => "2004-05-03"
}
],
"release-group" => %{
"disambiguation" => "",
"first-release-date" => "2004-05-03",
"id" => "20790e26-98e4-3ad3-a67f-b674758b942d",
"primary-type" => "Album",
"primary-type-id" => "f529b476-6e62-324f-b0aa-1f3e33d313fc",
"secondary-type-ids" => [],
"secondary-types" => [],
"title" => "Marbles"
},
"status" => "Official",
"status-id" => "4e304316-386d-3409-af2e-78857eec5cfe",
"text-representation" => %{"language" => "eng", "script" => "Latn"},
"title" => "Marbles"
}
end
end