diff --git a/lib/music_library_web.ex b/lib/music_library_web.ex index 1d1d98b1..2ad0cd8d 100644 --- a/lib/music_library_web.ex +++ b/lib/music_library_web.ex @@ -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, diff --git a/lib/music_library_web/controllers/collection_json.ex b/lib/music_library_web/controllers/collection_json.ex index d9302f34..10401b54 100644 --- a/lib/music_library_web/controllers/collection_json.ex +++ b/lib/music_library_web/controllers/collection_json.ex @@ -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 diff --git a/test/music_library_web/controllers/collection_controller_test.exs b/test/music_library_web/controllers/collection_controller_test.exs index 293db4fb..be37a85a 100644 --- a/test/music_library_web/controllers/collection_controller_test.exs +++ b/test/music_library_web/controllers/collection_controller_test.exs @@ -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