Fix link for anonymous peer review

fixes GRADE-2160

Test plan:
- Create a course and assignment with Anonymous Peer reviews enabled
- Add 2 students with immediate notifications for peer reviews enabled
- Have both students submit to assignment
- As a student, go to Dashboard and click the Anonymous Peer Review link
under Recent Activity
- Check student's messages for Anonymous Peer Review notification and
follow the link
- Neither link should result in error

Change-Id: Ibd0cb0e72a5d370dfef15b1462a84a8b2a727b40
Reviewed-on: https://gerrit.instructure.com/199808
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
Reviewed-by: Gary Mei <gmei@instructure.com>
QA-Review: Adrian Packel <apackel@instructure.com>
Product-Review: Keith Garner <kgarner@instructure.com>
This commit is contained in:
Christine Yan 2019-07-01 15:58:18 -05:00
parent 1930390994
commit c1eafebe28
6 changed files with 64 additions and 16 deletions

View File

@ -18,15 +18,26 @@
module Messages::PeerReviewsHelper
def reviewee_name(asset, reviewer)
asset.can_read_assessment_user_name?(reviewer, nil) ? asset.asset.user.name : I18n.t(:anonymous_user, 'Anonymous User')
asset.can_read_assessment_user_name?(reviewer, nil) ? asset.asset.user.name : I18n.t('Anonymous User')
end
def submission_comment_author(submission_comment, user)
submission_comment.can_read_author?(user, nil) ? (submission_comment.author_name || I18n.t(:someone, "Someone")) : I18n.t(:anonymous_user, 'Anonymous User')
submission_comment.can_read_author?(user, nil) ? (submission_comment.author_name || I18n.t("Someone")) : I18n.t('Anonymous User')
end
def submission_comment_submittor(submission_comment, user)
submission_comment.submission.can_read_submission_user_name?(user, nil) ? submission_comment.submission.user.short_name : I18n.t(:anonymous_user, 'Anonymous User')
if submission_comment.submission.can_read_submission_user_name?(user, nil)
submission_comment.submission.user.short_name
else
I18n.t('Anonymous User')
end
end
end
def get_submission_link(asset, user)
Submission::ShowPresenter.new(
submission: asset.asset,
current_user: user,
assessment_request: asset
).submission_data_url
end
end

View File

@ -75,7 +75,7 @@ module StreamItemsHelper
presenter.updated_at = extract_updated_at(category, item, user)
presenter.updated_at ||= item.updated_at
presenter.unread = item.unread
presenter.path = extract_path(category, item)
presenter.path = extract_path(category, item, user)
presenter.context = extract_context(category, item)
presenter.summary = extract_summary(category, item, user)
presenter
@ -90,19 +90,23 @@ module StreamItemsHelper
end
end
def extract_path(category, item)
def extract_path(category, item, user)
case category
when "Announcement", "DiscussionTopic"
polymorphic_path([item.context_type.underscore, category.underscore], :"#{item.context_type.underscore}_id" => Shard.short_id_for(item.context_id), :id => Shard.short_id_for(item.asset_id))
polymorphic_path([item.context_type.underscore, category.underscore], :"#{item.context_type.underscore}_id"\
=> Shard.short_id_for(item.context_id), :id => Shard.short_id_for(item.asset_id))
when "Conversation"
conversation_path(Shard.short_id_for(item.asset_id))
when "Assignment"
polymorphic_path([item.context_type.underscore, category.underscore], :"#{item.context_type.underscore}_id" => Shard.short_id_for(item.context_id), :id => Shard.short_id_for(item.data.context_id))
polymorphic_path([item.context_type.underscore, category.underscore], :"#{item.context_type.underscore}_id"\
=> Shard.short_id_for(item.context_id), :id => Shard.short_id_for(item.data.context_id))
when "AssessmentRequest"
submission = item.data.assessor_asset
course_assignment_submission_path(item.context_id, submission.assignment_id, Shard.short_id_for(item.data.user_id))
else
nil
submission = item.data.asset
Submission::ShowPresenter.new(
submission: submission,
current_user: user,
assessment_request: item.data
).submission_data_url
end
end

View File

@ -1,5 +1,5 @@
<% define_content :link do %>
<%= polymorphic_url([asset.context, asset.asset.assignment, :submission], id: asset.asset.user_id) %>
<%= get_submission_link(asset, user) %>
<% end %>
<% define_content :subject do %>

View File

@ -1,5 +1,5 @@
<% define_content :link do %>
<%= polymorphic_url([asset.context, asset.asset.assignment, :submission], id: asset.asset.user_id) %>
<%= get_submission_link(asset, user) %>
<% end %>
<% define_content :subject do %>

View File

@ -36,6 +36,17 @@ describe Messages::PeerReviewsHelper do
expect(reviewee_name(@assessment_request, @user2)).to eq(I18n.t(:anonymous_user, 'Anonymous User'))
end
it 'should return anonymous URL when get_submission_link is called with anonymous peer reviews enabled' do
assignment = @assessment_request.asset.assignment
assignment.update!(anonymous_peer_reviews: true)
expect(get_submission_link(@assessment_request, @user)).to include('anonymous_submission')
end
it 'should return normal URL when get_submission_link is called without anonymous peer reviews enabled' do
assignment = @assessment_request.asset.assignment
assignment.update!(anonymous_peer_reviews: false)
expect(get_submission_link(@assessment_request, @user)).to include('/submissions/')
end
end
describe 'submission comments' do

View File

@ -199,13 +199,35 @@ describe StreamItemsHelper do
student = @student
create_enrollments(@course, [@other_user])
assessor_submission = submission_model(assignment: @assignment, user: @other_user)
assessment_request = AssessmentRequest.create!(assessor: @other_user, asset: @submission,
user: student, assessor_asset: assessor_submission)
assessment_request = AssessmentRequest.create!(
assessor: @other_user,
asset: @submission,
user: student,
assessor_asset: assessor_submission
)
assessment_request.workflow_state = 'assigned'
assessment_request.save
items = @other_user.recent_stream_items
@categorized = helper.categorize_stream_items(items, @other_user)
expect(@categorized["AssessmentRequest"].first.summary).to include('Anonymous User')
end
it 'should anonymize path for anonymous AssessmentRequests' do
@assignment.update_attribute(:anonymous_peer_reviews, true)
student = @student
create_enrollments(@course, [@other_user])
assessor_submission = submission_model(assignment: @assignment, user: @other_user)
assessment_request = AssessmentRequest.create!(
assessor: @other_user,
asset: @submission,
user: student,
assessor_asset: assessor_submission
)
assessment_request.workflow_state = 'assigned'
assessment_request.save
items = @other_user.recent_stream_items
@categorized = helper.categorize_stream_items(items, @other_user)
expect(@categorized["AssessmentRequest"].first.path).to include('anonymous_submission')
end
end
end