test: adapt tests for attribute-level default solution

This commit is contained in:
Moritz 2026-01-25 13:39:18 +01:00
parent e7bf777be2
commit 8f3fd9d0d7
Signed by: moritz
GPG key ID: 1020A035E5DD0824
4 changed files with 37 additions and 20 deletions

View file

@ -4,6 +4,8 @@ defmodule Mv.Helpers.SystemActorTest do
"""
use Mv.DataCase, async: false
import Ecto.Query
alias Mv.Helpers.SystemActor
alias Mv.Authorization
alias Mv.Accounts
@ -266,13 +268,15 @@ defmodule Mv.Helpers.SystemActorTest do
describe "edge cases" do
test "raises error if admin user has no role", %{admin_user: admin_user} do
system_actor = SystemActor.get_system_actor()
# Remove role from admin user by directly setting role_id to NULL in database
# (We can't use Ash because allow_nil? false prevents setting role_id to nil)
# Convert UUID to binary format for Postgrex
admin_user_id = Ecto.UUID.cast!(admin_user.id)
# Remove role from admin user
admin_user
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, nil, type: :append_and_remove)
|> Ash.update!(actor: system_actor)
Mv.Repo.update_all(
from(u in "users", where: u.id == type(^admin_user_id, :binary_id)),
set: [role_id: nil]
)
# Delete system user to force fallback
system_actor = SystemActor.get_system_actor()
@ -369,13 +373,15 @@ defmodule Mv.Helpers.SystemActorTest do
end
test "raises error if system user has no role", %{system_user: system_user} do
system_actor = SystemActor.get_system_actor()
# Remove role from system user by directly setting role_id to NULL in database
# (We can't use Ash because allow_nil? false prevents setting role_id to nil)
# Convert UUID to binary format for Postgrex
system_user_id = Ecto.UUID.cast!(system_user.id)
# Remove role from system user
system_user
|> Ash.Changeset.for_update(:update, %{})
|> Ash.Changeset.manage_relationship(:role, nil, type: :append_and_remove)
|> Ash.update!(actor: system_actor)
Mv.Repo.update_all(
from(u in "users", where: u.id == type(^system_user_id, :binary_id)),
set: [role_id: nil]
)
SystemActor.invalidate_cache()