summaryrefslogtreecommitdiffstats
path: root/test/functional/roles_controller_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/roles_controller_test.rb')
-rw-r--r--test/functional/roles_controller_test.rb32
1 files changed, 27 insertions, 5 deletions
diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb
index c343b9bd6..cbb2da3de 100644
--- a/test/functional/roles_controller_test.rb
+++ b/test/functional/roles_controller_test.rb
@@ -239,11 +239,33 @@ class RolesControllerTest < Redmine::ControllerTest
assert_nil Role.find_by_id(r.id)
end
- def test_destroy_role_in_use
- delete :destroy, :params => {:id => 1}
- assert_redirected_to '/roles'
- assert_equal 'This role is in use and cannot be deleted.', flash[:error]
- assert_not_nil Role.find_by_id(1)
+ def test_destroy_role_with_members
+ role = Role.find(2) # Developer, has members
+
+ delete :destroy, params: { id: role.id }
+
+ assert_redirected_to roles_path
+ assert Role.find_by(id: role.id)
+
+ assert flash[:error].present?
+ assert_includes flash[:error], I18n.t(:error_can_not_remove_role)
+
+ expected_dependency_projects = Project.where(identifier: ['ecookbook', 'onlinestore', 'private-child'])
+ expected_dependency_projects.each do |project|
+ assert_includes flash[:error], project.name
+ assert_includes flash[:error], settings_project_path(project, tab: 'members')
+ end
+ end
+
+ def test_destroy_builtin
+ role = Role.anonymous
+
+ delete :destroy, params: { id: role.id }
+
+ assert_redirected_to roles_path
+ assert Role.find_by(id: role.id)
+ assert flash[:error].present?
+ assert_equal flash[:error], I18n.t(:error_can_not_remove_role)
end
def test_permissions