test: adapt tests to reflect implementation details
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Simon 2026-01-27 23:40:12 +01:00
parent 5e0b6580ae
commit 9991291b2f
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
7 changed files with 98 additions and 71 deletions

View file

@ -28,8 +28,13 @@ defmodule MvWeb.GroupLive.Form do
resource = Mv.Membership.Group
if can?(actor, action, resource) do
socket = load_group_for_form(socket, params, actor)
{:ok, assign_form(socket)}
case load_group_for_form(socket, params, actor) do
{:redirect, socket} ->
{:ok, socket}
{:ok, socket} ->
{:ok, assign_form(socket)}
end
else
{:ok, redirect(socket, to: ~p"/groups")}
end
@ -39,10 +44,13 @@ defmodule MvWeb.GroupLive.Form do
case params["slug"] do
nil ->
# New group
socket
|> assign(:group, nil)
|> assign(:page_title, gettext("Create Group"))
|> assign(:return_to, "index")
socket =
socket
|> assign(:group, nil)
|> assign(:page_title, gettext("Create Group"))
|> assign(:return_to, "index")
{:ok, socket}
slug ->
# Edit existing group
@ -53,20 +61,29 @@ defmodule MvWeb.GroupLive.Form do
defp load_existing_group(socket, slug, actor) do
case Membership.get_group_by_slug(slug, actor: actor) do
{:ok, nil} ->
socket
|> put_flash(:error, gettext("Group not found."))
|> redirect(to: ~p"/groups")
socket =
socket
|> put_flash(:error, gettext("Group not found."))
|> redirect(to: ~p"/groups")
{:redirect, socket}
{:ok, group} ->
socket
|> assign(:group, group)
|> assign(:page_title, gettext("Edit Group"))
|> assign(:return_to, "show")
socket =
socket
|> assign(:group, group)
|> assign(:page_title, gettext("Edit Group"))
|> assign(:return_to, "show")
{:ok, socket}
{:error, _error} ->
socket
|> put_flash(:error, gettext("Failed to load group."))
|> redirect(to: ~p"/groups")
socket =
socket
|> put_flash(:error, gettext("Failed to load group."))
|> redirect(to: ~p"/groups")
{:redirect, socket}
end
end
@ -174,7 +191,7 @@ defmodule MvWeb.GroupLive.Form do
defp notify_parent(msg), do: send(self(), {__MODULE__, msg})
defp assign_form(%{assigns: assigns} = socket) do
group = assigns.group
group = Map.get(assigns, :group)
actor = assigns.current_user
form =

View file

@ -22,8 +22,8 @@ defmodule MvWeb.GroupLive.Index do
def mount(_params, _session, socket) do
actor = current_actor(socket)
# Check if user can read groups
if can?(actor, :read, Mv.Membership.Group) do
# Check if user can access the groups page (page permission check)
if can_access_page?(actor, "/groups") do
groups = load_groups(actor)
{:ok,