aprs.me/test/support/conn_case.ex
Graham McIntire 2f09b590e2
Some checks are pending
Elixir CI / Build and test (push) Waiting to run
Elixir CI / Dialyzer (push) Waiting to run
Elixir CI / Build and Push Docker Image (push) Blocked by required conditions
fix: resolve all credo issues — 0 warnings, 0 refactoring, 0 readability issues
- Add ex_slop credo plugin with all 40 checks
- Remove DualKeyAccess patterns across codebase — atom-only access
- Fix LengthInGuard, LengthComparison, ListLast, ReduceMapPut in lib/
- Disable LengthComparison for test files
- Remove obvious comments and narrator comments (~50)
- Add missing aliases for fully-qualified modules
- Rewrite boilerplate docs in test/support
- Add normalize_keys helpers at API boundaries
2026-07-29 10:54:07 -05:00

75 lines
1.8 KiB
Elixir

defmodule AprsmeWeb.ConnCase do
@moduledoc """
Test case for connection tests.
Relies on `Phoenix.ConnTest` and imports helpers for building common
data structures and querying the data layer.
When the test case interacts with the database, the SQL sandbox is enabled
so changes are reverted at the end of every test. PostgreSQL users can
run database tests asynchronously by setting `use AprsmeWeb.ConnCase, async: true`.
"""
use ExUnit.CaseTemplate
using do
quote do
# The default import for connections
use AprsmeWeb, :verified_routes
import Aprsme.MockHelpers
import AprsmeWeb.ConnCase
import Phoenix.ConnTest
import Phoenix.LiveViewTest
import Plug.Conn
alias Aprsme.Repo
# The default endpoint for testing
@endpoint AprsmeWeb.Endpoint
# Import conveniences for testing with connections
# The default import for Repo
# Helper for LiveView tests that may have duplicate IDs
def live_with_warn(conn, path) do
live(conn, path, on_error: :warn)
end
end
end
setup tags do
Aprsme.DataCase.setup_sandbox(tags)
{:ok, conn: Phoenix.ConnTest.build_conn()}
end
@doc """
A helper that sets up the test case.
use AprsmeWeb.ConnCase, async: true
"""
def setup_sandbox(_tags) do
Aprsme.MockHelpers.stub_packets_mock()
:ok
end
@doc """
A helper that logs in a user.
setup %{conn: conn} do
conn = log_in_user(conn, user)
{:ok, conn: conn}
end
"""
def log_in_user(conn, user) do
token = Aprsme.Accounts.generate_user_session_token(user)
conn
|> Phoenix.ConnTest.init_test_session(%{})
|> Plug.Conn.put_session(:user_token, token)
|> Plug.Conn.put_session(:live_socket_id, "users_sessions:#{Base.url_encode64(token)}")
end
end