replace usages of Quiz#find_or_create_submission with SubmissionManager#find_or_create_submission

fixes: CNVS-12598

  test plan:
    - create a quiz as an instructor
    - as a student
    - take quiz
    - exercise all paths by which a quiz submission is generated
    - verify that quiz submissions continue to work as before

Change-Id: I9fd71679e6c9a45686861609ff481f5f4250cca1
Reviewed-on: https://gerrit.instructure.com/33735
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Derek DeVries <ddevries@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Jason Madsen <jmadsen@instructure.com>
This commit is contained in:
Joseph Rodriguez 2014-04-22 15:41:59 -06:00 committed by Jason Madsen
parent 9afac76533
commit e0a5065086
7 changed files with 10 additions and 14 deletions

View File

@ -133,7 +133,7 @@ class Quizzes::QuizSubmissionsController < ApplicationController
def extensions
@student = @context.students.find(params[:user_id])
@submission = @quiz.find_or_create_submission(@student || @current_user, nil, 'settings_only')
@submission = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@student || @current_user, nil, 'settings_only')
if authorized_action(@submission, @current_user, :add_attempts)
@submission.extra_attempts ||= 0
@submission.extra_attempts = params[:extra_attempts].to_i if params[:extra_attempts]

View File

@ -632,14 +632,10 @@ class Quizzes::Quiz < ActiveRecord::Base
q
end
def find_or_create_submission(user, temporary=false, state=nil)
Quizzes::SubmissionManager.new(self).find_or_create_submission(user, temporary, state)
end
# Generates a submission for the specified user on this quiz, based
# on the SAVED version of the quiz. Does not consider permissions.
def generate_submission(user, preview=false)
submission = self.find_or_create_submission(user, preview)
submission = Quizzes::SubmissionManager.new(self).find_or_create_submission(user, preview)
submission.retake
submission.attempt = (submission.attempt + 1) rescue 1
user_questions = []

View File

@ -41,7 +41,7 @@ describe Quizzes::QuizSubmissionsController do
@quiz.one_question_at_a_time = true
@quiz.cant_go_back = true
@quiz.save!
@submission = @quiz.find_or_create_submission(@student)
@submission = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@student)
Quizzes::SubmissionGrader.new(@submission).grade_submission
post 'create', :course_id => @quiz.context_id, :quiz_id => @quiz.id, :question_123 => 'hi', :validation_token => @submission.validation_token
response.should be_redirect
@ -54,7 +54,7 @@ describe Quizzes::QuizSubmissionsController do
@quiz.save!
access_code_key = @quiz.access_code_key_for_user(@student)
session[access_code_key] = true
@submission = @quiz.find_or_create_submission(@student)
@submission = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@student)
post 'create', :course_id => @quiz.context_id, :quiz_id => @quiz.id, :question_123 => 'hi', :validation_token => @submission.validation_token
session.has_key?(access_code_key).should == false
end
@ -62,7 +62,7 @@ describe Quizzes::QuizSubmissionsController do
it "should reject a submission when the validation token does not match" do
student_in_course(:active_all => true)
user_session(@student)
@submission = @quiz.find_or_create_submission(@student)
@submission = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@student)
post 'create', :course_id => @quiz.context_id, :quiz_id => @quiz.id, :question_123 => 'hi', :validation_token => "xxx"
response.should be_redirect
flash[:error].should_not be_blank

View File

@ -601,7 +601,7 @@ describe Quizzes::QuizzesController do
course_quiz(true)
@quiz.locked = true
@quiz.save!
@sub = @quiz.find_or_create_submission(@user, nil, 'settings_only')
@sub = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@user, nil, 'settings_only')
@sub.manually_unlocked = true
@sub.save!
post 'show', :course_id => @course, :quiz_id => @quiz.id, :take => '1'
@ -625,7 +625,7 @@ describe Quizzes::QuizzesController do
course_quiz(true)
@quiz.time_limit = 60
@quiz.save!
@sub = @quiz.find_or_create_submission(@user, nil, 'settings_only')
@sub = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@user, nil, 'settings_only')
@sub.extra_time = 30
@sub.save!
post 'show', :course_id => @course, :quiz_id => @quiz.id, :take => '1'

View File

@ -43,7 +43,7 @@ def quiz_with_submission(complete_quiz = true)
@quiz.quiz_data = test_data
@quiz.save!
@quiz
@qsub = @quiz.find_or_create_submission(@student)
@qsub = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@student)
@qsub.quiz_data = test_data
@qsub.submission_data = complete_quiz ? [{:points=>0, :text=>"7051", :question_id=>128, :correct=>false, :answer_id=>7051}] : test_data.first
# {"context_id"=>"3", "text_after_answers"=>"", "context_type"=>"Course", "attempt"=>1, "user_id"=>"3", "controller"=>"quiz_submissions", "cnt"=>1, "course_id"=>"3", "quiz_id"=>"6", "question_text"=>"<p>true?</p>"}

View File

@ -40,7 +40,7 @@ describe "concluded/unconcluded courses" do
@assignment = @course.assignments.create!(:submission_types => 'online_quiz', :title => 'quiz assignment', :assignment_group => @group)
@quiz = @assignment.reload.quiz
@quiz.should_not be_nil
@qsub = @quiz.find_or_create_submission(@student)
@qsub = Quizzes::SubmissionManager.new(@quiz).find_or_create_submission(@student)
@qsub.quiz_data = [{:correct_comments=>"", :assessment_question_id=>nil, :incorrect_comments=>"", :question_name=>"Question 1", :points_possible=>1, :question_text=>"Which book(s) are required for this course?", :name=>"Question 1", :id=>128, :answers=>[{:weight=>0, :text=>"A", :comments=>"", :id=>1490}, {:weight=>0, :text=>"B", :comments=>"", :id=>1020}, {:weight=>0, :text=>"C", :comments=>"", :id=>7051}], :question_type=>"multiple_choice_question"}]
@qsub.submission_data = [{:points=>0, :text=>"7051", :question_id=>128, :correct=>false, :answer_id=>7051}]
@qsub.workflow_state = 'complete'

View File

@ -598,7 +598,7 @@ describe Quizzes::Quiz do
lock_at = 1.day.ago
u = User.create!(:name => "Fred Colon")
q = @course.quizzes.create!(:title => "locked yesterday", :lock_at => lock_at)
sub = q.find_or_create_submission(u, nil, 'settings_only')
sub = Quizzes::SubmissionManager.new(q).find_or_create_submission(u, nil, 'settings_only')
sub.manually_unlocked = true
sub.save!
sub2 = q.generate_submission(u)