Tests: data-testid selectors, scoped delete, sidebar testid
Member/User auth tests use data-testid and #row-id selectors. Sidebar auth tests assert on data-testid=sidebar-administration. Sidebar test expects data-testid in expanded-menu-group markup.
This commit is contained in:
parent
ee6bfbacbb
commit
cbc9376b7b
4 changed files with 46 additions and 43 deletions
|
|
@ -149,7 +149,9 @@ defmodule MvWeb.Layouts.SidebarTest do
|
||||||
assert menu_item_count > 0, "Should have at least one top-level menu item"
|
assert menu_item_count > 0, "Should have at least one top-level menu item"
|
||||||
|
|
||||||
# Check that nested menu groups exist
|
# Check that nested menu groups exist
|
||||||
assert html =~ ~s(<li role="none" class="expanded-menu-group">)
|
assert html =~
|
||||||
|
~s(<li role="none" class="expanded-menu-group" data-testid="sidebar-administration">)
|
||||||
|
|
||||||
assert html =~ ~s(role="group")
|
assert html =~ ~s(role="group")
|
||||||
assert has_class?(html, "expanded-menu-group")
|
assert has_class?(html, "expanded-menu-group")
|
||||||
|
|
||||||
|
|
@ -198,7 +200,9 @@ defmodule MvWeb.Layouts.SidebarTest do
|
||||||
html = render_sidebar(authenticated_assigns())
|
html = render_sidebar(authenticated_assigns())
|
||||||
|
|
||||||
# Check for nested menu structure
|
# Check for nested menu structure
|
||||||
assert html =~ ~s(<li role="none" class="expanded-menu-group">)
|
assert html =~
|
||||||
|
~s(<li role="none" class="expanded-menu-group" data-testid="sidebar-administration">)
|
||||||
|
|
||||||
assert html =~ ~s(role="group")
|
assert html =~ ~s(role="group")
|
||||||
assert html =~ ~s(aria-label="Administration")
|
assert html =~ ~s(aria-label="Administration")
|
||||||
assert has_class?(html, "expanded-menu-group")
|
assert has_class?(html, "expanded-menu-group")
|
||||||
|
|
@ -526,7 +530,9 @@ defmodule MvWeb.Layouts.SidebarTest do
|
||||||
assert html =~ ~s(role="menuitem")
|
assert html =~ ~s(role="menuitem")
|
||||||
|
|
||||||
# Check that nested menus exist
|
# Check that nested menus exist
|
||||||
assert html =~ ~s(<li role="none" class="expanded-menu-group">)
|
assert html =~
|
||||||
|
~s(<li role="none" class="expanded-menu-group" data-testid="sidebar-administration">)
|
||||||
|
|
||||||
assert html =~ ~s(role="group")
|
assert html =~ ~s(role="group")
|
||||||
|
|
||||||
# Footer section
|
# Footer section
|
||||||
|
|
@ -634,7 +640,9 @@ defmodule MvWeb.Layouts.SidebarTest do
|
||||||
html = render_sidebar(authenticated_assigns())
|
html = render_sidebar(authenticated_assigns())
|
||||||
|
|
||||||
# expanded-menu-group structure present
|
# expanded-menu-group structure present
|
||||||
assert html =~ ~s(<li role="none" class="expanded-menu-group">)
|
assert html =~
|
||||||
|
~s(<li role="none" class="expanded-menu-group" data-testid="sidebar-administration">)
|
||||||
|
|
||||||
assert html =~ ~s(role="group")
|
assert html =~ ~s(role="group")
|
||||||
assert html =~ ~s(aria-label="Administration")
|
assert html =~ ~s(aria-label="Administration")
|
||||||
assert has_class?(html, "expanded-menu-group")
|
assert has_class?(html, "expanded-menu-group")
|
||||||
|
|
@ -848,7 +856,9 @@ defmodule MvWeb.Layouts.SidebarTest do
|
||||||
|
|
||||||
# Expanded menu group should have correct structure
|
# Expanded menu group should have correct structure
|
||||||
# (CSS handles hover effects, but we verify structure)
|
# (CSS handles hover effects, but we verify structure)
|
||||||
assert html =~ ~s(<li role="none" class="expanded-menu-group">)
|
assert html =~
|
||||||
|
~s(<li role="none" class="expanded-menu-group" data-testid="sidebar-administration">)
|
||||||
|
|
||||||
assert html =~ ~s(role="group")
|
assert html =~ ~s(role="group")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ defmodule MvWeb.SidebarAuthorizationTest do
|
||||||
|
|
||||||
assert html =~ ~s(href="/members")
|
assert html =~ ~s(href="/members")
|
||||||
assert html =~ ~s(href="/membership_fee_types")
|
assert html =~ ~s(href="/membership_fee_types")
|
||||||
assert html =~ ~s(aria-label="Administration")
|
assert html =~ ~s(data-testid="sidebar-administration")
|
||||||
assert html =~ ~s(href="/users")
|
assert html =~ ~s(href="/users")
|
||||||
assert html =~ ~s(href="/groups")
|
assert html =~ ~s(href="/groups")
|
||||||
assert html =~ ~s(href="/admin/roles")
|
assert html =~ ~s(href="/admin/roles")
|
||||||
|
|
@ -94,7 +94,7 @@ defmodule MvWeb.SidebarAuthorizationTest do
|
||||||
|
|
||||||
refute html =~ ~s(href="/membership_fee_types")
|
refute html =~ ~s(href="/membership_fee_types")
|
||||||
refute html =~ ~s(href="/users")
|
refute html =~ ~s(href="/users")
|
||||||
refute html =~ ~s(aria-label="Administration")
|
refute html =~ ~s(data-testid="sidebar-administration")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,18 +8,14 @@ defmodule MvWeb.MemberLiveAuthorizationTest do
|
||||||
|
|
||||||
alias Mv.Fixtures
|
alias Mv.Fixtures
|
||||||
|
|
||||||
# Use literal strings for button/link text (matches default Gettext locale)
|
|
||||||
@new_member_text "New Member"
|
|
||||||
@edit_member_text "Edit Member"
|
|
||||||
|
|
||||||
describe "Member Index - Vorstand (read_only)" do
|
describe "Member Index - Vorstand (read_only)" do
|
||||||
@tag role: :read_only
|
@tag role: :read_only
|
||||||
test "sees member list but not New Member button", %{conn: conn} do
|
test "sees member list but not New Member button", %{conn: conn} do
|
||||||
_member = Fixtures.member_fixture()
|
_member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, _view, html} = live(conn, "/members")
|
{:ok, view, _html} = live(conn, "/members")
|
||||||
|
|
||||||
refute html =~ @new_member_text
|
refute has_element?(view, "[data-testid=member-new]")
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag role: :read_only
|
@tag role: :read_only
|
||||||
|
|
@ -28,8 +24,8 @@ defmodule MvWeb.MemberLiveAuthorizationTest do
|
||||||
|
|
||||||
{:ok, view, _html} = live(conn, "/members")
|
{:ok, view, _html} = live(conn, "/members")
|
||||||
|
|
||||||
refute has_element?(view, "a[href=\"/members/#{member.id}/edit\"]")
|
refute has_element?(view, "#row-#{member.id} [data-testid=member-edit]")
|
||||||
refute has_element?(view, "a[phx-click*='delete']")
|
refute has_element?(view, "#row-#{member.id} [data-testid=member-delete]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -38,19 +34,19 @@ defmodule MvWeb.MemberLiveAuthorizationTest do
|
||||||
test "sees New Member and Edit buttons", %{conn: conn} do
|
test "sees New Member and Edit buttons", %{conn: conn} do
|
||||||
member = Fixtures.member_fixture()
|
member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, view, html} = live(conn, "/members")
|
{:ok, view, _html} = live(conn, "/members")
|
||||||
|
|
||||||
assert html =~ @new_member_text
|
assert has_element?(view, "[data-testid=member-new]")
|
||||||
assert has_element?(view, "a[href=\"/members/#{member.id}/edit\"]")
|
assert has_element?(view, "#row-#{member.id} [data-testid=member-edit]")
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag role: :normal_user
|
@tag role: :normal_user
|
||||||
test "does not see Delete button", %{conn: conn} do
|
test "does not see Delete button", %{conn: conn} do
|
||||||
_member = Fixtures.member_fixture()
|
member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, view, _html} = live(conn, "/members")
|
{:ok, view, _html} = live(conn, "/members")
|
||||||
|
|
||||||
refute has_element?(view, "a[phx-click*='delete']")
|
refute has_element?(view, "#row-#{member.id} [data-testid=member-delete]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -59,11 +55,11 @@ defmodule MvWeb.MemberLiveAuthorizationTest do
|
||||||
test "sees New Member, Edit and Delete buttons", %{conn: conn} do
|
test "sees New Member, Edit and Delete buttons", %{conn: conn} do
|
||||||
member = Fixtures.member_fixture()
|
member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, view, html} = live(conn, "/members")
|
{:ok, view, _html} = live(conn, "/members")
|
||||||
|
|
||||||
assert html =~ @new_member_text
|
assert has_element?(view, "[data-testid=member-new]")
|
||||||
assert has_element?(view, "a[href=\"/members/#{member.id}/edit\"]")
|
assert has_element?(view, "#row-#{member.id} [data-testid=member-edit]")
|
||||||
assert has_element?(view, "a[phx-click*='delete']")
|
assert has_element?(view, "#row-#{member.id} [data-testid=member-delete]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -80,27 +76,27 @@ defmodule MvWeb.MemberLiveAuthorizationTest do
|
||||||
test "admin sees Edit button", %{conn: conn} do
|
test "admin sees Edit button", %{conn: conn} do
|
||||||
member = Fixtures.member_fixture()
|
member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, _view, html} = live(conn, "/members/#{member.id}")
|
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||||
|
|
||||||
assert html =~ @edit_member_text
|
assert has_element?(view, "[data-testid=member-edit]")
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag role: :read_only
|
@tag role: :read_only
|
||||||
test "read_only does not see Edit button", %{conn: conn} do
|
test "read_only does not see Edit button", %{conn: conn} do
|
||||||
member = Fixtures.member_fixture()
|
member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, _view, html} = live(conn, "/members/#{member.id}")
|
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||||
|
|
||||||
refute html =~ @edit_member_text
|
refute has_element?(view, "[data-testid=member-edit]")
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag role: :normal_user
|
@tag role: :normal_user
|
||||||
test "normal_user sees Edit button", %{conn: conn} do
|
test "normal_user sees Edit button", %{conn: conn} do
|
||||||
member = Fixtures.member_fixture()
|
member = Fixtures.member_fixture()
|
||||||
|
|
||||||
{:ok, _view, html} = live(conn, "/members/#{member.id}")
|
{:ok, view, _html} = live(conn, "/members/#{member.id}")
|
||||||
|
|
||||||
assert html =~ @edit_member_text
|
assert has_element?(view, "[data-testid=member-edit]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -8,19 +8,16 @@ defmodule MvWeb.UserLiveAuthorizationTest do
|
||||||
|
|
||||||
alias Mv.Fixtures
|
alias Mv.Fixtures
|
||||||
|
|
||||||
@new_user_text "New User"
|
|
||||||
@edit_user_text "Edit User"
|
|
||||||
|
|
||||||
describe "User Index - Admin" do
|
describe "User Index - Admin" do
|
||||||
@tag role: :admin
|
@tag role: :admin
|
||||||
test "sees New User, Edit and Delete buttons", %{conn: conn} do
|
test "sees New User, Edit and Delete buttons", %{conn: conn} do
|
||||||
user = Fixtures.user_with_role_fixture("admin")
|
user = Fixtures.user_with_role_fixture("admin")
|
||||||
|
|
||||||
{:ok, view, html} = live(conn, "/users")
|
{:ok, view, _html} = live(conn, "/users")
|
||||||
|
|
||||||
assert html =~ @new_user_text
|
assert has_element?(view, "[data-testid=user-new]")
|
||||||
assert has_element?(view, "a[href=\"/users/#{user.id}/edit\"]")
|
assert has_element?(view, "#row-#{user.id} [data-testid=user-edit]")
|
||||||
assert has_element?(view, "a[phx-click*='delete']")
|
assert has_element?(view, "#row-#{user.id} [data-testid=user-delete]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -47,25 +44,25 @@ defmodule MvWeb.UserLiveAuthorizationTest do
|
||||||
describe "User Show - own profile" do
|
describe "User Show - own profile" do
|
||||||
@tag role: :member
|
@tag role: :member
|
||||||
test "member sees Edit button on own profile", %{conn: conn, current_user: user} do
|
test "member sees Edit button on own profile", %{conn: conn, current_user: user} do
|
||||||
{:ok, _view, html} = live(conn, "/users/#{user.id}")
|
{:ok, view, _html} = live(conn, "/users/#{user.id}")
|
||||||
|
|
||||||
assert html =~ @edit_user_text
|
assert has_element?(view, "[data-testid=user-edit]")
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag role: :read_only
|
@tag role: :read_only
|
||||||
test "read_only sees Edit button on own profile", %{conn: conn, current_user: user} do
|
test "read_only sees Edit button on own profile", %{conn: conn, current_user: user} do
|
||||||
{:ok, _view, html} = live(conn, "/users/#{user.id}")
|
{:ok, view, _html} = live(conn, "/users/#{user.id}")
|
||||||
|
|
||||||
assert html =~ @edit_user_text
|
assert has_element?(view, "[data-testid=user-edit]")
|
||||||
end
|
end
|
||||||
|
|
||||||
@tag role: :admin
|
@tag role: :admin
|
||||||
test "admin sees Edit button on user show", %{conn: conn} do
|
test "admin sees Edit button on user show", %{conn: conn} do
|
||||||
user = Fixtures.user_with_role_fixture("read_only")
|
user = Fixtures.user_with_role_fixture("read_only")
|
||||||
|
|
||||||
{:ok, _view, html} = live(conn, "/users/#{user.id}")
|
{:ok, view, _html} = live(conn, "/users/#{user.id}")
|
||||||
|
|
||||||
assert html =~ @edit_user_text
|
assert has_element?(view, "[data-testid=user-edit]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue