Refactor Record.child_release_groups/1 to use stored ids

This commit is contained in:
Claudio Ortolina
2025-02-06 21:03:38 +00:00
parent b80a98a881
commit 9b25556245
2 changed files with 67 additions and 11 deletions
+1 -3
View File
@@ -57,9 +57,7 @@ defmodule MusicLibrary.Records.Record do
record.musicbrainz_data
|> Map.get("relations", [])
|> Enum.filter(fn relation ->
relation["target-type"] == "release_group" and
relation["type"] == "included in" and
relation["direction"] == "backward"
relation["release_group"]["id"] in record.included_release_group_ids
end)
|> Enum.map(fn relation ->
MusicBrainz.ReleaseGroup.from_api_response(relation["release_group"])
+66 -8
View File
@@ -1,6 +1,9 @@
defmodule MusicLibrary.Records.RecordTest do
use ExUnit.Case, async: true
import MusicLibrary.ReleaseGroupsFixtures
alias MusicLibrary.Records.Record
defp get_current_date(_) do
%{current_date: ~D[2025-01-01]}
end
@@ -11,27 +14,82 @@ defmodule MusicLibrary.Records.RecordTest do
test "returns true if the record has a release date in the past", %{
current_date: current_date
} do
record = %MusicLibrary.Records.Record{release: "2024-01-01"}
assert MusicLibrary.Records.Record.released?(record, current_date)
record = %Record{release: "2024-01-01"}
assert Record.released?(record, current_date)
end
test "returns false if the record has a release date in the future", %{
current_date: current_date
} do
record = %MusicLibrary.Records.Record{release: "2025-02-01"}
refute MusicLibrary.Records.Record.released?(record, current_date)
record = %Record{release: "2025-02-01"}
refute Record.released?(record, current_date)
end
test "returns true if the record is released today", %{current_date: current_date} do
record = %MusicLibrary.Records.Record{release: "2025-01-01"}
assert MusicLibrary.Records.Record.released?(record, current_date)
record = %Record{release: "2025-01-01"}
assert Record.released?(record, current_date)
end
test "it returns true if the release date is not precise enough", %{
current_date: current_date
} do
record = %MusicLibrary.Records.Record{release: "2019"}
assert MusicLibrary.Records.Record.released?(record, current_date)
record = %Record{release: "2019"}
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: "Lets 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