diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..b662e78 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,46 @@ +name: Tests +on: + push +jobs: + elixir-test: + name: Test Elixir + runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-24.04] + otp: [27.x] + elixir: [1.18.3] + services: + postgres: + image: postgres + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: ranger_test + POSTGRES_PORT: 5432 + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + steps: + - uses: actions/checkout@v3 + + - uses: erlef/setup-beam@v1 + with: + otp-version: ${{ matrix.otp }} + elixir-version: ${{ matrix.elixir }} + + - name: Install dependencies + run: | + mix local.rebar --force + mix local.hex --force + mix deps.get + - name: Prepare upload directory + run: mkdir -p priv/static/uploads/test + - name: Run tests + run: | + mix compile --force -- + mix test mix test test/ranger_web/live/greet_live_test.exs \ No newline at end of file diff --git a/priv/static/uploads/test/.keep b/priv/static/uploads/test/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/ranger_web/live/greet_live_test.exs b/test/ranger_web/live/greet_live_test.exs index f2c6203..d7541c9 100644 --- a/test/ranger_web/live/greet_live_test.exs +++ b/test/ranger_web/live/greet_live_test.exs @@ -2,4 +2,32 @@ defmodule RangerWeb.GreetLiveTest do use RangerWeb.ConnCase import Phoenix.LiveViewTest + + test "renders disconnected state", %{conn: conn} do + disconnected = conn |> get(~p"/greet") + + assert html_response(disconnected, 200) =~ "Welcome to stateless HTTP" + end + + test "upgrades the connection", %{conn: conn} do + disconnected = conn |> get(~p"/greet") + + {:ok, _view, html} = live(disconnected) + + assert html =~ "Welcome to Testing LiveView" + end + + test "rendering connected state", %{conn: conn} do + {:ok, _view, html} = live(conn, ~p"/greet") + + assert html =~ "Welcome to Testing LiveView" + end + + test "rendering with the view", %{conn: conn} do + {:ok, view, _html} = live(conn, ~p"/greet") + + assert view.module == RangerWeb.GreetLive + assert is_pid(view.pid) + assert render(view) =~ "Welcome to Testing LiveView" + end end