Replace double-quoted string with escaped quotes in element selector with a ~s sigil to satisfy Credo's 'More than 3 quotes found inside string literal' readability check. Includes formatting changes from mix format (ran via make check).
103 lines
3.2 KiB
Elixir
103 lines
3.2 KiB
Elixir
defmodule FirehoseWeb.SourceViewerTest do
|
|
use FirehoseWeb.ConnCase, async: true
|
|
|
|
import Phoenix.LiveViewTest
|
|
|
|
alias FirehoseWeb.MicroprintsLive
|
|
|
|
defp expand_file(view, path) do
|
|
view
|
|
|> element("button[phx-value-path=\"#{path}\"]", "Expand")
|
|
|> render_click()
|
|
end
|
|
|
|
defp click_microprint_rect(view, path, line) do
|
|
render_click(view, "highlight_line", %{"line" => Integer.to_string(line), "path" => path})
|
|
end
|
|
|
|
describe "line elements" do
|
|
test "render with unique ids when file is expanded", %{conn: conn} do
|
|
files = MicroprintsLive.scan_source_files()
|
|
file = List.first(files)
|
|
|
|
{:ok, view, _html} = live(conn, ~p"/microprints")
|
|
expand_file(view, file)
|
|
|
|
assert has_element?(view, "#line-1"),
|
|
"Line 1 should exist in the source viewer"
|
|
|
|
assert has_element?(view, "#line-2"),
|
|
"Line 2 should exist in the source viewer"
|
|
|
|
assert has_element?(view, "#line-3"),
|
|
"Line 3 should exist in the source viewer"
|
|
end
|
|
end
|
|
|
|
describe "highlight class" do
|
|
test "is added to line on microprint click", %{conn: conn} do
|
|
files = MicroprintsLive.scan_source_files()
|
|
file = List.first(files)
|
|
|
|
{:ok, view, _html} = live(conn, ~p"/microprints")
|
|
expand_file(view, file)
|
|
|
|
click_microprint_rect(view, file, 1)
|
|
|
|
assert has_element?(view, "#line-1.sv-line-highlighted"),
|
|
"Line 1 should have the highlighted class after click"
|
|
end
|
|
|
|
test "is removed on re-clicking the same line", %{conn: conn} do
|
|
files = MicroprintsLive.scan_source_files()
|
|
file = List.first(files)
|
|
|
|
{:ok, view, _html} = live(conn, ~p"/microprints")
|
|
expand_file(view, file)
|
|
|
|
click_microprint_rect(view, file, 1)
|
|
|
|
assert has_element?(view, "#line-1.sv-line-highlighted"),
|
|
"Line 1 should be highlighted after first click"
|
|
|
|
click_microprint_rect(view, file, 1)
|
|
|
|
refute has_element?(view, "#line-1.sv-line-highlighted"),
|
|
"Line 1 should no longer be highlighted after second click"
|
|
end
|
|
|
|
test "persists when expand is restored from URL params", %{conn: conn} do
|
|
files = MicroprintsLive.scan_source_files()
|
|
file = List.first(files)
|
|
|
|
{:ok, view, _html} =
|
|
live(conn, ~p"/microprints?expanded=#{file}&line=1&highlighted=#{file}")
|
|
|
|
assert has_element?(view, "#line-1.sv-line-highlighted"),
|
|
"Line 1 should be highlighted when restored from URL params"
|
|
end
|
|
end
|
|
|
|
describe "different file highlighting" do
|
|
test "collapses file A and removes its source viewer when highlighting file B", %{conn: conn} do
|
|
files = MicroprintsLive.scan_source_files()
|
|
assert length(files) >= 2, "Need at least 2 files to test different-file highlighting"
|
|
|
|
[file_a, file_b | _] = files
|
|
|
|
{:ok, view, _html} = live(conn, ~p"/microprints")
|
|
|
|
expand_file(view, file_a)
|
|
click_microprint_rect(view, file_a, 1)
|
|
|
|
assert has_element?(view, "#line-1.sv-line-highlighted"),
|
|
"Line 1 in file A should be highlighted before switching"
|
|
|
|
click_microprint_rect(view, file_b, 2)
|
|
|
|
refute has_element?(view, "#line-1"),
|
|
"File A source viewer should be gone after highlighting a different file"
|
|
end
|
|
end
|
|
end
|