From 8dc8479e12b50878ca6b476a4dd72fe1da1f24ad Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 6 Dec 2017 18:01:51 +0000 Subject: [PATCH 1/1] Re-enable issue reassigning. --- app/controllers/issue_comments_controller.rb | 12 ++++++++---- app/controllers/issues_controller.rb | 14 -------------- app/models/issue.rb | 4 +++- app/views/issues/_comments.html.erb | 2 +- test/system/issues_test.rb | 15 +++++++++++++++ 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/app/controllers/issue_comments_controller.rb b/app/controllers/issue_comments_controller.rb index ba35b7978..448b2a5d6 100644 --- a/app/controllers/issue_comments_controller.rb +++ b/app/controllers/issue_comments_controller.rb @@ -9,12 +9,9 @@ class IssueCommentsController < ApplicationController @issue = Issue.find(params[:issue_id]) comment = @issue.comments.build(issue_comment_params) comment.user = current_user - # if params[:reassign] - # reassign_issue - # @issue_comment.reassign = true - # end comment.save! notice = t("issues.comment.comment_created") + reassign_issue(@issue) if params[:reassign] redirect_to @issue, :notice => notice end @@ -30,4 +27,11 @@ class IssueCommentsController < ApplicationController redirect_to root_path end end + + # This sort of assumes there are only two roles + def reassign_issue(issue) + role = (Issue::ASSIGNED_ROLES - [issue.assigned_role]).first + issue.assigned_role = role + issue.save! + end end diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 253587965..3f28ec44f 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -123,22 +123,8 @@ class IssuesController < ApplicationController end end - # Reassign Issues between Administrators and Moderators - def reassign_issue - @issue.assigned_role = upgrade_issue(@issue.assigned_role) - @issue.save! - end - private - def upgrade_issue(type) - if type == "moderator" - "administrator" - else - "moderator" - end - end - def set_issues @admin_issues = %w[DiaryEntry DiaryComment User] @moderator_issues = %w[Changeset Note] diff --git a/app/models/issue.rb b/app/models/issue.rb index 1fe078ad9..83923f242 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -37,7 +37,9 @@ class Issue < ActiveRecord::Base validates :reportable_id, :uniqueness => { :scope => [:reportable_type] } validates :reported_user_id, :presence => true - validates :assigned_role, :presence => true, :inclusion => %w[administrator moderator] + + ASSIGNED_ROLES = %w[administrator moderator].freeze + validates :assigned_role, :presence => true, :inclusion => ASSIGNED_ROLES before_validation :set_default_assigned_role before_validation :set_reported_user diff --git a/app/views/issues/_comments.html.erb b/app/views/issues/_comments.html.erb index 8931be8b9..d49ae8670 100644 --- a/app/views/issues/_comments.html.erb +++ b/app/views/issues/_comments.html.erb @@ -17,7 +17,7 @@
<%= form_for @new_comment, url: issue_comments_path(@issue) do |f| %> <%= richtext_area :issue_comment, :body, :cols => 10, :rows => 8, :required => true %> - <%= label_tag t('issues.show.comments.reassign_param') %> <%= check_box_tag :reassign, true %> + <%= label_tag :reassign, t('issues.show.comments.reassign_param') %> <%= check_box_tag :reassign, true %>

<%= submit_tag 'Submit' %> diff --git a/test/system/issues_test.rb b/test/system/issues_test.rb index ab3e619c9..5ff1a5294 100644 --- a/test/system/issues_test.rb +++ b/test/system/issues_test.rb @@ -63,4 +63,19 @@ class IssuesTest < ApplicationSystemTestCase issue.reload assert_equal issue.comments.first.body, "test comment" end + + def test_reassign_issue + issue = create(:issue) + assert_equal "administrator", issue.assigned_role + sign_in_as(create(:administrator_user)) + + visit issue_path(issue) + + fill_in :issue_comment_body, :with => "reassigning to moderators" + check :reassign + click_on "Submit" + + issue.reload + assert_equal "moderator", issue.assigned_role + end end -- 2.43.2