From 791807c13735d17aab8d09096b08425bb487f899 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Mon, 10 Feb 2025 09:33:26 +0000 Subject: [PATCH] Fix issue with formatting of "" release dates --- lib/music_library/records/record.ex | 21 ++++++++++++++++++++- test/music_library/records/record_test.exs | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/music_library/records/record.ex b/lib/music_library/records/record.ex index ba84fd1b..64b4dc49 100644 --- a/lib/music_library/records/record.ex +++ b/lib/music_library/records/record.ex @@ -190,10 +190,29 @@ defmodule MusicLibrary.Records.Record do defp parse_subtype("Single"), do: :single defp parse_subtype(_), do: :other + @doc """ + Format a release date in a conventional format. + + Release dates as returned by MusicBrainz have different levels of precision, + and can be nil or empty string. + + iex> alias MusicLibrary.Records.Record + iex> Record.format_release(nil) + "N/A" + iex> Record.format_release("") + "N/A" + iex> Record.format_release("2021") + "2021" + iex> Record.format_release("2021-12") + "12/2021" + iex> Record.format_release("2021-12-23") + "23/12/2021" + """ + @spec format_release(String.t() | nil) :: String.t() def format_release(nil), do: "N/A" def format_release(release) do - case String.split(release, "-") do + case String.split(release, "-", trim: true) do [] -> "N/A" [year] -> year [year, month] -> "#{month}/#{year}" diff --git a/test/music_library/records/record_test.exs b/test/music_library/records/record_test.exs index 4e997ec4..28d4fb38 100644 --- a/test/music_library/records/record_test.exs +++ b/test/music_library/records/record_test.exs @@ -4,6 +4,8 @@ defmodule MusicLibrary.Records.RecordTest do import MusicLibrary.ReleaseGroupsFixtures alias MusicLibrary.Records.Record + doctest Record + defp get_current_date(_) do %{current_date: ~D[2025-01-01]} end