Add test for importing a record from a release
This commit is contained in:
@@ -167,4 +167,44 @@ defmodule MusicLibrary.RecordsTest do
|
|||||||
assert record.purchased_at == DateTime.truncate(current_time, :second)
|
assert record.purchased_at == DateTime.truncate(current_time, :second)
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|||||||
@@ -100,4 +100,57 @@ defmodule MusicLibrary.ReleaseGroupsFixtures do
|
|||||||
"title" => "Marbles"
|
"title" => "Marbles"
|
||||||
}
|
}
|
||||||
end
|
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" => "non‐deluxe double CD with o‐card",
|
||||||
|
"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
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user