Re-enable issue reassigning.
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 6 Dec 2017 18:01:51 +0000 (18:01 +0000)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 6 Dec 2017 18:01:51 +0000 (18:01 +0000)
app/controllers/issue_comments_controller.rb
app/controllers/issues_controller.rb
app/models/issue.rb
app/views/issues/_comments.html.erb
test/system/issues_test.rb

index ba35b79..448b2a5 100644 (file)
@@ -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
index 2535879..3f28ec4 100644 (file)
@@ -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]
index 1fe078a..83923f2 100644 (file)
@@ -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
index 8931be8..d49ae86 100644 (file)
@@ -17,7 +17,7 @@
 <div class="comment">
   <%= 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 %>
   <br/>
   <br/>
   <%= submit_tag 'Submit' %>
index ab3e619..5ff1a52 100644 (file)
@@ -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