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).where(members: { role_id: @role.id }).distinct.sorted |
|
106 |
links = @role.members.map(&:project).uniq.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
- Next »