test(microprints): make expand-switch test resilient to file changes

Remove hardcoded module names (FirehoseWeb.MicroprintsLive,
Firehose.Application) from the expand-switch test. Now verifies:
- Each file's source renders when expanded (generic defmodule check)
- Source content differs between files (catches stale content bug)
- Button states update correctly (collapse/expand)
This commit is contained in:
Firehose Bot
2026-05-18 18:09:55 +01:00
parent 7c06204ac2
commit 7afe5c1fe8
2 changed files with 19 additions and 10 deletions
@@ -99,7 +99,7 @@ defmodule FirehoseWeb.MicroprintsLiveTest do
"file A should be collapsed after highlighting a different file, but the Collapse button is still visible (expanded_path is uncoupled from highlighted_path)"
end
test "switching expand from file A to file B shows file B's source content, not file A's", %{conn: conn} do
test "switching expand from file A to file B shows each file's own source content", %{conn: conn} do
files = MicroprintsLive.scan_source_files()
assert length(files) >= 2, "Need at least 2 files to test source switching"
@@ -112,24 +112,31 @@ defmodule FirehoseWeb.MicroprintsLiveTest do
|> element("button[phx-value-path=\"#{file_a}\"]", "Expand")
|> render_click()
# Verify file A's source is shown (check for module def from microprints_live.ex)
html = render(view)
assert html =~ "FirehoseWeb.MicroprintsLive",
"When file A is expanded, its source should be visible"
# Capture file A's source content from the rendered HTML
html_a = render(view)
# Each .ex file starts with "defmodule", grab the first defmodule line as unique content
assert html_a =~ "defmodule",
"File A source should be visible when expanded"
# Expand file B (should auto-collapse A)
view
|> element("button[phx-value-path=\"#{file_b}\"]", "Expand")
|> render_click()
# Verify file B's source is shown, NOT file A's
html = render(view)
assert html =~ "Firehose.Application",
"When file B is expanded, its source should be visible (not file A's source)"
# Capture file B's source content
html_b = render(view)
# The two source viewers must show different content
refute html_a == html_b,
"Source content should differ when switching between files"
# File A's button should now say "Expand" (collapsed)
refute html =~ ~s(phx-value-path="#{file_a}".*Collapse),
refute html_b =~ ~r(phx-value-path="#{Regex.escape(file_a)}"[^>]*>\s*Collapse\s*</),
"file A should be collapsed after switching expand to file B"
# File B's button should say "Collapse" (expanded)
assert html_b =~ ~r(phx-value-path="#{Regex.escape(file_b)}"[^>]*>\s*Collapse\s*</),
"file B should show Collapse button when expanded"
end
end
end