queue DueDateCacher for one student in AssignmentOverrideStudent

fixes GRADE-1485

test plan:
 - Ensure AssignmentOverrideStudent calls DueDateCacher for a single
   student for that assignment on create/edit/destroy.
 - Ensure that the cached due date for the student looks correct
   after create/edit/destroy

Change-Id: Id17276e5b1213d6764dfee26d23db55addf3924c
Reviewed-on: https://gerrit.instructure.com/161381
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
This commit is contained in:
Keith T. Garner 2018-08-20 14:37:34 -05:00
parent f46d9dc908
commit eae7ba4ab4
2 changed files with 4 additions and 3 deletions

View File

@ -116,6 +116,6 @@ class AssignmentOverrideStudent < ActiveRecord::Base
end
def update_cached_due_dates
DueDateCacher.recompute(assignment) if assignment.present?
DueDateCacher.recompute_users_for_course(user_id, assignment.context, [assignment]) if assignment.present?
end
end

View File

@ -77,7 +77,7 @@ describe AssignmentOverrideStudent do
end
it 'on creation, recalculates cached due dates on the assignment' do
expect(DueDateCacher).to receive(:recompute).with(@assignment)
expect(DueDateCacher).to receive(:recompute_users_for_course).with(@student.id, @assignment.context, [@assignment]).once
@assignment_override.assignment_override_students.create!(user: @student)
end
@ -87,7 +87,8 @@ describe AssignmentOverrideStudent do
# Expect DueDateCacher to be called once from AssignmentOverrideStudent after it's destroyed and another time
# after it realizes that its corresponding AssignmentOverride can also be destroyed because it now has an empty
# set of students. Hence the specific nature of this expectation.
expect(DueDateCacher).to receive(:recompute).with(@assignment).twice
expect(DueDateCacher).to receive(:recompute_users_for_course).with(@student.id, @assignment.context, [@assignment]).once
expect(DueDateCacher).to receive(:recompute).with(@assignment).once
override_student.destroy
end
end