- new /setup page with three-section onboarding (account, provider, payments) - dashboard launch checklist with progress bar, go-live, dismiss - provider registry on Provider module (single source of truth for metadata) - payments registry for Stripe - setup context made provider-agnostic (provider_connected, theme_customised, etc.) - admin provider pages now fully registry-driven (no hardcoded provider names) - auth flow: fresh installs redirect to /setup, signed_in_path respects setup state - removed old /admin/setup wizard - 840 tests, 0 failures Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
92 lines
2.7 KiB
Elixir
92 lines
2.7 KiB
Elixir
defmodule BerrypodWeb.Admin.LayoutTest do
|
|
use BerrypodWeb.ConnCase, async: false
|
|
|
|
import Phoenix.LiveViewTest
|
|
import Berrypod.AccountsFixtures
|
|
|
|
setup do
|
|
user = user_fixture()
|
|
%{user: user}
|
|
end
|
|
|
|
describe "admin sidebar" do
|
|
setup %{conn: conn, user: user} do
|
|
%{conn: log_in_user(conn, user)}
|
|
end
|
|
|
|
test "renders sidebar nav links on admin pages", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/admin/orders")
|
|
|
|
assert has_element?(view, ~s(a[href="/admin"]), "Dashboard")
|
|
assert has_element?(view, ~s(a[href="/admin/orders"]), "Orders")
|
|
assert has_element?(view, ~s(a[href="/admin/theme"]), "Theme")
|
|
assert has_element?(view, ~s(a[href="/admin/settings"]), "Settings")
|
|
end
|
|
|
|
test "highlights active nav link for current page", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/admin/orders")
|
|
|
|
assert has_element?(view, ~s(a.active[href="/admin/orders"]))
|
|
refute has_element?(view, ~s(a.active[href="/admin/settings"]))
|
|
end
|
|
|
|
test "highlights correct link on different pages", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/admin/settings")
|
|
|
|
assert has_element?(view, ~s(a.active[href="/admin/settings"]))
|
|
refute has_element?(view, ~s(a.active[href="/admin/orders"]))
|
|
end
|
|
|
|
test "shows user email in sidebar", %{conn: conn, user: user} do
|
|
{:ok, _view, html} = live(conn, ~p"/admin/orders")
|
|
|
|
assert html =~ user.email
|
|
end
|
|
|
|
test "shows view shop and log out links", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/admin/orders")
|
|
|
|
assert has_element?(view, ~s(a[href="/"]), "View shop")
|
|
assert has_element?(view, ~s(a[href="/users/log-out"]), "Log out")
|
|
end
|
|
end
|
|
|
|
describe "theme editor layout" do
|
|
setup %{conn: conn, user: user} do
|
|
%{conn: log_in_user(conn, user)}
|
|
end
|
|
|
|
test "does not render sidebar", %{conn: conn} do
|
|
{:ok, _view, html} = live(conn, ~p"/admin/theme")
|
|
|
|
refute html =~ "admin-drawer"
|
|
end
|
|
|
|
test "shows back link to admin", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/admin/theme")
|
|
|
|
assert has_element?(view, ~s(a[href="/admin"]), "Admin")
|
|
end
|
|
end
|
|
|
|
describe "admin bar on shop pages" do
|
|
setup do
|
|
{:ok, _} = Berrypod.Settings.set_site_live(true)
|
|
:ok
|
|
end
|
|
|
|
test "shows admin link when logged in", %{conn: conn, user: user} do
|
|
conn = log_in_user(conn, user)
|
|
{:ok, _view, html} = live(conn, ~p"/")
|
|
|
|
assert html =~ ~s(href="/admin")
|
|
end
|
|
|
|
test "does not show admin link when logged out", %{conn: conn} do
|
|
{:ok, _view, html} = live(conn, ~p"/")
|
|
|
|
refute html =~ ~s(href="/admin")
|
|
end
|
|
end
|
|
end
|