Fix sr text for wishlisting from scrobble activity

Includes an integration test for the scrobble activity feed.
This commit is contained in:
Claudio Ortolina
2024-11-21 09:20:36 +00:00
parent 5ec3b67c08
commit 81e332d00d
3 changed files with 102 additions and 3 deletions
@@ -156,7 +156,7 @@
phx-click={toggle_actions_menu(track.scrobbled_at_uts)}
phx-click-away={close_actions_menu(track.scrobbled_at_uts)}
>
<span class="sr-only"><%= gettext("Open options") %></span>
<span class="sr-only"><%= gettext("Choose which format to import") %></span>
<.icon name="hero-star" class="-mt-1 h-5 w-5" aria-hidden="true" data-slot="icon" />
</button>
<!--
+1 -1
View File
@@ -178,7 +178,6 @@ msgid "No results"
msgstr ""
#: lib/music_library_web/live/collection_live/index.html.heex:121
#: lib/music_library_web/live/stats_live/index.html.heex:159
#: lib/music_library_web/live/wishlist_live/index.html.heex:121
#, elixir-autogen, elixir-format
msgid "Open options"
@@ -369,6 +368,7 @@ msgid "Scrobble activity"
msgstr ""
#: lib/music_library_web/live/record_live/import_component.ex:80
#: lib/music_library_web/live/stats_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Choose which format to import"
msgstr ""
@@ -3,6 +3,8 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do
import Phoenix.LiveViewTest
import MusicLibrary.RecordsFixtures
alias MusicLibrary.Records
alias MusicLibrary.Repo
alias MusicLibrary.Records.Record
defp fill_collection(_) do
@@ -21,7 +23,7 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do
|> Phoenix.HTML.safe_to_string()
end
describe "GET /" do
describe "Stats home page" do
setup [:fill_collection, :fill_wishlist]
test "it shows the collection counts (total, format, and type)", %{
@@ -66,5 +68,102 @@ defmodule MusicLibraryWeb.StatsLive.IndexTest do
assert html =~ wishlist |> length() |> Integer.to_string()
end
test "it shows the scrobble activity", %{conn: conn} do
# In test we don't run the LastFm.Refresh worker,
# so we need to interact directly with the LastFm.Feed to have some data
#
# We use three tracks from three different albums in order to test the three possible states for each track:
# collected, wishlisted or not tracked.
machinarium_soundtrack_track = %LastFm.Track{
musicbrainz_id: "190567f8-900e-44ce-a574-69adc10cf93a",
title: "Gameboy Tune",
artist: %LastFm.Artist{
musicbrainz_id: "35ac1700-84f1-4bd9-924b-3792b742e618",
name: "Tomáš Dvořák"
},
album: %LastFm.Album{
musicbrainz_id: "4bad26f6-1b27-4554-93bd-40b91ed7866c",
title: "Machinarium Soundtrack"
},
cover_url:
"https://lastfm.freetls.fastly.net/i/u/64s/b301ac9a72f14eb4ce3ddd785eb562b2.jpg",
scrobbled_at_uts: 1_730_678_348,
scrobbled_at_label: "03 Nov 2024, 23:59"
}
the_last_flight_track = %LastFm.Track{
musicbrainz_id: "",
title: "I Was Always Dreaming",
artist: %LastFm.Artist{
musicbrainz_id: "93834e82-3a0b-4ec2-a2e4-6eca0a497e6d",
name: "Public Service Broadcasting"
},
album: %LastFm.Album{
musicbrainz_id: "2157367e-bf73-48bb-8185-41023a54fa08",
title: "The Last Flight"
},
cover_url:
"https://lastfm.freetls.fastly.net/i/u/64s/7272b50a02fb3e35c59376d2f96cad97.jpg",
scrobbled_at_uts: 1_730_582_531,
scrobbled_at_label: "02 Nov 2024, 21:22"
}
the_mystery_of_time_track = %LastFm.Track{
musicbrainz_id: "276806b9-e525-449f-9ff5-4fbf89719e5b",
title: "Death Is Just a Feeling (Alt. Version)",
artist: %LastFm.Artist{
musicbrainz_id: "2ecbc483-dee4-442f-8ce7-f3ab31c73f87",
name: "Avantasia"
},
album: %LastFm.Album{
musicbrainz_id: "003d1505-b3ac-4acf-bed1-02e2c8134a26",
title: "The Mystery of Time: A Rock Epic"
},
cover_url:
"https://lastfm.freetls.fastly.net/i/u/64s/104b3f466df84b67cbbe8eadf503fba4.jpg",
scrobbled_at_uts: 1_732_103_695,
scrobbled_at_label: "20 Nov 2024, 11:54"
}
LastFm.Feed.update([
machinarium_soundtrack_track,
the_last_flight_track,
the_mystery_of_time_track
])
# We add one album to the wishlist, and one to the collection.
machinarium_soundtrack =
record_fixture(purchased_at: nil)
|> Records.change_record(%{release_ids: ["4bad26f6-1b27-4554-93bd-40b91ed7866c"]})
|> Repo.update!()
the_last_flight =
record_fixture(purchased_at: DateTime.utc_now())
|> Records.change_record(%{release_ids: ["2157367e-bf73-48bb-8185-41023a54fa08"]})
|> Repo.update!()
{:ok, stats_live, html} = live(conn, "/")
assert has_element?(
stats_live,
"#track-#{machinarium_soundtrack_track.scrobbled_at_uts}",
"Wishlisted"
)
assert has_element?(
stats_live,
"#track-#{the_last_flight_track.scrobbled_at_uts}",
"Collected"
)
assert has_element?(
stats_live,
"#track-#{the_mystery_of_time_track.scrobbled_at_uts}",
"Choose which format to import"
)
end
end
end