Bootstrap the /api namespace
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
defmodule MusicLibraryWeb.CollectionController do
|
||||
use MusicLibraryWeb, :controller
|
||||
|
||||
alias MusicLibrary.Collection
|
||||
|
||||
def latest(conn, _params) do
|
||||
latest_record = Collection.get_latest_record!()
|
||||
|
||||
render(conn, :show, record: latest_record)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
defmodule MusicLibraryWeb.CollectionJSON do
|
||||
def show(%{record: record}) do
|
||||
Map.take(record, [:title])
|
||||
end
|
||||
end
|
||||
@@ -50,6 +50,12 @@ defmodule MusicLibraryWeb.Router do
|
||||
end
|
||||
end
|
||||
|
||||
scope "/api", MusicLibraryWeb do
|
||||
pipe_through :api
|
||||
|
||||
get "/collection/latest", CollectionController, :latest
|
||||
end
|
||||
|
||||
# Other scopes may use custom stacks.
|
||||
# scope "/api", MusicLibraryWeb do
|
||||
# pipe_through :api
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
defmodule MusicLibraryWeb.CollectionControllerTest do
|
||||
use MusicLibraryWeb.ConnCase
|
||||
|
||||
import MusicLibrary.RecordsFixtures
|
||||
|
||||
defp create_record(_) do
|
||||
%{record: record_fixture()}
|
||||
end
|
||||
|
||||
describe "GET /api/collection/latest" do
|
||||
setup [:create_record]
|
||||
|
||||
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}
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user