diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 125a8d9..20a5cf8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,8 +8,8 @@ jobs: strategy: matrix: os: [ubuntu-24.04] - otp: [27.x] - elixir: [1.18.3] + otp: [26.1.2] + elixir: [1.15.7] services: postgres: image: postgres @@ -44,4 +44,5 @@ jobs: run: | mix compile --force -- mix test test/ranger_web/live/greet_live_test.exs - mix test test/ranger_web/live/avatar_live_test.exs \ No newline at end of file + mix test test/ranger_web/live/avatar_live_test.exs + mix test test/ranger_web/live/counter_live_test.exs \ No newline at end of file diff --git a/test/ranger_web/live/counter_live_test.exs b/test/ranger_web/live/counter_live_test.exs index 79b57a4..a7099b2 100644 --- a/test/ranger_web/live/counter_live_test.exs +++ b/test/ranger_web/live/counter_live_test.exs @@ -2,4 +2,52 @@ defmodule RangerWeb.CounterLiveTest do use RangerWeb.ConnCase import Phoenix.LiveViewTest + + @tag :good + test "user can increase count", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/counter") + + view + |> element("#increment") + |> render_click() + + assert has_element?(view, "#count", "1") + end + + @tag :ungood + test "user can increase count (less effective)", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/counter") + + html = + view + |> element("#increment") + |> render_click() + + # this just asserts that "1" is somewhere in the html. + # ... which is a bit dumb. + assert html =~ "1" + + end + + @tag :ungood + test "user can increase counter (bypasses HTML - not good)", %{conn: conn} do + {:ok, view, _} = live(conn, ~p"/counter") + + render_click(view, "increase") + + assert has_element?(view, "#count", "1") + end + + + @tag :mine + test "user can decreease count", %{conn: conn} do + {:ok, view, html} = live(conn, ~p"/counter") + + view + |> element("#decrement") + |> render_click() + + assert has_element?(view, "#count", "-1") + end + end