fp/apps/bright/test/support/conn_case.ex
CJ_Clippy 4225bbdf61
Some checks failed
ci / build (push) Failing after 4m19s
ci / Tests & Checks (push) Failing after 9m47s
controllers tests are passing
2025-02-12 06:09:01 -08:00

84 lines
2.4 KiB
Elixir

defmodule BrightWeb.ConnCase do
@moduledoc """
This module defines the test case to be used by
tests that require setting up a connection.
Such tests rely on `Phoenix.ConnTest` and also
import other functionality to make it easier
to build common data structures and query the data layer.
Finally, if the test case interacts with the database,
we enable the SQL sandbox, so changes done to the database
are reverted at the end of every test. If you are using
PostgreSQL, you can even run database tests asynchronously
by setting `use BrightWeb.ConnCase, async: true`, although
this option is not recommended for other databases.
"""
import Bright.UsersFixtures
require Logger
use ExUnit.CaseTemplate
using do
quote do
# The default endpoint for testing
@endpoint BrightWeb.Endpoint
use BrightWeb, :verified_routes
# Import conveniences for testing with connections
import Plug.Conn
import Phoenix.ConnTest
import BrightWeb.ConnCase
end
end
setup tags do
Bright.DataCase.setup_sandbox(tags)
{:ok, conn: Phoenix.ConnTest.build_conn()}
end
def login_user(conn, user) do
conn
|> Plug.Test.init_test_session(%{id: user.id})
|> Plug.Conn.assign(:current_user, user)
end
def create_admin(%{conn: conn}) do
user = user_fixture(%{role: "admin", patreon_id: 1234})
conn = login_user(conn, user)
{:ok, user: user, conn: conn}
end
def create_user(opts) do
create_patron_tier_0_user(opts)
end
def create_patron_tier_0_user(%{conn: conn}) do
user = user_fixture(%{role: "user", patreon_id: 4321, patron_tier: 0})
conn = login_user(conn, user)
{:ok, user: user, conn: conn}
end
def create_patron_tier_1_user(%{conn: conn}) do
user = user_fixture(%{role: "user", patreon_id: 4321, patron_tier: 1})
Logger.debug("user just created. user=#{inspect(user)}")
conn = login_user(conn, user)
Logger.debug("create_patron_tier_1_user just finished with conn=#{inspect(conn)}")
{:ok, user: user, conn: conn}
end
def create_patron_tier_2_user(%{conn: conn}) do
user = user_fixture(%{role: "user", patreon_id: 4321, patron_tier: 2})
conn = login_user(conn, user)
{:ok, user: user, conn: conn}
end
def create_patron_tier_3_user(%{conn: conn}) do
user = user_fixture(%{role: "user", patreon_id: 4321, patron_tier: 3})
conn = login_user(conn, user)
{:ok, user: user, conn: conn}
end
end