preserve excused status when grading groups
This change prevents accidentally grading students who were excused on a group assignment Test plan: * make a group assignment * excuse one student * grade a different student * all students should be graded, except the excused student (who should still be excused) Change-Id: I2f6fa33f839fcda220df3502dd9f271c762f8bbf Reviewed-on: https://gerrit.instructure.com/56154 Tested-by: Jenkins Reviewed-by: Josh Simpson <jsimpson@instructure.com> QA-Review: Adrian Foong <afoong@instructure.com> Product-Review: Cameron Matheson <cameron@instructure.com>
This commit is contained in:
parent
2ac2affe34
commit
d9001e963c
|
@ -1001,6 +1001,7 @@ class Assignment < ActiveRecord::Base
|
|||
if student == original_student || grade_group_students
|
||||
previously_graded = submission.grade.present?
|
||||
next if previously_graded && dont_overwrite_grade
|
||||
next if student != original_student && submission.excused?
|
||||
|
||||
did_grade = false
|
||||
submission.attributes = opts
|
||||
|
|
|
@ -524,22 +524,34 @@ describe Assignment do
|
|||
expect(submission).to be_excused
|
||||
end
|
||||
|
||||
it "doesn't mark everyone in the group excused" do
|
||||
student1, student2 = n_students_in_course(2)
|
||||
gc = @course.group_categories.create! name: "asdf"
|
||||
group = gc.groups.create! name: "zxcv", context: @course
|
||||
[student1, student2].each { |u|
|
||||
group.group_memberships.create! user: u, workflow_state: "accepted"
|
||||
}
|
||||
@assignment.update_attribute :group_category, gc
|
||||
student_in_course active_all: true
|
||||
sub1, sub2 = @assignment.grade_student(student1,
|
||||
excuse: true,
|
||||
comment: "...",
|
||||
group_comment: true)
|
||||
expect(sub1).to be_excused
|
||||
expect(sub1.user).to eq student1
|
||||
expect(sub2).to_not be_excused
|
||||
context "group assignments" do
|
||||
before :once do
|
||||
@student1, @student2 = n_students_in_course(2)
|
||||
gc = @course.group_categories.create! name: "asdf"
|
||||
group = gc.groups.create! name: "zxcv", context: @course
|
||||
[@student1, @student2].each { |u|
|
||||
group.group_memberships.create! user: u, workflow_state: "accepted"
|
||||
}
|
||||
@assignment.update_attribute :group_category, gc
|
||||
end
|
||||
|
||||
it "doesn't mark everyone in the group excused" do
|
||||
sub1, sub2 = @assignment.grade_student(@student1,
|
||||
excuse: true,
|
||||
comment: "...",
|
||||
group_comment: true)
|
||||
expect(sub1).to be_excused
|
||||
expect(sub1.user).to eq @student1
|
||||
expect(sub2).to_not be_excused
|
||||
end
|
||||
|
||||
it "doesn't overwrite excused assignments" do
|
||||
sub1 = @assignment.grade_student(@student1, excuse: true).first
|
||||
expect(sub1).to be_excused
|
||||
|
||||
sub2 = @assignment.grade_student(@student2, grade: 10).first
|
||||
expect(sub1.reload).to be_excused
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue