diff --git a/lib/mix/tasks/music_brainz/refresh_fixtures.ex b/lib/mix/tasks/music_brainz/refresh_fixtures.ex index bfb4c9d1..806152f3 100644 --- a/lib/mix/tasks/music_brainz/refresh_fixtures.ex +++ b/lib/mix/tasks/music_brainz/refresh_fixtures.ex @@ -13,6 +13,8 @@ defmodule Mix.Tasks.MusicBrainz.RefreshFixtures do @fixture_files %{ "release_group.json" => "https://musicbrainz.org/ws/2/release-group/20790e26-98e4-3ad3-a67f-b674758b942d?fmt=json&inc=artists+genres+releases+release-group-rels", + "release_group_with_includes.json" => + "https://musicbrainz.org/ws/2/release-group/5db72bc0-6ce3-4beb-bd51-86b58ed8cf71?fmt=json&inc=artists+genres+releases+release-group-rels", "release.json" => "https://musicbrainz.org/ws/2/release/0e290154-5375-4f4f-a658-4a92bf02faa5?fmt=json&inc=release-groups" } diff --git a/lib/music_library/records/record.ex b/lib/music_library/records/record.ex index b88bb971..80cde103 100644 --- a/lib/music_library/records/record.ex +++ b/lib/music_library/records/record.ex @@ -51,6 +51,8 @@ defmodule MusicLibrary.Records.Record do ]) |> cast_embed(:artists, with: &artist_changeset/2) |> generate_cover_hash() + |> update_release_ids() + |> update_included_release_group_ids() |> validate_required([:type, :title, :musicbrainz_id, :release, :genres]) |> unique_constraint(:musicbrainz_id, name: "records_musicbrainz_id_format_index") end diff --git a/test/music_library/records_test.exs b/test/music_library/records_test.exs index acc485c0..ab9b134b 100644 --- a/test/music_library/records_test.exs +++ b/test/music_library/records_test.exs @@ -1,4 +1,5 @@ defmodule MusicLibrary.RecordsTest do + alias MusicLibrary.ReleaseGroupsFixtures use MusicLibrary.DataCase alias MusicLibrary.Records @@ -30,6 +31,25 @@ defmodule MusicLibrary.RecordsTest do |> Enum.map(& &1.id) end + describe "create_record/1" do + test "populates computed values" do + record = + record_fixture(musicbrainz_data: ReleaseGroupsFixtures.release_group_with_includes()) + + assert record.release_ids == ["77e746fc-566f-445b-a62b-cc014280fac9"] + + assert record.included_release_group_ids == [ + "749c07b5-4900-404b-bea9-bb6b16fa991e", + "61077431-0057-4119-8f06-0df1098d21e5", + "c36123e3-8899-48a5-8196-9dbb72421d69", + "d463f2b1-d254-4baf-a957-fb78c6e5b956" + ] + + assert record.cover_hash == + "599407DDF69907D4A60FE13CCAA824D25CF08DC124FD6AA3E8E7ECD98C885FFE" + end + end + describe "search_records/2" do setup [:create_records] diff --git a/test/support/fixtures/records_fixtures.ex b/test/support/fixtures/records_fixtures.ex index bc7576c1..1c583c9e 100644 --- a/test/support/fixtures/records_fixtures.ex +++ b/test/support/fixtures/records_fixtures.ex @@ -5,6 +5,7 @@ defmodule MusicLibrary.RecordsFixtures do """ alias MusicLibrary.Records.Record + alias MusicLibrary.ReleaseGroupsFixtures @genres [ "progressive rock", @@ -59,6 +60,7 @@ defmodule MusicLibrary.RecordsFixtures do cover_url: "https://coverartarchive.org/release-group/#{record_musicbrainz_id}/front", cover_data: File.read!(@marbles_cover_data_path), musicbrainz_id: record_musicbrainz_id, + musicbrainz_data: ReleaseGroupsFixtures.release_group(), title: Enum.random(@titles), type: :album, format: Record.formats() |> Enum.random(), diff --git a/test/support/fixtures/release_group.json b/test/support/fixtures/release_group.json index bfa9c5f6..22de3637 100644 --- a/test/support/fixtures/release_group.json +++ b/test/support/fixtures/release_group.json @@ -1 +1 @@ -{"title":"Marbles","relations":[{"end":null,"target-type":"release_group","type-id":"fcf680a9-6871-4519-8c4b-8c6549575b35","attributes":[],"direction":"backward","begin":null,"release_group":{"secondary-types":[],"primary-type-id":null,"id":"ea42b213-0502-391b-bb51-e2ef6315b300","secondary-type-ids":[],"disambiguation":"","first-release-date":"2005-06","title":"A Handful of Marbles","releases":[],"primary-type":null,"artist-credit":[{"name":"Marillion","joinphrase":"","artist":{"name":"Marillion","type-id":null,"sort-name":"Marillion","type":null,"disambiguation":"British progressive rock band","id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44"}}]},"target-credit":"","type":"single from","source-credit":"","attribute-values":{},"attribute-ids":{},"ended":false},{"attribute-values":{},"source-credit":"","type":"single from","target-credit":"","attribute-ids":{},"ended":false,"target-type":"release_group","end":null,"release_group":{"artist-credit":[{"name":"Marillion","joinphrase":"","artist":{"type-id":null,"sort-name":"Marillion","name":"Marillion","id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44","type":null,"disambiguation":"British progressive rock band"}}],"primary-type":null,"releases":[],"title":"Don’t Hurt Yourself","first-release-date":"2004-07-12","disambiguation":"","secondary-type-ids":[],"id":"46d750b1-e53b-32b6-8f32-5cf78b23667b","primary-type-id":null,"secondary-types":[]},"attributes":[],"type-id":"fcf680a9-6871-4519-8c4b-8c6549575b35","begin":null,"direction":"backward"},{"release_group":{"title":"You’re Gone","artist-credit":[{"artist":{"id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44","type":null,"disambiguation":"British progressive rock band","type-id":null,"sort-name":"Marillion","name":"Marillion"},"name":"Marillion","joinphrase":""}],"primary-type":null,"releases":[],"id":"2aec590d-e18e-3043-bec4-eef3dfd1eefd","primary-type-id":null,"secondary-types":[],"first-release-date":"2004-04-19","disambiguation":"","secondary-type-ids":[]},"attributes":[],"type-id":"fcf680a9-6871-4519-8c4b-8c6549575b35","direction":"backward","begin":null,"target-type":"release_group","end":null,"attribute-ids":{},"ended":false,"source-credit":"","attribute-values":{},"type":"single from","target-credit":""}],"secondary-types":[],"genres":[{"id":"ceeaa283-5d7b-4202-8d1d-e25d116b2a18","count":1,"name":"alternative rock","disambiguation":""},{"count":1,"id":"b7ef058e-6d83-4ca4-8123-9724bff4648b","disambiguation":"","name":"art rock"},{"count":1,"id":"150eb95a-7739-4fde-a5fe-b62ca576a928","name":"baroque pop","disambiguation":""},{"name":"pop rock","disambiguation":"","count":1,"id":"797e2e85-5ffd-495c-a757-8b4079052f0e"},{"count":2,"id":"ae9b8279-3959-48d8-8a88-741a7f6d4a48","disambiguation":"","name":"progressive rock"},{"count":1,"id":"2aeb5340-c474-4677-b9a6-35ddac9b6a58","name":"psychedelic pop","disambiguation":""},{"id":"0e3fc579-2d24-4f20-9dae-736e1ec78798","count":2,"name":"rock","disambiguation":""}],"first-release-date":"2004-05-03","artist-credit":[{"artist":{"name":"Marillion","type-id":"e431f5f6-b5d2-343d-8b36-72607fffb74b","sort-name":"Marillion","disambiguation":"British progressive rock band","type":"Group","genres":[{"name":"progressive rock","disambiguation":"","count":10,"id":"ae9b8279-3959-48d8-8a88-741a7f6d4a48"}],"id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44"},"name":"Marillion","joinphrase":""}],"primary-type":"Album","releases":[{"barcode":"","packaging":"Jewel Case","release-events":[{"area":{"name":"Europe","type-id":null,"sort-name":"Europe","disambiguation":"","type":null,"id":"89a675c2-3e37-3518-b83c-418bad59a85a","iso-3166-1-codes":["XE"]},"date":"2004-05-03"}],"id":"0e290154-5375-4f4f-a658-4a92bf02faa5","text-representation":{"language":"eng","script":"Latn"},"disambiguation":"non‐deluxe double CD with o‐card","country":"XE","title":"Marbles","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","status":"Official","quality":"normal","genres":[],"packaging-id":"ec27701a-4a22-37f4-bfac-6616e0f9750a","date":"2004-05-03"},{"id":"3f1cc80f-4507-48a9-899c-c1bda83280c2","text-representation":{"script":"Latn","language":"eng"},"disambiguation":"limited deluxe campaign edition","barcode":"","packaging":"Other","release-events":[{"date":"2004-05-03","area":{"type":null,"disambiguation":"","id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","iso-3166-1-codes":["GB"],"name":"United Kingdom","type-id":null,"sort-name":"United Kingdom"}}],"quality":"normal","genres":[],"packaging-id":"815b7785-8284-3926-8f04-e48bc6c4d102","date":"2004-05-03","country":"GB","title":"Marbles","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","status":"Official"},{"status-id":"4e304316-386d-3409-af2e-78857eec5cfe","title":"Marbles","country":"GB","status":"Official","quality":"normal","date":"2004-05-03","packaging-id":"ec27701a-4a22-37f4-bfac-6616e0f9750a","genres":[],"packaging":"Jewel Case","barcode":"5037300650128","release-events":[{"date":"2004-05-03","area":{"type-id":null,"sort-name":"United Kingdom","name":"United Kingdom","iso-3166-1-codes":["GB"],"id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","disambiguation":"","type":null}}],"id":"d3f9b9e2-73f5-4b47-a2a7-2c2199aad608","disambiguation":"","text-representation":{"language":"eng","script":"Latn"}},{"date":"2004","packaging-id":"ec27701a-4a22-37f4-bfac-6616e0f9750a","genres":[],"quality":"normal","status":"Bootleg","status-id":"1156806e-d06a-38bd-83f0-cf2284a808b9","title":"Marbles","country":"RU","disambiguation":"","text-representation":{"script":"Latn","language":"eng"},"id":"2c4ecd84-7a84-4f42-a600-2f00ed8978c9","release-events":[{"date":"2004","area":{"id":"1f1fc3a4-9500-39b8-9f10-f0a465557eef","iso-3166-1-codes":["RU"],"disambiguation":"","type":null,"sort-name":"Russia","type-id":null,"name":"Russia"}}],"packaging":"Jewel Case","barcode":""},{"genres":[],"packaging-id":null,"date":"2004","quality":"normal","status":"Official","country":"US","title":"Marbles","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","text-representation":{"language":"eng","script":"Latn"},"disambiguation":"","id":"ab151aa6-7538-4e93-be60-eded52b5b7b7","release-events":[{"date":"2004","area":{"type":null,"disambiguation":"","iso-3166-1-codes":["US"],"id":"489ce91b-6658-3307-9877-795b68554c98","name":"United States","type-id":null,"sort-name":"United States"}}],"barcode":"803341127920","packaging":null},{"status-id":"4e304316-386d-3409-af2e-78857eec5cfe","country":"GB","title":"Marbles","status":"Official","quality":"normal","date":"2011-04-25","genres":[],"packaging-id":"f7101ce3-0384-39ce-9fde-fbbd0044d35f","packaging":"Cardboard/Paper Sleeve","barcode":"636551597210","release-events":[{"area":{"type-id":null,"sort-name":"United Kingdom","name":"United Kingdom","iso-3166-1-codes":["GB"],"id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","type":null,"disambiguation":""},"date":"2011-04-25"}],"id":"b94bbd1f-ae5d-4e7b-98ff-28bfe135f20c","disambiguation":"","text-representation":{"script":"Latn","language":"eng"}},{"barcode":"636551597227","packaging":"Digibook","release-events":[{"area":{"type-id":null,"sort-name":"United Kingdom","name":"United Kingdom","id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","iso-3166-1-codes":["GB"],"type":null,"disambiguation":""},"date":"2011-04-25"}],"id":"4b9fe13b-4837-4c02-9368-e97ba6f5a086","text-representation":{"language":"eng","script":"Latn"},"disambiguation":"","title":"Marbles","country":"GB","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","status":"Official","quality":"normal","packaging-id":"9f2e13bc-f84f-428a-8342-fd86ece7fc4d","genres":[],"date":"2011-04-25"},{"genres":[],"packaging-id":"815b7785-8284-3926-8f04-e48bc6c4d102","date":"2017","quality":"normal","status":"Official","country":"XE","title":"Marbles","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","text-representation":{"script":"Latn","language":"eng"},"disambiguation":"","id":"a4b02377-0b5e-448e-9cd6-5500c0378523","release-events":[{"area":{"name":"Europe","type-id":null,"sort-name":"Europe","disambiguation":"","type":null,"id":"89a675c2-3e37-3518-b83c-418bad59a85a","iso-3166-1-codes":["XE"]},"date":"2017"}],"barcode":"636551808613","packaging":"Other"},{"quality":"normal","date":"","genres":[],"packaging-id":"119eba76-b343-3e02-a292-f0f00644bb9b","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","country":"XW","title":"Marbles","status":"Official","id":"f3937bc5-b99f-443a-9609-a404201f21ca","disambiguation":"","text-representation":{"script":"Latn","language":"eng"},"packaging":"None","barcode":"859724565117","release-events":[{"date":"","area":{"disambiguation":"","type":null,"id":"525d4e18-3d00-31b9-a58b-a146a916de8f","iso-3166-1-codes":["XW"],"name":"[Worldwide]","type-id":null,"sort-name":"[Worldwide]"}}]}],"primary-type-id":"f529b476-6e62-324f-b0aa-1f3e33d313fc","id":"20790e26-98e4-3ad3-a67f-b674758b942d","secondary-type-ids":[],"disambiguation":""} \ No newline at end of file +{"id":"20790e26-98e4-3ad3-a67f-b674758b942d","secondary-types":[],"artist-credit":[{"artist":{"genres":[{"disambiguation":"","id":"ae9b8279-3959-48d8-8a88-741a7f6d4a48","count":10,"name":"progressive rock"}],"type-id":"e431f5f6-b5d2-343d-8b36-72607fffb74b","id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44","name":"Marillion","sort-name":"Marillion","disambiguation":"British progressive rock band","type":"Group"},"joinphrase":"","name":"Marillion"}],"primary-type":"Album","first-release-date":"2004-05-03","primary-type-id":"f529b476-6e62-324f-b0aa-1f3e33d313fc","disambiguation":"","relations":[{"target-type":"release_group","attribute-ids":{},"release_group":{"disambiguation":"","secondary-type-ids":[],"artist-credit":[{"joinphrase":"","artist":{"name":"Marillion","sort-name":"Marillion","id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44","type-id":null,"type":null,"disambiguation":"British progressive rock band"},"name":"Marillion"}],"secondary-types":[],"id":"ea42b213-0502-391b-bb51-e2ef6315b300","primary-type":null,"releases":[],"first-release-date":"2005-06","primary-type-id":null,"title":"A Handful of Marbles"},"source-credit":"","end":null,"attribute-values":{},"target-credit":"","type-id":"fcf680a9-6871-4519-8c4b-8c6549575b35","begin":null,"ended":false,"type":"single from","attributes":[],"direction":"backward"},{"attributes":[],"direction":"backward","type":"single from","begin":null,"ended":false,"type-id":"fcf680a9-6871-4519-8c4b-8c6549575b35","source-credit":"","end":null,"attribute-values":{},"target-credit":"","target-type":"release_group","release_group":{"primary-type":null,"releases":[],"title":"Don’t Hurt Yourself","first-release-date":"2004-07-12","primary-type-id":null,"disambiguation":"","secondary-types":[],"artist-credit":[{"joinphrase":"","artist":{"disambiguation":"British progressive rock band","type":null,"type-id":null,"id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44","name":"Marillion","sort-name":"Marillion"},"name":"Marillion"}],"id":"46d750b1-e53b-32b6-8f32-5cf78b23667b","secondary-type-ids":[]},"attribute-ids":{}},{"type-id":"fcf680a9-6871-4519-8c4b-8c6549575b35","begin":null,"ended":false,"target-type":"release_group","attribute-ids":{},"release_group":{"releases":[],"primary-type":null,"title":"You’re Gone","first-release-date":"2004-04-19","primary-type-id":null,"disambiguation":"","id":"2aec590d-e18e-3043-bec4-eef3dfd1eefd","artist-credit":[{"artist":{"id":"1932f5b6-0b7b-4050-b1df-833ca89e5f44","sort-name":"Marillion","name":"Marillion","disambiguation":"British progressive rock band","type":null,"type-id":null},"joinphrase":"","name":"Marillion"}],"secondary-types":[],"secondary-type-ids":[]},"source-credit":"","end":null,"attribute-values":{},"target-credit":"","type":"single from","attributes":[],"direction":"backward"}],"secondary-type-ids":[],"releases":[{"packaging-id":"ec27701a-4a22-37f4-bfac-6616e0f9750a","barcode":"","status":"Official","quality":"normal","country":"XE","disambiguation":"non‐deluxe double CD with o‐card","packaging":"Jewel Case","genres":[],"title":"Marbles","date":"2004-05-03","id":"0e290154-5375-4f4f-a658-4a92bf02faa5","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","text-representation":{"script":"Latn","language":"eng"},"release-events":[{"area":{"iso-3166-1-codes":["XE"],"type-id":null,"name":"Europe","sort-name":"Europe","id":"89a675c2-3e37-3518-b83c-418bad59a85a","disambiguation":"","type":null},"date":"2004-05-03"}]},{"date":"2004-05-03","id":"3f1cc80f-4507-48a9-899c-c1bda83280c2","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","text-representation":{"language":"eng","script":"Latn"},"release-events":[{"area":{"name":"United Kingdom","sort-name":"United Kingdom","id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","type":null,"disambiguation":"","iso-3166-1-codes":["GB"],"type-id":null},"date":"2004-05-03"}],"packaging-id":"815b7785-8284-3926-8f04-e48bc6c4d102","barcode":"","status":"Official","quality":"normal","country":"GB","disambiguation":"limited deluxe campaign edition","packaging":"Other","genres":[],"title":"Marbles"},{"text-representation":{"script":"Latn","language":"eng"},"release-events":[{"date":"2004-05-03","area":{"name":"United Kingdom","sort-name":"United Kingdom","id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","disambiguation":"","type":null,"iso-3166-1-codes":["GB"],"type-id":null}}],"date":"2004-05-03","id":"d3f9b9e2-73f5-4b47-a2a7-2c2199aad608","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","genres":[],"title":"Marbles","country":"GB","disambiguation":"","barcode":"5037300650128","packaging-id":"ec27701a-4a22-37f4-bfac-6616e0f9750a","status":"Official","quality":"normal","packaging":"Jewel Case"},{"id":"2c4ecd84-7a84-4f42-a600-2f00ed8978c9","status-id":"1156806e-d06a-38bd-83f0-cf2284a808b9","date":"2004","release-events":[{"area":{"sort-name":"Russia","name":"Russia","id":"1f1fc3a4-9500-39b8-9f10-f0a465557eef","type":null,"disambiguation":"","iso-3166-1-codes":["RU"],"type-id":null},"date":"2004"}],"text-representation":{"script":"Latn","language":"eng"},"packaging":"Jewel Case","packaging-id":"ec27701a-4a22-37f4-bfac-6616e0f9750a","barcode":"","quality":"normal","status":"Bootleg","country":"RU","disambiguation":"","title":"Marbles","genres":[]},{"id":"ab151aa6-7538-4e93-be60-eded52b5b7b7","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","date":"2004","release-events":[{"area":{"iso-3166-1-codes":["US"],"type-id":null,"name":"United States","sort-name":"United States","id":"489ce91b-6658-3307-9877-795b68554c98","disambiguation":"","type":null},"date":"2004"}],"text-representation":{"language":"eng","script":"Latn"},"packaging":null,"packaging-id":null,"barcode":"803341127920","quality":"normal","status":"Official","country":"US","disambiguation":"","title":"Marbles","genres":[]},{"date":"2011-04-25","id":"b94bbd1f-ae5d-4e7b-98ff-28bfe135f20c","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","text-representation":{"script":"Latn","language":"eng"},"release-events":[{"area":{"iso-3166-1-codes":["GB"],"type-id":null,"name":"United Kingdom","sort-name":"United Kingdom","id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","disambiguation":"","type":null},"date":"2011-04-25"}],"barcode":"636551597210","packaging-id":"f7101ce3-0384-39ce-9fde-fbbd0044d35f","status":"Official","quality":"normal","disambiguation":"","country":"GB","packaging":"Cardboard/Paper Sleeve","genres":[],"title":"Marbles"},{"packaging":"Digibook","barcode":"636551597227","packaging-id":"9f2e13bc-f84f-428a-8342-fd86ece7fc4d","status":"Official","quality":"normal","country":"GB","disambiguation":"","title":"Marbles","genres":[],"id":"4b9fe13b-4837-4c02-9368-e97ba6f5a086","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","date":"2011-04-25","release-events":[{"area":{"type-id":null,"iso-3166-1-codes":["GB"],"type":null,"disambiguation":"","name":"United Kingdom","sort-name":"United Kingdom","id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed"},"date":"2011-04-25"}],"text-representation":{"script":"Latn","language":"eng"}},{"genres":[],"title":"Marbles","country":"XE","disambiguation":"","barcode":"636551808613","packaging-id":"815b7785-8284-3926-8f04-e48bc6c4d102","quality":"normal","status":"Official","packaging":"Other","text-representation":{"script":"Latn","language":"eng"},"release-events":[{"area":{"type-id":null,"iso-3166-1-codes":["XE"],"disambiguation":"","type":null,"id":"89a675c2-3e37-3518-b83c-418bad59a85a","sort-name":"Europe","name":"Europe"},"date":"2017"}],"date":"2017","id":"a4b02377-0b5e-448e-9cd6-5500c0378523","status-id":"4e304316-386d-3409-af2e-78857eec5cfe"},{"genres":[],"title":"Marbles","country":"XW","disambiguation":"","status":"Official","quality":"normal","packaging-id":"119eba76-b343-3e02-a292-f0f00644bb9b","barcode":"859724565117","packaging":"None","text-representation":{"language":"eng","script":"Latn"},"release-events":[{"date":"","area":{"disambiguation":"","type":null,"sort-name":"[Worldwide]","name":"[Worldwide]","id":"525d4e18-3d00-31b9-a58b-a146a916de8f","type-id":null,"iso-3166-1-codes":["XW"]}}],"date":"","status-id":"4e304316-386d-3409-af2e-78857eec5cfe","id":"f3937bc5-b99f-443a-9609-a404201f21ca"}],"genres":[{"disambiguation":"","id":"ceeaa283-5d7b-4202-8d1d-e25d116b2a18","count":1,"name":"alternative rock"},{"id":"b7ef058e-6d83-4ca4-8123-9724bff4648b","count":1,"name":"art rock","disambiguation":""},{"disambiguation":"","id":"150eb95a-7739-4fde-a5fe-b62ca576a928","count":1,"name":"baroque pop"},{"name":"pop rock","count":1,"id":"797e2e85-5ffd-495c-a757-8b4079052f0e","disambiguation":""},{"disambiguation":"","count":2,"name":"progressive rock","id":"ae9b8279-3959-48d8-8a88-741a7f6d4a48"},{"name":"psychedelic pop","count":1,"id":"2aeb5340-c474-4677-b9a6-35ddac9b6a58","disambiguation":""},{"id":"0e3fc579-2d24-4f20-9dae-736e1ec78798","name":"rock","count":2,"disambiguation":""}],"title":"Marbles"} \ No newline at end of file diff --git a/test/support/fixtures/release_group_with_includes.json b/test/support/fixtures/release_group_with_includes.json new file mode 100644 index 00000000..fa0ce50b --- /dev/null +++ b/test/support/fixtures/release_group_with_includes.json @@ -0,0 +1 @@ +{"primary-type-id":"f529b476-6e62-324f-b0aa-1f3e33d313fc","first-release-date":"2022-05-20","genres":[{"name":"electronic","count":1,"id":"89255676-1f14-4dd8-bbad-fca839d6aff4","disambiguation":""}],"primary-type":"Album","secondary-type-ids":["dd2a21e1-0c00-3729-a7a0-de60b84eb5d1"],"releases":[{"id":"77e746fc-566f-445b-a62b-cc014280fac9","quality":"normal","packaging-id":"d60b6157-79fe-3913-ab8b-23b32de8690d","text-representation":{"script":"Latn","language":"eng"},"status-id":"4e304316-386d-3409-af2e-78857eec5cfe","date":"2022-05-20","genres":[],"country":"GB","barcode":null,"release-events":[{"area":{"type":null,"id":"8a754a16-0027-3a29-b6d7-2b40ea0481ed","sort-name":"United Kingdom","iso-3166-1-codes":["GB"],"disambiguation":"","type-id":null,"name":"United Kingdom"},"date":"2022-05-20"}],"disambiguation":"","packaging":"Book","title":"Lockdown Trilogy","status":"Official"}],"id":"5db72bc0-6ce3-4beb-bd51-86b58ed8cf71","relations":[{"source-credit":"","attributes":[],"attribute-values":{},"end":null,"begin":null,"target-credit":"","attribute-ids":{},"type":"included in","ended":false,"release_group":{"secondary-types":[],"title":"Claustrophobic Universe","disambiguation":"","artist-credit":[{"joinphrase":"","name":"Mariusz Duda","artist":{"id":"641716a3-ae21-4c5f-bdef-dfca90df27f3","sort-name":"Duda, Mariusz","type":null,"name":"Mariusz Duda","disambiguation":"","type-id":null}}],"releases":[],"secondary-type-ids":[],"id":"749c07b5-4900-404b-bea9-bb6b16fa991e","primary-type-id":null,"first-release-date":"2021-04-23","primary-type":null},"direction":"backward","target-type":"release_group","type-id":"589447ea-be2c-46cc-b9e9-469e1d06e18a"},{"type":"included in","attribute-ids":{},"type-id":"589447ea-be2c-46cc-b9e9-469e1d06e18a","ended":false,"release_group":{"artist-credit":[{"name":"Mariusz Duda","joinphrase":"","artist":{"id":"641716a3-ae21-4c5f-bdef-dfca90df27f3","sort-name":"Duda, Mariusz","type":null,"name":"Mariusz Duda","type-id":null,"disambiguation":""}}],"disambiguation":"","title":"Interior Drawings","secondary-types":[],"id":"61077431-0057-4119-8f06-0df1098d21e5","releases":[],"secondary-type-ids":[],"primary-type":null,"first-release-date":"2021-12-10","primary-type-id":null},"direction":"backward","target-type":"release_group","attributes":[],"attribute-values":{},"source-credit":"","begin":null,"target-credit":"","end":null},{"begin":null,"target-credit":"","end":null,"attributes":[],"attribute-values":{},"source-credit":"","type-id":"589447ea-be2c-46cc-b9e9-469e1d06e18a","ended":false,"release_group":{"title":"Let’s Meet Outside","secondary-types":[],"artist-credit":[{"joinphrase":"","name":"Mariusz Duda","artist":{"name":"Mariusz Duda","disambiguation":"","type-id":null,"sort-name":"Duda, Mariusz","id":"641716a3-ae21-4c5f-bdef-dfca90df27f3","type":null}}],"disambiguation":"","first-release-date":"2022-05-20","primary-type-id":null,"primary-type":null,"releases":[],"secondary-type-ids":[],"id":"c36123e3-8899-48a5-8196-9dbb72421d69"},"direction":"backward","target-type":"release_group","type":"included in","attribute-ids":{}},{"attribute-ids":{},"type":"included in","release_group":{"secondary-type-ids":[],"releases":[],"id":"d463f2b1-d254-4baf-a957-fb78c6e5b956","first-release-date":"2020-06-26","primary-type-id":null,"primary-type":null,"secondary-types":[],"title":"Lockdown Spaces","artist-credit":[{"artist":{"type":null,"id":"641716a3-ae21-4c5f-bdef-dfca90df27f3","sort-name":"Duda, Mariusz","type-id":null,"disambiguation":"","name":"Mariusz Duda"},"joinphrase":"","name":"Mariusz Duda"}],"disambiguation":""},"target-type":"release_group","direction":"backward","ended":false,"type-id":"589447ea-be2c-46cc-b9e9-469e1d06e18a","source-credit":"","attribute-values":{},"attributes":[],"end":null,"target-credit":"","begin":null}],"title":"Lockdown Trilogy","secondary-types":["Compilation"],"disambiguation":"","artist-credit":[{"joinphrase":"","name":"Mariusz Duda","artist":{"id":"641716a3-ae21-4c5f-bdef-dfca90df27f3","sort-name":"Duda, Mariusz","type":"Person","genres":[{"count":1,"name":"rock","disambiguation":"","id":"0e3fc579-2d24-4f20-9dae-736e1ec78798"}],"disambiguation":"","type-id":"b6e035f4-3ce9-331c-97df-83397230b0df","name":"Mariusz Duda"}}]} \ No newline at end of file diff --git a/test/support/fixtures/release_groups_fixtures.ex b/test/support/fixtures/release_groups_fixtures.ex index 358125d1..0af8f46d 100644 --- a/test/support/fixtures/release_groups_fixtures.ex +++ b/test/support/fixtures/release_groups_fixtures.ex @@ -30,6 +30,12 @@ defmodule MusicLibrary.ReleaseGroupsFixtures do |> Jason.decode!() end + def release_group_with_includes do + Path.join([@fixtures_folder, "release_group_with_includes.json"]) + |> File.read!() + |> Jason.decode!() + end + def release_id do release() |> Map.get("id") end