2026-02-18 21:23:15 +00:00
|
|
|
defmodule BerrypodWeb.Admin.LayoutTest do
|
|
|
|
|
use BerrypodWeb.ConnCase, async: false
|
2026-02-12 08:35:22 +00:00
|
|
|
|
|
|
|
|
import Phoenix.LiveViewTest
|
2026-02-18 21:23:15 +00:00
|
|
|
import Berrypod.AccountsFixtures
|
2026-02-12 08:35:22 +00:00
|
|
|
|
|
|
|
|
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")
|
|
|
|
|
|
2026-02-12 14:17:38 +00:00
|
|
|
assert has_element?(view, ~s(a[href="/admin"]), "Dashboard")
|
2026-02-12 08:35:22 +00:00
|
|
|
assert has_element?(view, ~s(a[href="/admin/orders"]), "Orders")
|
2026-03-09 20:30:33 +00:00
|
|
|
assert has_element?(view, ~s(a[href="/?edit=theme"]), "Theme")
|
2026-02-12 08:35:22 +00:00
|
|
|
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
|
|
|
|
|
|
2026-03-05 15:29:05 +00:00
|
|
|
test "shows shop and log out links", %{conn: conn} do
|
2026-02-12 08:35:22 +00:00
|
|
|
{:ok, view, _html} = live(conn, ~p"/admin/orders")
|
|
|
|
|
|
2026-03-05 15:29:05 +00:00
|
|
|
assert has_element?(view, ~s(a[href="/"]), "Shop")
|
2026-02-12 08:35:22 +00:00
|
|
|
assert has_element?(view, ~s(a[href="/users/log-out"]), "Log out")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe "admin bar on shop pages" do
|
|
|
|
|
setup do
|
2026-02-18 21:23:15 +00:00
|
|
|
{:ok, _} = Berrypod.Settings.set_site_live(true)
|
2026-02-12 08:35:22 +00:00
|
|
|
: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"/")
|
|
|
|
|
|
2026-02-12 14:17:38 +00:00
|
|
|
assert html =~ ~s(href="/admin")
|
2026-02-12 08:35:22 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
test "does not show admin link when logged out", %{conn: conn} do
|
|
|
|
|
{:ok, _view, html} = live(conn, ~p"/")
|
|
|
|
|
|
2026-02-12 14:17:38 +00:00
|
|
|
refute html =~ ~s(href="/admin")
|
2026-02-12 08:35:22 +00:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|