Feature #42441 » 0001-Improve-role-deletion-error-message-to-display-proje.patch
| app/controllers/roles_controller.rb | ||
|---|---|---|
| 99 | 99 |
begin |
| 100 | 100 |
@role.destroy |
| 101 | 101 |
rescue |
| 102 |
flash[:error] = l(:error_can_not_remove_role) |
|
| 102 |
flash[:error] = l(:error_can_not_remove_role) |
|
| 103 | ||
| 104 |
if @role.members.present? |
|
| 105 |
projects = Project.joins(members: :member_roles).where(member_roles: { role_id: @role.id }).distinct.sorted
|
|
| 106 |
links = projects.map do |p| |
|
| 107 |
view_context.link_to(p, settings_project_path(p, tab: 'members')) |
|
| 108 |
end.join(', ')
|
|
| 109 |
flash[:error] += l(:error_can_not_remove_role_reason_members_html, projects: links) |
|
| 110 |
end |
|
| 103 | 111 |
end |
| 104 | 112 |
redirect_to roles_path |
| 105 | 113 |
end |
| config/locales/en.yml | ||
|---|---|---|
| 207 | 207 |
error_can_not_delete_custom_field: Unable to delete custom field |
| 208 | 208 |
error_can_not_delete_tracker_html: "This tracker contains issues and cannot be deleted.<p>The following projects have issues with this tracker:<br>%{projects}</p>"
|
| 209 | 209 |
error_can_not_remove_role: "This role is in use and cannot be deleted." |
| 210 |
error_can_not_remove_role_reason_members_html: "<p>The following projects have members with this role:<br>%{projects}</p>"
|
|
| 210 | 211 |
error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version cannot be reopened' |
| 211 | 212 |
error_can_not_archive_project: This project cannot be archived |
| 212 | 213 |
error_issue_done_ratios_not_updated: "Issue done ratios not updated." |
| test/functional/roles_controller_test.rb | ||
|---|---|---|
| 239 | 239 |
assert_nil Role.find_by_id(r.id) |
| 240 | 240 |
end |
| 241 | 241 | |
| 242 |
def test_destroy_role_in_use |
|
| 243 |
delete :destroy, :params => {:id => 1}
|
|
| 244 |
assert_redirected_to '/roles' |
|
| 245 |
assert_equal 'This role is in use and cannot be deleted.', flash[:error] |
|
| 246 |
assert_not_nil Role.find_by_id(1) |
|
| 242 |
def test_destroy_role_with_members |
|
| 243 |
role = Role.find(2) # Developer, has members |
|
| 244 | ||
| 245 |
delete :destroy, params: { id: role.id }
|
|
| 246 | ||
| 247 |
assert_redirected_to roles_path |
|
| 248 |
assert Role.find_by(id: role.id) |
|
| 249 | ||
| 250 |
assert flash[:error].present? |
|
| 251 |
assert_includes flash[:error], I18n.t(:error_can_not_remove_role) |
|
| 252 | ||
| 253 |
expected_dependency_projects = Project.where(identifier: ['ecookbook', 'onlinestore', 'private-child']) |
|
| 254 |
expected_dependency_projects.each do |project| |
|
| 255 |
assert_includes flash[:error], project.name |
|
| 256 |
assert_includes flash[:error], settings_project_path(project, tab: 'members') |
|
| 257 |
end |
|
| 258 |
end |
|
| 259 | ||
| 260 |
def test_destroy_builtin |
|
| 261 |
role = Role.anonymous |
|
| 262 | ||
| 263 |
delete :destroy, params: { id: role.id }
|
|
| 264 | ||
| 265 |
assert_redirected_to roles_path |
|
| 266 |
assert Role.find_by(id: role.id) |
|
| 267 |
assert flash[:error].present? |
|
| 268 |
assert_equal flash[:error], I18n.t(:error_can_not_remove_role) |
|
| 247 | 269 |
end |
| 248 | 270 | |
| 249 | 271 |
def test_permissions |
- « Previous
- 1
- 2
- 3
- Next »