require "test_helper" class UserManagementTest < ActiveSupport::TestCase test "cannot deactivate the last active admin" do admin = users(:admin) assert admin.last_active_admin? assert_not admin.can_be_deactivated? admin.active = false assert_not admin.valid? assert_includes admin.errors[:base].join, "almeno un amministratore attivo" end test "cannot demote the last active admin" do admin = users(:admin) admin.role = "user" assert_not admin.valid? assert_includes admin.errors[:base].join, "almeno un amministratore attivo" end test "can deactivate seed admin when another admin exists" do other = User.create!( email: "second-admin@example.com", first_name: "Second", last_name: "Admin", role: "admin", password: "password123", password_confirmation: "password123", active: true ) admin = users(:admin) assert_not admin.last_active_admin? assert admin.can_be_deactivated? assert admin.update(active: false) assert_not admin.reload.active? assert other.reload.active? end test "cannot destroy the last active admin" do admin = users(:admin) assert_not admin.destroy assert admin.errors[:base].join.include?("unico amministratore attivo") || User.exists?(admin.id) end test "can destroy a regular user" do marco = users(:marco) assert marco.destroy assert_not User.exists?(marco.id) end end