spec: reorganize spec to improve diffing

this is prework to help the code reivew diffing for GRADE-893

ref: GRADE-893

Change-Id: I1fe2622bc88b32332fac36b2ec839fda3518841f
Reviewed-on: https://gerrit.instructure.com/143574
Tested-by: Jenkins
Reviewed-by: Jeremy Neander <jneander@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
This commit is contained in:
Derek Bender 2018-03-14 12:00:38 -05:00
parent c683d109c6
commit e895ef4fa7
1 changed files with 433 additions and 429 deletions

View File

@ -16,7 +16,7 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
require File.expand_path(File.dirname(__FILE__) + '/../sharding_spec_helper.rb')
require_relative '../spec_helper'
describe DueDateCacher do
before(:once) do
@ -201,16 +201,19 @@ describe DueDateCacher do
end
describe "#recompute" do
before(:once) do
@cacher = DueDateCacher.new(@course, [@assignment])
submission_model(:assignment => @assignment, :user => @student)
Submission.update_all(:cached_due_date => nil)
subject(:cacher) { DueDateCacher.new(@course, [@assignment]) }
let(:submission) { submission_model(assignment: @assignment, user: @student) }
describe "cached_due_date" do
before do
Submission.update_all(cached_due_date: nil)
end
context 'without existing submissions' do
it "should create submissions for enrollments that are not overridden" do
Submission.destroy_all
expect { @cacher.recompute }.to change {
expect { cacher.recompute }.to change {
Submission.active.where(assignment_id: @assignment.id).count
}.from(0).to(1)
end
@ -218,7 +221,7 @@ describe DueDateCacher do
it "should delete submissions for enrollments that are deleted" do
@course.student_enrollments.update_all(workflow_state: 'deleted')
expect { @cacher.recompute }.to change {
expect { cacher.recompute }.to change {
Submission.active.where(assignment_id: @assignment.id).count
}.from(1).to(0)
end
@ -229,7 +232,7 @@ describe DueDateCacher do
@override.save!
Submission.destroy_all
expect { @cacher.recompute }.to change {
expect { cacher.recompute }.to change {
Submission.active.where(assignment_id: @assignment.id).count
}.from(0).to(1)
end
@ -258,7 +261,7 @@ describe DueDateCacher do
end
it "should not create another submission for enrollments that have a submission" do
expect { @cacher.recompute }.not_to change {
expect { cacher.recompute }.not_to change {
Submission.active.where(assignment_id: @assignment.id).count
}
end
@ -268,7 +271,7 @@ describe DueDateCacher do
@override.override_due_at(@assignment.due_at + 1.day)
@override.save!
expect { @cacher.recompute }.not_to change {
expect { cacher.recompute }.not_to change {
Submission.active.where(assignment_id: @assignment.id).count
}
end
@ -311,16 +314,16 @@ describe DueDateCacher do
@assignment.due_at += 1.day
@assignment.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
cacher.recompute
expect(submission.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
end
it "should set the cached_due_date to nil if the assignment has no due_at" do
@assignment.due_at = nil
@assignment.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to be_nil
cacher.recompute
expect(submission.reload.cached_due_date).to be_nil
end
it "does not update submissions for students with concluded enrollments" do
@ -346,8 +349,8 @@ describe DueDateCacher do
@override.override_due_at(@assignment.due_at - 1.day)
@override.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @override.due_at.change(sec: 0)
cacher.recompute
expect(submission.reload.cached_due_date).to eq @override.due_at.change(sec: 0)
end
it "should prefer override's due_at over assignment's nil" do
@ -357,24 +360,24 @@ describe DueDateCacher do
@assignment.due_at = nil
@assignment.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @override.due_at.change(sec: 0)
cacher.recompute
expect(submission.reload.cached_due_date).to eq @override.due_at.change(sec: 0)
end
it "should prefer override's nil over assignment's due_at" do
@override.override_due_at(nil)
@override.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @override.due_at
cacher.recompute
expect(submission.reload.cached_due_date).to eq @override.due_at
end
it "should not apply override if it doesn't override due_at" do
@override.clear_due_at_override
@override.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
cacher.recompute
expect(submission.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
end
it "does not update submissions for students with concluded enrollments" do
@ -400,18 +403,18 @@ describe DueDateCacher do
:due_at => @assignment.due_at + 1.day)
@override.assignment_override_students.create!(:user => @student2)
@submission1 = @submission
@submission1 = submission_model(:assignment => @assignment, :user => @student1)
@submission2 = submission_model(:assignment => @assignment, :user => @student2)
Submission.update_all(:cached_due_date => nil)
end
it "should apply to students in the adhoc set" do
@cacher.recompute
cacher.recompute
expect(@submission2.reload.cached_due_date).to eq @override.due_at.change(sec: 0)
end
it "should not apply to students not in the adhoc set" do
@cacher.recompute
cacher.recompute
expect(@submission1.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
end
@ -435,11 +438,11 @@ describe DueDateCacher do
:due_at => @assignment.due_at + 1.day,
:set => @course_section)
@submission1 = @submission
@submission1 = submission_model(:assignment => @assignment, :user => @student1)
@submission2 = submission_model(:assignment => @assignment, :user => @student2)
Submission.update_all(:cached_due_date => nil)
@cacher.recompute
cacher.recompute
end
it "should apply to students in that section" do
@ -479,23 +482,23 @@ describe DueDateCacher do
:due_at => @assignment.due_at + 1.day,
:set => @group)
@submission1 = @submission
@submission1 = submission_model(:assignment => @assignment, :user => @student1)
@submission2 = submission_model(:assignment => @assignment, :user => @student2)
Submission.update_all(:cached_due_date => nil)
end
it "should apply to students in that group" do
@cacher.recompute
cacher.recompute
expect(@submission2.reload.cached_due_date).to eq @override.due_at.change(sec: 0)
end
it "should not apply to students not in the group" do
@cacher.recompute
cacher.recompute
expect(@submission1.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
end
it "should not apply to non-active memberships in that group" do
@cacher.recompute
cacher.recompute
@group.add_user(@student1, 'deleted')
expect(@submission1.reload.cached_due_date).to eq @assignment.due_at.change(sec: 0)
end
@ -527,32 +530,32 @@ describe DueDateCacher do
@override1.override_due_at(@assignment.due_at + 2.days)
@override1.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @override1.due_at.change(sec: 0)
cacher.recompute
expect(submission.reload.cached_due_date).to eq @override1.due_at.change(sec: 0)
end
it "should prefer second override's due_at if latest" do
@override2.override_due_at(@assignment.due_at + 2.days)
@override2.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to eq @override2.due_at.change(sec: 0)
cacher.recompute
expect(submission.reload.cached_due_date).to eq @override2.due_at.change(sec: 0)
end
it "should be nil if first override's nil" do
@override1.override_due_at(nil)
@override1.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to be_nil
cacher.recompute
expect(submission.reload.cached_due_date).to be_nil
end
it "should be nil if second override's nil" do
@override2.override_due_at(nil)
@override2.save!
@cacher.recompute
expect(@submission.reload.cached_due_date).to be_nil
cacher.recompute
expect(submission.reload.cached_due_date).to be_nil
end
end
@ -577,7 +580,7 @@ describe DueDateCacher do
:due_at => @assignment.due_at + 2.days,
:set => @course_section)
@submission1 = @submission
@submission1 = submission_model(:assignment => @assignment, :user => @student1)
@submission2 = submission_model(:assignment => @assignment, :user => @student2)
@submission3 = submission_model(:assignment => @assignment, :user => @student3)
Submission.update_all(:cached_due_date => nil)
@ -587,7 +590,7 @@ describe DueDateCacher do
@override1.override_due_at(@assignment.due_at + 1.day)
@override1.save!
@cacher.recompute
cacher.recompute
expect(@submission1.reload.cached_due_date).to eq @override1.due_at.change(sec: 0)
end
@ -595,7 +598,7 @@ describe DueDateCacher do
@override2.override_due_at(@assignment.due_at + 1.day)
@override2.save!
@cacher.recompute
cacher.recompute
expect(@submission2.reload.cached_due_date).to eq @override2.due_at.change(sec: 0)
end
@ -603,7 +606,7 @@ describe DueDateCacher do
@override1.override_due_at(@assignment.due_at + 1.day)
@override1.save!
@cacher.recompute
cacher.recompute
expect(@submission2.reload.cached_due_date).to eq @override2.due_at.change(sec: 0)
end
end
@ -618,7 +621,7 @@ describe DueDateCacher do
:due_at => @assignment1.due_at + 1.day)
@override.assignment_override_students.create!(:user => @student)
@submission1 = @submission
@submission1 = submission_model(:assignment => @assignment1, :user => @student)
@submission2 = submission_model(:assignment => @assignment2, :user => @student)
Submission.update_all(:cached_due_date => nil)
@ -637,7 +640,7 @@ describe DueDateCacher do
it "kicks off a LatePolicyApplicator job on completion when called with a single assignment" do
expect(LatePolicyApplicator).to receive(:for_assignment).with(@assignment)
@cacher.recompute
cacher.recompute
end
it "does not kick off a LatePolicyApplicator job when called with multiple assignments" do
@ -679,7 +682,7 @@ describe DueDateCacher do
@student_2, @student_3, @student_4 = n_students_in_course(3, course: @course)
# The n_students_in_course helper creates the enrollments in a
# way that appear to skip callbacks
@cacher.recompute
cacher.recompute
end
it "leaves other users submissions alone on enrollment destroy" do
@ -709,4 +712,5 @@ describe DueDateCacher do
end
end
end
end
end