diff --git a/app/presenters/discussion_topic_presenter.rb b/app/presenters/discussion_topic_presenter.rb index b78ebe62630..c08b9c2c2c4 100644 --- a/app/presenters/discussion_topic_presenter.rb +++ b/app/presenters/discussion_topic_presenter.rb @@ -66,7 +66,7 @@ class DiscussionTopicPresenter end def peer_reviews_for(user) - reviews = user.assigned_submission_assessments.for_assignment(assignment.id).to_a + reviews = user.assigned_submission_assessments.shard(assignment.shard).for_assignment(assignment.id).to_a if reviews.any? valid_student_ids = assignment.context.participating_students.where(:id => reviews.map(&:user_id)).pluck(:id).to_set reviews = reviews.select{|r| valid_student_ids.include?(r.user_id)} diff --git a/spec/presenters/discussion_topic_presenter_spec.rb b/spec/presenters/discussion_topic_presenter_spec.rb index 56e5e907d32..6e7d6d5bf40 100644 --- a/spec/presenters/discussion_topic_presenter_spec.rb +++ b/spec/presenters/discussion_topic_presenter_spec.rb @@ -17,6 +17,7 @@ # require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +require File.expand_path(File.dirname(__FILE__) + '/../sharding_spec_helper.rb') describe DiscussionTopicPresenter do let (:topic) { DiscussionTopic.new(:title => 'Test Topic', :assignment => assignment) } @@ -191,4 +192,39 @@ describe DiscussionTopicPresenter do end end + describe "#peer_reviews_for" do + let(:user2) { user_model } + let(:user3) { user_model } + + before do + topic.context = course + assignment.context = course + assignment.peer_reviews = true + assignment.save! + [user, user2, user3].map do |u| + course.enroll_student(u, {enrollment_state: 'active'}) + end + assignment.assign_peer_review(user, user2) + end + + it "returns the assigned peer reviews" do + expect( + presenter.peer_reviews_for(user).map(&:user_id) + ).to match_array [user2.id] + end + + context "for cross-shard enrollments" do + specs_require_sharding + + let(:user) { @shard2.activate { user_model } } + let(:user2) { @shard2.activate { user_model } } + + it "returns the assigned peer reviews" do + expect( + presenter.peer_reviews_for(user).map(&:user_id) + ).to match_array [user2.id] + end + end + end + end