cleanup(basic_lti): Normalize Quizzes Next LTI Usage
flag = none Fixes: QUIZ-7378 NOTE: g/226189 must be deployed to prod first TEST PLAN: - Create Quizzes Next Assignment - Create 1 true / false question - Take quiz as student - Verify grade and submitted_at date are sent back correctly Change-Id: I52110794bbd3ab316f2dce490869ab447e782ae3 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/226551 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> QA-Review: David Tan <dtan@instructure.com> Reviewed-by: Jared Crystal <jcrystal@instructure.com> Product-Review: Kevin Dougherty <jdougherty@instructure.com>
This commit is contained in:
parent
2d11c63b32
commit
aea6099d40
|
@ -47,10 +47,8 @@ module BasicLTI
|
|||
end
|
||||
|
||||
def submitted_at_date
|
||||
# we store submitted_at date in the resultData node because
|
||||
# the IMS LTI gem does not have a method to put it elsewhere
|
||||
return nil if submitted_at_date_text.blank?
|
||||
@_submitted_at_date ||= Time.zone.parse(submitted_at_date_text)
|
||||
submitted_at = submission_submitted_at
|
||||
submitted_at.present? ? Time.zone.parse(submitted_at) : nil
|
||||
end
|
||||
|
||||
def result_data_text_json
|
||||
|
@ -61,12 +59,6 @@ module BasicLTI
|
|||
nil
|
||||
end
|
||||
|
||||
def submitted_at_date_text
|
||||
json = result_data_text_json
|
||||
return result_data_text if json.blank?
|
||||
json[:submitted_at]
|
||||
end
|
||||
|
||||
def submission_reopened?
|
||||
json = result_data_text_json
|
||||
return false if json.blank?
|
||||
|
|
|
@ -51,6 +51,8 @@ describe BasicLTI::QuizzesNextLtiResponse do
|
|||
|
||||
let(:timestamp) { 1.day.ago.iso8601(3) }
|
||||
|
||||
let(:text) { "" }
|
||||
|
||||
let(:xml) do
|
||||
request_xml(source_id, launch_url, "0.12")
|
||||
end
|
||||
|
@ -84,11 +86,14 @@ describe BasicLTI::QuizzesNextLtiResponse do
|
|||
<textString>#{grade}</textString>
|
||||
</resultScore>
|
||||
<resultData>
|
||||
<text>#{timestamp}</text>
|
||||
<text>#{text}</text>
|
||||
<url>#{launch_url}</url>
|
||||
</resultData>
|
||||
</result>
|
||||
</resultRecord>
|
||||
<submissionDetails>
|
||||
<submittedAt>#{timestamp}</submittedAt>
|
||||
</submissionDetails>
|
||||
</replaceResultRequest>
|
||||
</imsx_POXBody>
|
||||
</imsx_POXEnvelopeRequest>
|
||||
|
@ -146,7 +151,7 @@ describe BasicLTI::QuizzesNextLtiResponse do
|
|||
expect(request.body).to eq '<replaceResultResponse />'
|
||||
end
|
||||
|
||||
it "reads 'submitted_at' from resultData" do
|
||||
it "reads 'submitted_at' from submissionDetails" do
|
||||
BasicLTI::BasicOutcomes.process_request(tool, xml)
|
||||
submission = assignment.submissions.where(user_id: @user.id).first
|
||||
expect(submission.submitted_at).to eq timestamp
|
||||
|
@ -248,10 +253,10 @@ describe BasicLTI::QuizzesNextLtiResponse do
|
|||
allow(BasicLTI::QuizzesNextVersionedSubmission).to receive(:new).and_return(quiz_lti_submission)
|
||||
end
|
||||
|
||||
context 'when json passed includes only submitted_at' do
|
||||
let(:timestamp) { "{ \"submitted_at\" : \"#{1.day.ago.iso8601(3)}\" }" }
|
||||
context 'when submissionDetails passed includes submitted_at' do
|
||||
let(:timestamp) { 1.day.ago.iso8601(3) }
|
||||
|
||||
it "reads 'submitted_at' from resultData" do
|
||||
it "reads 'submitted_at' from submissionDetails" do
|
||||
BasicLTI::BasicOutcomes.process_request(tool, xml)
|
||||
submission = assignment.submissions.where(user_id: @user.id).first
|
||||
expect(submission.submitted_at).to eq timestamp
|
||||
|
@ -263,19 +268,21 @@ describe BasicLTI::QuizzesNextLtiResponse do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when json passed includes submitted_at and reopened (true)' do
|
||||
let(:timestamp) { "{ \"submitted_at\" : \"#{1.day.ago.iso8601(3)}\", \"reopened\" : true }" }
|
||||
context 'when submissionDetails includes submitted_at and json includes reopened (true)' do
|
||||
let(:text) { "{ \"reopened\" : true }" }
|
||||
let(:timestamp) { 1.day.ago.iso8601(3) }
|
||||
|
||||
it "reads 'submitted_at' from resultData" do
|
||||
it "reads 'submitted_at' from submissionDetails" do
|
||||
expect(quiz_lti_submission).to receive(:revert_history).with(launch_url, -tool.id).and_call_original
|
||||
BasicLTI::BasicOutcomes.process_request(tool, xml)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when json passed includes submitted_at and reopened (false)' do
|
||||
let(:timestamp) { "{ \"submitted_at\" : \"#{1.day.ago.iso8601(3)}\", \"reopened\" : false }" }
|
||||
let(:text) { "{ \"reopened\" : false }" }
|
||||
let(:timestamp) { 1.day.ago.iso8601(3) }
|
||||
|
||||
it "reads 'submitted_at' from resultData" do
|
||||
it "reads 'submitted_at' from submissionDetails" do
|
||||
expect(quiz_lti_submission).not_to receive(:revert_history)
|
||||
BasicLTI::BasicOutcomes.process_request(tool, xml)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue