Use css attr selector to test for cover images

This commit is contained in:
Claudio Ortolina
2025-01-07 15:57:14 +00:00
parent e3c901346c
commit 8e956577b4
2 changed files with 19 additions and 42 deletions
@@ -51,6 +51,8 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
session = visit(conn, ~p"/collection") session = visit(conn, ~p"/collection")
for record <- expected_present do for record <- expected_present do
cover_url = ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
session session
|> assert_has("#records-#{record.id}") |> assert_has("#records-#{record.id}")
|> assert_has("#records-#{record.id} h2", text: escape(record.title)) |> assert_has("#records-#{record.id} h2", text: escape(record.title))
@@ -60,23 +62,13 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
|> assert_has("#records-#{record.id} span", |> assert_has("#records-#{record.id} span",
text: Record.format_as_date(record.purchased_at) text: Record.format_as_date(record.purchased_at)
) )
|> assert_has("img[src='#{cover_url}']")
for artist <- record.artists do for artist <- record.artists do
assert_has(session, "#records-#{record.id} a", text: escape(artist.name)) assert_has(session, "#records-#{record.id} a", text: escape(artist.name))
end end
end end
session
|> unwrap(fn collection_view ->
html = render(collection_view)
for record <- expected_present do
assert html =~ ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
end
html
end)
for record <- expected_absent do for record <- expected_absent do
refute_has(session, "#records-#{record.id}") refute_has(session, "#records-#{record.id}")
end end
@@ -144,6 +136,8 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
session = session =
visit(conn, ~p"/collection?#{qs}") visit(conn, ~p"/collection?#{qs}")
cover_url = ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
session session
|> assert_has("#records-#{record.id}") |> assert_has("#records-#{record.id}")
|> assert_has("#records-#{record.id} h2", text: escape(record.title)) |> assert_has("#records-#{record.id} h2", text: escape(record.title))
@@ -153,11 +147,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
|> assert_has("#records-#{record.id} span", |> assert_has("#records-#{record.id} span",
text: Record.format_as_date(record.purchased_at) text: Record.format_as_date(record.purchased_at)
) )
|> unwrap(fn collection_view -> |> assert_has("img[src='#{cover_url}']")
html = render(collection_view)
assert html =~ ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
html
end)
for artist <- record.artists do for artist <- record.artists do
assert_has(session, "#records-#{record.id} a", text: escape(artist.name)) assert_has(session, "#records-#{record.id} a", text: escape(artist.name))
@@ -188,6 +178,8 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
visit(conn, ~p"/collection?#{qs}") visit(conn, ~p"/collection?#{qs}")
for record <- present do for record <- present do
cover_url = ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
session session
|> assert_has("#records-#{record.id}") |> assert_has("#records-#{record.id}")
|> assert_has("#records-#{record.id} h2", text: escape(record.title)) |> assert_has("#records-#{record.id} h2", text: escape(record.title))
@@ -197,11 +189,7 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
|> assert_has("#records-#{record.id} span", |> assert_has("#records-#{record.id} span",
text: Record.format_as_date(record.purchased_at) text: Record.format_as_date(record.purchased_at)
) )
|> unwrap(fn collection_view -> |> assert_has("img[src='#{cover_url}']")
html = render(collection_view)
assert html =~ ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
html
end)
for artist <- record.artists do for artist <- record.artists do
assert_has(session, "#records-#{record.id} a", text: escape(artist.name)) assert_has(session, "#records-#{record.id} a", text: escape(artist.name))
@@ -227,14 +215,12 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
test "can change the record cover", %{conn: conn} do test "can change the record cover", %{conn: conn} do
record = record(cover_data: File.read!(marbles_cover_fixture())) record = record(cover_data: File.read!(marbles_cover_fixture()))
session = visit(conn, ~p"/collection/#{record.id}/edit") cover_url = ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
session session =
|> unwrap(fn edit_view -> conn
html = render(edit_view) |> visit(~p"/collection/#{record.id}/edit")
assert html =~ ~p"/covers/#{record.id}?vsn=#{record.cover_hash}" |> assert_has("img[src='#{cover_url}']")
html
end)
session = session =
session session
@@ -243,16 +229,10 @@ defmodule MusicLibraryWeb.CollectionLive.IndexTest do
|> assert_has("p", text: "Record updated successfully") |> assert_has("p", text: "Record updated successfully")
updated_cover = MusicLibrary.Records.get_cover(record.id) updated_cover = MusicLibrary.Records.get_cover(record.id)
assert updated_cover.cover_hash !== record.cover_hash updated_cover_url = ~p"/covers/#{record.id}?vsn=#{updated_cover.cover_hash}"
# We trigger another render to force the list view to update assert updated_cover.cover_hash !== record.cover_hash
# and display the new cover assert_has(session, "img[src='#{updated_cover_url}']")
session
|> unwrap(fn collection_view ->
html = render(collection_view)
assert html =~ ~p"/covers/#{record.id}?vsn=#{updated_cover.cover_hash}"
html
end)
end end
end end
@@ -25,6 +25,7 @@ defmodule MusicLibraryWeb.CollectionLive.ShowTest do
describe "Show record" do describe "Show record" do
test "it includes all needed information", %{conn: conn} do test "it includes all needed information", %{conn: conn} do
record = record() record = record()
cover_url = ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
session = session =
conn conn
@@ -36,11 +37,7 @@ defmodule MusicLibraryWeb.CollectionLive.ShowTest do
|> assert_has("dd", text: Record.format_as_date(record.purchased_at)) |> assert_has("dd", text: Record.format_as_date(record.purchased_at))
|> assert_has("dd", text: Record.format_as_date(record.inserted_at)) |> assert_has("dd", text: Record.format_as_date(record.inserted_at))
|> assert_has("dd", text: Record.format_as_date(record.updated_at)) |> assert_has("dd", text: Record.format_as_date(record.updated_at))
|> unwrap(fn show_view -> |> assert_has("img[src='#{cover_url}']")
html = render(show_view)
assert html =~ ~p"/covers/#{record.id}?vsn=#{record.cover_hash}"
html
end)
for artist <- record.artists do for artist <- record.artists do
assert_has(session, "a", text: escape(artist.name)) assert_has(session, "a", text: escape(artist.name))