From 65899b807767cb682c06d4ab9024e68c7e67704e Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Wed, 1 Jan 2025 20:57:01 +0000 Subject: [PATCH] Add tests for /api/collection/random endpoint --- test/music_library/collection_test.exs | 11 ++++++++ .../collection_controller_test.exs | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/test/music_library/collection_test.exs b/test/music_library/collection_test.exs index e68a95be..1baf669b 100644 --- a/test/music_library/collection_test.exs +++ b/test/music_library/collection_test.exs @@ -96,4 +96,15 @@ defmodule MusicLibrary.CollectionTest do assert expected_record.id == most_recent_purchase.id end end + + describe "get_random_record!/0" do + setup [:fill_collection] + + test "returns a random record", %{collection: collection} do + random_record = Collection.get_latest_record!() + collection_ids = Enum.map(collection, & &1.id) + + assert random_record.id in collection_ids + end + 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 b69f67d3..0ce46306 100644 --- a/test/music_library_web/controllers/collection_controller_test.exs +++ b/test/music_library_web/controllers/collection_controller_test.exs @@ -37,4 +37,31 @@ defmodule MusicLibraryWeb.CollectionControllerTest do } end end + + describe "GET /api/collection/random" do + setup [:create_record] + + test "it requires authentication", %{conn: conn} do + conn = get(conn, ~p"/api/collection/latest") + + assert conn.status == 401 + end + + # We're not testing random here - the query is solid enough + test "it returns a random record", %{conn: conn, record: record} do + conn = + conn + |> put_req_header("authorization", "Bearer #{api_token()}") + |> get(~p"/api/collection/random") + + assert json_response(conn, 200) == %{ + "artists" => ["Steven Wilson"], + "title" => record.title, + "cover_url" => + "http://localhost:4002/api/covers/#{record.id}?vsn=#{record.cover_hash}", + "thumb_url" => + "http://localhost:4002/api/covers/#{record.id}?vsn=#{record.cover_hash}&size=480" + } + end + end end