diff --git a/test/music_library_web/live/stats_live/index_test.exs b/test/music_library_web/live/stats_live/index_test.exs index 9c20ace8..bae8368f 100644 --- a/test/music_library_web/live/stats_live/index_test.exs +++ b/test/music_library_web/live/stats_live/index_test.exs @@ -1,11 +1,15 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do use MusicLibraryWeb.ConnCase + alias MusicLibrary.{Records, Repo, Wishlist} + alias MusicLibrary.Records.Record + alias MusicBrainz.APIBehaviourMock import Phoenix.LiveViewTest import MusicLibrary.RecordsFixtures - alias MusicLibrary.Records - alias MusicLibrary.Repo - alias MusicLibrary.Records.Record + import MusicLibrary.ReleaseGroupsFixtures + import Mox + + setup :verify_on_exit! defp fill_collection(_) do records = Enum.map(1..99, fn _ -> record_fixture() end) @@ -188,6 +192,40 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do "#track-#{in_murmuration_track.scrobbled_at_uts}", "No MB ID" ) + + # We now try to import The Mystery of Time + + release = release(:mystery_of_time) + release_id = release_id(:mystery_of_time) + + release_group = release_group(:mystery_of_time) + release_group_id = release_group_id(:mystery_of_time) + + expect(APIBehaviourMock, :get_release, fn ^release_id, _config -> + {:ok, release} + end) + + expect(APIBehaviourMock, :get_release_group, fn ^release_group_id, _config -> + {:ok, release_group} + end) + + # Doesn't matter if we use a different cover + cover_data = File.read!(marbles_cover_fixture()) + + expect(APIBehaviourMock, :get_cover_art, fn {:musicbrainz_id, ^release_group_id}, _config -> + {:ok, cover_data} + end) + + stats_live + |> element( + "#track-#{the_mystery_of_time_track.scrobbled_at_uts} a", + "CD" + ) + |> render_click() + + assert [wishlisted_record] = Wishlist.search_records("mbid:#{release_group_id}") + + assert_redirected(stats_live, ~p"/wishlist/#{wishlisted_record.id}") end end end diff --git a/test/support/fixtures/release_groups_fixtures.ex b/test/support/fixtures/release_groups_fixtures.ex index 2b2a95ba..fc957cf0 100644 --- a/test/support/fixtures/release_groups_fixtures.ex +++ b/test/support/fixtures/release_groups_fixtures.ex @@ -20,6 +20,26 @@ defmodule MusicLibrary.ReleaseGroupsFixtures do ] end + def release_group(:mystery_of_time) do + Path.join([@fixtures_folder, "release_group - avantasia - the mystery of time.json"]) + |> File.read!() + |> Jason.decode!() + end + + def release(:mystery_of_time) do + Path.join([@fixtures_folder, "release - avantasia - the mystery of time.json"]) + |> File.read!() + |> Jason.decode!() + end + + def release_group_id(name) do + release_group(name) |> Map.get("id") + end + + def release_id(name) do + release(name) |> Map.get("id") + end + def release_group_id do release_group() |> Map.get("id") end