add new moderated/anonymous grading attributes to course copy

test plan:
* have an assignment in a course with moderated
 and anonymous grading settings checked (may have to enable
 features for these to be available)
* copy it into another course (with same features enabled)
* the copied assignment should have the same settings

closes #ADMIN-1489

Change-Id: I2647ce11da3a4cfb3ea370887248ef4b8d79a53a
Reviewed-on: https://gerrit.instructure.com/166114
Tested-by: Jenkins
QA-Review: Jon Willesen <jonw+gerrit@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
Reviewed-by: Carl Kibler <ckibler@instructure.com>
Reviewed-by: Mysti Sadler <mysti@instructure.com>
This commit is contained in:
James Williams 2018-09-27 13:39:39 -06:00
parent a3851ac2be
commit 1bdaa4effc
5 changed files with 44 additions and 5 deletions

View File

@ -294,7 +294,10 @@ module Importers
:automatic_peer_reviews, :anonymous_peer_reviews,
:grade_group_students_individually, :allowed_extensions,
:position, :peer_review_count,
:omit_from_final_grade, :intra_group_peer_reviews, :post_to_sis
:omit_from_final_grade, :intra_group_peer_reviews, :post_to_sis,
:moderated_grading, :grader_count, :grader_comments_visible_to_graders,
:anonymous_grading, :graders_anonymous_to_graders, :grader_names_visible_to_final_grader,
:anonymous_instructor_annotations
].each do |prop|
item.send("#{prop}=", hash[prop]) unless hash[prop].nil?
end

View File

@ -241,9 +241,13 @@ module CC
node.group_category assignment.group_category.try :name if assignment.group_category
atts = [:points_possible, :grading_type,
:all_day, :submission_types, :position, :turnitin_enabled, :vericite_enabled, :peer_review_count,
:peer_reviews, :automatic_peer_reviews, :moderated_grading,
:peer_reviews, :automatic_peer_reviews,
:anonymous_peer_reviews, :grade_group_students_individually, :freeze_on_copy,
:omit_from_final_grade, :intra_group_peer_reviews, :only_visible_to_overrides, :post_to_sis]
:omit_from_final_grade, :intra_group_peer_reviews, :only_visible_to_overrides, :post_to_sis,
:moderated_grading, :grader_count, :grader_comments_visible_to_graders,
:anonymous_grading, :graders_anonymous_to_graders, :grader_names_visible_to_final_grader,
:anonymous_instructor_annotations
]
atts.each do |att|
node.tag!(att, assignment.send(att)) if assignment.send(att) == false || !assignment.send(att).blank?
end

View File

@ -117,10 +117,14 @@ module CC::Importer::Standard
end
["turnitin_enabled", "vericite_enabled", "peer_reviews",
"automatic_peer_reviews", "anonymous_peer_reviews", "freeze_on_copy",
"grade_group_students_individually", "external_tool_new_tab", "moderated_grading",
"grade_group_students_individually", "external_tool_new_tab",
"rubric_hide_points", "rubric_hide_outcome_results", "rubric_use_for_grading",
"rubric_hide_score_total", "has_group_category", "omit_from_final_grade",
"intra_group_peer_reviews", "only_visible_to_overrides", "post_to_sis"].each do |bool_val|
"intra_group_peer_reviews", "only_visible_to_overrides", "post_to_sis",
"moderated_grading", "grader_comments_visible_to_graders",
"anonymous_grading", "graders_anonymous_to_graders",
"grader_names_visible_to_final_grader", "anonymous_instructor_annotations"
].each do |bool_val|
val = get_bool_val(meta_doc, bool_val)
assignment[bool_val] = val unless val.nil?
end
@ -134,6 +138,7 @@ module CC::Importer::Standard
end
assignment['position'] = get_int_val(meta_doc, 'position')
assignment['peer_review_count'] = get_int_val(meta_doc, 'peer_review_count')
assignment["grader_count"] = get_int_val(meta_doc, "grader_count")
if meta_doc.at_css("assignment_overrides override")
assignment[:assignment_overrides] = []
meta_doc.css("assignment_overrides override").each do |override_node|

View File

@ -173,6 +173,12 @@
<xs:element name="automatic_peer_reviews" type="xs:boolean" minOccurs="0"/>
<xs:element name="anonymous_peer_reviews" type="xs:boolean" minOccurs="0"/>
<xs:element name="moderated_grading" type="xs:boolean" minOccurs="0"/>
<xs:element name="grader_count" type="optional_integer" minOccurs="0"/>
<xs:element name="grader_comments_visible_to_graders" type="xs:boolean" minOccurs="0"/>
<xs:element name="anonymous_grading" type="xs:boolean" minOccurs="0"/>
<xs:element name="graders_anonymous_to_graders" type="xs:boolean" minOccurs="0"/>
<xs:element name="grader_names_visible_to_final_grader" type="xs:boolean" minOccurs="0"/>
<xs:element name="anonymous_instructor_annotations" type="xs:boolean" minOccurs="0"/>
<xs:element name="has_group_category" type="xs:boolean" minOccurs="0"/>
<xs:element name="group_category" type="xs:string" minOccurs="0"/>
<xs:element name="grade_group_students_individually" type="xs:boolean" minOccurs="0"/>

View File

@ -212,6 +212,27 @@ describe ContentMigration do
expect(new_assignment.only_visible_to_overrides).to be_falsey
end
it "should copy other feature-dependent assignment attributes" do
assignment_model(:course => @copy_from)
@assignment.moderated_grading = true
@assignment.grader_count = 2
@assignment.grader_comments_visible_to_graders = true
@assignment.anonymous_grading = true
@assignment.graders_anonymous_to_graders = true
@assignment.grader_names_visible_to_final_grader = true
@assignment.anonymous_instructor_annotations = true
@assignment.save!
run_course_copy
new_assignment = @copy_to.assignments.where(migration_id: mig_id(@assignment)).first
[:moderated_grading, :grader_count, :grader_comments_visible_to_graders,
:anonymous_grading, :graders_anonymous_to_graders, :grader_names_visible_to_final_grader,
:anonymous_instructor_annotations].each do |attr|
expect(new_assignment.send(attr)).to eq @assignment.send(attr)
end
end
it "shouldn't copy turnitin/vericite_enabled if it's not enabled on the copyee's account" do
assignment_model(:course => @copy_from, :points_possible => 40, :submission_types => 'file_upload', :grading_type => 'points')
@assignment.turnitin_enabled = true