Some checks failed
deploy / deploy (push) Has been cancelled
- semantic HTML: step numbers inside h2, strong provider names, details for adapter configs, strong error messages, fieldset drawer toggle hidden - inline field errors via flash for no-JS controller fallback - single form POST button for test email (works with and without JS) - admin sidebar: remove brand/view-shop, move user email to footer nav - replace inline style with .admin-setup-step-spaced class - clean up unused CSS (.admin-brand, .admin-sidebar-header, etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
92 lines
2.6 KiB
Elixir
92 lines
2.6 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 shop and log out links", %{conn: conn} do
|
|
{:ok, view, _html} = live(conn, ~p"/admin/orders")
|
|
|
|
assert has_element?(view, ~s(a[href="/"]), "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
|