Refactor Record.child_release_groups/1 to use stored ids
This commit is contained in:
@@ -57,9 +57,7 @@ defmodule MusicLibrary.Records.Record do
|
|||||||
record.musicbrainz_data
|
record.musicbrainz_data
|
||||||
|> Map.get("relations", [])
|
|> Map.get("relations", [])
|
||||||
|> Enum.filter(fn relation ->
|
|> Enum.filter(fn relation ->
|
||||||
relation["target-type"] == "release_group" and
|
relation["release_group"]["id"] in record.included_release_group_ids
|
||||||
relation["type"] == "included in" and
|
|
||||||
relation["direction"] == "backward"
|
|
||||||
end)
|
end)
|
||||||
|> Enum.map(fn relation ->
|
|> Enum.map(fn relation ->
|
||||||
MusicBrainz.ReleaseGroup.from_api_response(relation["release_group"])
|
MusicBrainz.ReleaseGroup.from_api_response(relation["release_group"])
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
defmodule MusicLibrary.Records.RecordTest do
|
defmodule MusicLibrary.Records.RecordTest do
|
||||||
use ExUnit.Case, async: true
|
use ExUnit.Case, async: true
|
||||||
|
|
||||||
|
import MusicLibrary.ReleaseGroupsFixtures
|
||||||
|
alias MusicLibrary.Records.Record
|
||||||
|
|
||||||
defp get_current_date(_) do
|
defp get_current_date(_) do
|
||||||
%{current_date: ~D[2025-01-01]}
|
%{current_date: ~D[2025-01-01]}
|
||||||
end
|
end
|
||||||
@@ -11,27 +14,82 @@ defmodule MusicLibrary.Records.RecordTest do
|
|||||||
test "returns true if the record has a release date in the past", %{
|
test "returns true if the record has a release date in the past", %{
|
||||||
current_date: current_date
|
current_date: current_date
|
||||||
} do
|
} do
|
||||||
record = %MusicLibrary.Records.Record{release: "2024-01-01"}
|
record = %Record{release: "2024-01-01"}
|
||||||
assert MusicLibrary.Records.Record.released?(record, current_date)
|
assert Record.released?(record, current_date)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "returns false if the record has a release date in the future", %{
|
test "returns false if the record has a release date in the future", %{
|
||||||
current_date: current_date
|
current_date: current_date
|
||||||
} do
|
} do
|
||||||
record = %MusicLibrary.Records.Record{release: "2025-02-01"}
|
record = %Record{release: "2025-02-01"}
|
||||||
refute MusicLibrary.Records.Record.released?(record, current_date)
|
refute Record.released?(record, current_date)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "returns true if the record is released today", %{current_date: current_date} do
|
test "returns true if the record is released today", %{current_date: current_date} do
|
||||||
record = %MusicLibrary.Records.Record{release: "2025-01-01"}
|
record = %Record{release: "2025-01-01"}
|
||||||
assert MusicLibrary.Records.Record.released?(record, current_date)
|
assert Record.released?(record, current_date)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it returns true if the release date is not precise enough", %{
|
test "it returns true if the release date is not precise enough", %{
|
||||||
current_date: current_date
|
current_date: current_date
|
||||||
} do
|
} do
|
||||||
record = %MusicLibrary.Records.Record{release: "2019"}
|
record = %Record{release: "2019"}
|
||||||
assert MusicLibrary.Records.Record.released?(record, current_date)
|
assert Record.released?(record, current_date)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "child_release_groups/1" do
|
||||||
|
test "returns the release groups of children releases" do
|
||||||
|
release_group = release_group(:lockdown_trilogy)
|
||||||
|
|
||||||
|
record =
|
||||||
|
%Record{musicbrainz_data: release_group}
|
||||||
|
|> Record.update_included_release_group_ids()
|
||||||
|
|> Ecto.Changeset.apply_changes()
|
||||||
|
|
||||||
|
assert Record.child_release_groups(record) == [
|
||||||
|
%MusicBrainz.ReleaseGroup{
|
||||||
|
id: "749c07b5-4900-404b-bea9-bb6b16fa991e",
|
||||||
|
type: :other,
|
||||||
|
title: "Claustrophobic Universe",
|
||||||
|
release: "2021-04-23",
|
||||||
|
artists: "Mariusz Duda"
|
||||||
|
},
|
||||||
|
%MusicBrainz.ReleaseGroup{
|
||||||
|
id: "61077431-0057-4119-8f06-0df1098d21e5",
|
||||||
|
type: :other,
|
||||||
|
title: "Interior Drawings",
|
||||||
|
release: "2021-12-10",
|
||||||
|
artists: "Mariusz Duda"
|
||||||
|
},
|
||||||
|
%MusicBrainz.ReleaseGroup{
|
||||||
|
id: "c36123e3-8899-48a5-8196-9dbb72421d69",
|
||||||
|
type: :other,
|
||||||
|
title: "Let’s Meet Outside",
|
||||||
|
release: "2022-05-20",
|
||||||
|
artists: "Mariusz Duda"
|
||||||
|
},
|
||||||
|
%MusicBrainz.ReleaseGroup{
|
||||||
|
id: "d463f2b1-d254-4baf-a957-fb78c6e5b956",
|
||||||
|
type: :other,
|
||||||
|
title: "Lockdown Spaces",
|
||||||
|
release: "2020-06-26",
|
||||||
|
artists: "Mariusz Duda"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "child_release_groups_count/1" do
|
||||||
|
test "returns the release groups count of children releases" do
|
||||||
|
release_group = release_group(:lockdown_trilogy)
|
||||||
|
|
||||||
|
record =
|
||||||
|
%Record{musicbrainz_data: release_group}
|
||||||
|
|> Record.update_included_release_group_ids()
|
||||||
|
|> Ecto.Changeset.apply_changes()
|
||||||
|
|
||||||
|
assert Record.child_release_groups_count(record) == 4
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user