Include artists and cover in latest record JSON

This commit is contained in:
Claudio Ortolina
2024-12-22 15:55:41 +00:00
parent 75506b6e1c
commit 341d276db5
3 changed files with 20 additions and 3 deletions
+6
View File
@@ -50,6 +50,12 @@ defmodule MusicLibraryWeb do
end
end
def json do
quote do
unquote(verified_routes())
end
end
def live_view do
quote do
use Phoenix.LiveView,
@@ -1,5 +1,11 @@
defmodule MusicLibraryWeb.CollectionJSON do
use MusicLibraryWeb, :json
def show(%{record: record}) do
Map.take(record, [:title])
%{
artists: Enum.map(record.artists, & &1.name),
title: record.title,
cover_url: url(~p"/covers/#{record.id}?#{[vsn: record.cover_hash]}")
}
end
end
@@ -4,7 +4,7 @@ defmodule MusicLibraryWeb.CollectionControllerTest do
import MusicLibrary.RecordsFixtures
defp create_record(_) do
%{record: record_fixture()}
%{record: record_fixture_with_artist("Steven Wilson")}
end
describe "GET /api/collection/latest" do
@@ -12,7 +12,12 @@ defmodule MusicLibraryWeb.CollectionControllerTest do
test "it returns the latest record", %{conn: conn, record: record} do
conn = get(conn, ~p"/api/collection/latest")
assert json_response(conn, 200) == %{"title" => record.title}
assert json_response(conn, 200) == %{
"artists" => ["Steven Wilson"],
"title" => record.title,
"cover_url" => "http://localhost:4002/covers/#{record.id}?vsn=#{record.cover_hash}"
}
end
end
end