Show artists for latest record

This commit is contained in:
Claudio Ortolina
2024-10-03 23:10:55 +01:00
parent 360b287a2c
commit 70ca206b5d
3 changed files with 53 additions and 2 deletions
@@ -0,0 +1,44 @@
defmodule MusicLibraryWeb.StatsControllerTest do
use MusicLibraryWeb.ConnCase
import MusicLibrary.RecordsFixtures
defp create_records(_) do
records = Enum.map(1..30, fn _ -> record_fixture() end)
%{records: records}
end
defp escape(string) do
string
|> Phoenix.HTML.html_escape()
|> Phoenix.HTML.safe_to_string()
end
describe "GET /" do
setup [:create_records]
test "it shows the record count (total and by format)", %{conn: conn, records: records} do
conn = get(conn, "/")
assert html_response(conn, 200) =~ records |> length() |> Integer.to_string()
records
|> Enum.frequencies_by(& &1.format)
|> Enum.each(fn {format, count} ->
assert html_response(conn, 200) =~ "#{count} #{format}"
end)
end
test "it shows the latest record", %{conn: conn, records: records} do
latest_record = Enum.max_by(records, & &1.inserted_at)
conn = get(conn, "/")
assert html_response(conn, 200) =~ escape(latest_record.title)
for artist <- latest_record.artists do
assert html_response(conn, 200) =~ escape(artist["name"])
end
end
end
end
+3 -1
View File
@@ -4,6 +4,8 @@ defmodule MusicLibrary.RecordsFixtures do
entities via the `MusicLibrary.Records` context.
"""
alias MusicLibrary.Records.Record
@genres [
"progressive rock",
"art rock",
@@ -43,7 +45,7 @@ defmodule MusicLibrary.RecordsFixtures do
musicbrainz_id: musicbrainz_id,
title: Enum.random(@titles),
type: :album,
format: :cd,
format: Record.formats() |> Enum.random(),
release: Enum.random(1969..2024) |> Integer.to_string()
})
|> MusicLibrary.Records.create_record()