| defmodule PlausibleWeb.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, |
| it cannot be async. For this reason, every test runs |
| inside a transaction which is reset at the beginning |
| of the test unless the test case is marked as async. |
| """ |
|
|
| use ExUnit.CaseTemplate |
|
|
| using do |
| quote do |
| use Plausible.TestUtils |
| use Plausible |
| use Plausible.Teams.Test |
|
|
| import Plausible.Test.Support.HTML |
| import Plug.Conn |
| import Phoenix.ConnTest |
|
|
| alias PlausibleWeb.Router.Helpers, as: Routes |
| import Plausible.Factory |
| import Plausible.AssertMatches |
|
|
| @endpoint PlausibleWeb.Endpoint |
| end |
| end |
|
|
| setup tags do |
| :ok = Ecto.Adapters.SQL.Sandbox.checkout(Plausible.Repo) |
|
|
| unless tags[:async] do |
| Ecto.Adapters.SQL.Sandbox.mode(Plausible.Repo, {:shared, self()}) |
| end |
|
|
| Plausible.Test.Support.Sandbox.allow_salts_process() |
|
|
| conn = Phoenix.ConnTest.build_conn() |> Plausible.TestUtils.prepare_conn() |
| {:ok, conn: conn} |
| end |
| end |
|
|