diff --git a/lib/assigner.rb b/lib/assigner.rb index 65efca0..a034384 100644 --- a/lib/assigner.rb +++ b/lib/assigner.rb @@ -547,8 +547,7 @@ class ::Assigner end def reassign? - return false if !@target.is_a?(Topic) - Assignment.exists?(topic_id: @target.id, target: @target, active: true) + Assignment.exists?(target: @target, active: true) end def no_assignee_change?(assignee) diff --git a/spec/lib/assigner_spec.rb b/spec/lib/assigner_spec.rb index fb2b8f5..cb2db1e 100644 --- a/spec/lib/assigner_spec.rb +++ b/spec/lib/assigner_spec.rb @@ -264,6 +264,21 @@ RSpec.describe Assigner do expect(second_assign[:success]).to eq(true) end + it "reassigns a post even when at the assignments limit" do + posts = + (described_class::ASSIGNMENTS_PER_TOPIC_LIMIT).times.map do + Fabricate(:post, topic: topic) + end + + posts.each do |post| + user = Fabricate(:moderator) + described_class.new(post, admin).assign(user) + end + + status = described_class.new(posts.first, admin).assign(Fabricate(:moderator)) + expect(status[:success]).to eq(true) + end + context "when 'allow_self_reassign' is false" do subject(:assign) do assigner.assign(moderator, note: other_note, allow_self_reassign: self_reassign)