delay turnitin submission by 60 seconds, fixes #7330
introduces a configurable delay when submitting to turnitin to help ensure content makes it to s3 before turnitin retrieves it test plan: 1. submit an assignment under a turnitin-enabled account 2. ensure that it gets sent to turnitin, but after a 60 second delay Change-Id: I24d813b5487869a628e37b95a15b9f2aeadb712b Reviewed-on: https://gerrit.instructure.com/8815 Tested-by: Hudson <hudson@instructure.com> Reviewed-by: Zach Wily <zach@instructure.com>
This commit is contained in:
parent
7025bb948f
commit
b234b0bd30
|
@ -249,7 +249,8 @@ class Submission < ActiveRecord::Base
|
|||
|
||||
def submit_to_turnitin_later
|
||||
if self.turnitinable? && @submit_to_turnitin
|
||||
send_later(:submit_to_turnitin)
|
||||
delay = Setting.get_cached('turnitin_submission_delay_seconds', 60.to_s).to_i
|
||||
send_at(delay.seconds.from_now, :submit_to_turnitin)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -279,77 +279,92 @@ describe Submission do
|
|||
@assignment.turnitin_settings = @assignment.turnitin_settings
|
||||
@assignment.save!
|
||||
submission_spec_model
|
||||
@submission.turnitin_data = {
|
||||
"submission_#{@submission.id}" => {
|
||||
:web_overlap => 92,
|
||||
:error => true,
|
||||
:publication_overlap => 0,
|
||||
:state => "failure",
|
||||
:object_id => "123456789",
|
||||
:student_overlap => 90,
|
||||
:similarity_score => 92
|
||||
end
|
||||
|
||||
context "submission" do
|
||||
it "should submit to turnitin after a delay" do
|
||||
@submission.submission_type = 'online_upload'
|
||||
@submission.save!
|
||||
job = Delayed::Job.find_by_tag('Submission#submit_to_turnitin')
|
||||
job.should_not be_nil
|
||||
job.run_at.should > Time.now.utc
|
||||
end
|
||||
end
|
||||
|
||||
context "report" do
|
||||
before do
|
||||
@submission.turnitin_data = {
|
||||
"submission_#{@submission.id}" => {
|
||||
:web_overlap => 92,
|
||||
:error => true,
|
||||
:publication_overlap => 0,
|
||||
:state => "failure",
|
||||
:object_id => "123456789",
|
||||
:student_overlap => 90,
|
||||
:similarity_score => 92
|
||||
}
|
||||
}
|
||||
}
|
||||
@submission.save!
|
||||
|
||||
api = Turnitin::Client.new('test_account', 'sekret')
|
||||
Turnitin::Client.expects(:new).at_least(1).returns(api)
|
||||
api.expects(:sendRequest).with(:generate_report, 1, has_entries(:oid => "123456789")).at_least(1).returns('http://foo.bar')
|
||||
end
|
||||
|
||||
it "should let teachers view the turnitin report" do
|
||||
@teacher = User.create
|
||||
@context.enroll_teacher(@teacher)
|
||||
@submission.should be_grants_right(@teacher, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @teacher).should_not be_nil
|
||||
end
|
||||
|
||||
it "should let students view the turnitin report after grading" do
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'after_grading'
|
||||
@assignment.save!
|
||||
@submission.reload
|
||||
|
||||
@submission.should_not be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should be_nil
|
||||
|
||||
@submission.score = 1
|
||||
@submission.grade_it!
|
||||
|
||||
@submission.should be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should_not be_nil
|
||||
end
|
||||
|
||||
it "should let students view the turnitin report immediately if the visibility setting allows it" do
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'after_grading'
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should_not be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should be_nil
|
||||
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'immediate'
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should_not be_nil
|
||||
end
|
||||
|
||||
it "should let students view the turnitin report after the due date if the visibility setting allows it" do
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'after_due_date'
|
||||
@assignment.due_at = Time.now + 1.day
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should_not be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should be_nil
|
||||
|
||||
@assignment.due_at = Time.now - 1.day
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should_not be_nil
|
||||
@submission.save!
|
||||
|
||||
api = Turnitin::Client.new('test_account', 'sekret')
|
||||
Turnitin::Client.expects(:new).at_least(1).returns(api)
|
||||
api.expects(:sendRequest).with(:generate_report, 1, has_entries(:oid => "123456789")).at_least(1).returns('http://foo.bar')
|
||||
end
|
||||
|
||||
it "should let teachers view the turnitin report" do
|
||||
@teacher = User.create
|
||||
@context.enroll_teacher(@teacher)
|
||||
@submission.should be_grants_right(@teacher, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @teacher).should_not be_nil
|
||||
end
|
||||
|
||||
it "should let students view the turnitin report after grading" do
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'after_grading'
|
||||
@assignment.save!
|
||||
@submission.reload
|
||||
|
||||
@submission.should_not be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should be_nil
|
||||
|
||||
@submission.score = 1
|
||||
@submission.grade_it!
|
||||
|
||||
@submission.should be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should_not be_nil
|
||||
end
|
||||
|
||||
it "should let students view the turnitin report immediately if the visibility setting allows it" do
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'after_grading'
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should_not be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should be_nil
|
||||
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'immediate'
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should_not be_nil
|
||||
end
|
||||
|
||||
it "should let students view the turnitin report after the due date if the visibility setting allows it" do
|
||||
@assignment.turnitin_settings[:originality_report_visibility] = 'after_due_date'
|
||||
@assignment.due_at = Time.now + 1.day
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should_not be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should be_nil
|
||||
|
||||
@assignment.due_at = Time.now - 1.day
|
||||
@assignment.save
|
||||
@submission.reload
|
||||
|
||||
@submission.should be_grants_right(@user, nil, :view_turnitin_report)
|
||||
@submission.turnitin_report_url("submission_#{@submission.id}", @user).should_not be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue