fix import of quiz durations with time units specified
durations may be specified with a single digit unit prefix e.g. M# (minutes), H# (hours), D# (days) if no unit is specified, seconds is assumed fixes #CNVS-1283 test plan: * perform a Blackboard Vista/CE/WebCT course migration - the course should include an assessment with a time limit * verify that the imported quiz has the correct time limit Change-Id: I02c9144540eadf5a43c623a4ffeb78e22c3786e5 Reviewed-on: https://gerrit.instructure.com/15944 Tested-by: Jenkins <jenkins@instructure.com> Reviewed-by: Bracken Mosbacker <bracken@instructure.com> QA-Review: Adam Phillipps <adam@instructure.com>
This commit is contained in:
parent
e126afc762
commit
e6f6c9e705
|
@ -87,9 +87,7 @@ class AssessmentTestConverter
|
|||
@quiz[:quiz_name] = @quiz[:title]
|
||||
@quiz[:migration_id] = get_node_att(doc, 'assessmentTest', 'identifier')
|
||||
if limit = doc.at_css('timeLimits')
|
||||
limit = limit['maxTime'].to_i
|
||||
#instructure uses minutes, QTI uses seconds
|
||||
@quiz[:time_limit] = limit / 60
|
||||
@quiz[:time_limit] = AssessmentTestConverter.parse_time_limit(limit['maxTime'])
|
||||
end
|
||||
if part = doc.at_css('testPart[identifier=BaseTestPart]')
|
||||
if control = part.at_css('itemSessionControl')
|
||||
|
@ -112,6 +110,23 @@ class AssessmentTestConverter
|
|||
end
|
||||
end
|
||||
|
||||
def self.parse_time_limit(time_limit)
|
||||
limit = 0
|
||||
time_indicator = time_limit[0..0].downcase if time_limit.length > 0
|
||||
if time_indicator == 'd'
|
||||
limit = 24 * 60 * time_limit[1..-1].to_i
|
||||
elsif time_indicator == 'h'
|
||||
limit = 60 * time_limit[1..-1].to_i
|
||||
elsif time_indicator == 'm'
|
||||
limit = time_limit[1..-1].to_i
|
||||
else
|
||||
#instructure uses minutes, QTI uses seconds
|
||||
limit = time_limit.to_i / 60
|
||||
end
|
||||
|
||||
limit
|
||||
end
|
||||
|
||||
def process_section(section)
|
||||
group = nil
|
||||
questions_list = @quiz[:questions]
|
||||
|
|
21
vendor/plugins/qti_exporter/spec_canvas/lib/qti/assessment_test_converter_spec.rb
vendored
Normal file
21
vendor/plugins/qti_exporter/spec_canvas/lib/qti/assessment_test_converter_spec.rb
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
require File.expand_path(File.dirname(__FILE__) + '/../../qti_helper')
|
||||
|
||||
describe Qti::AssessmentTestConverter do
|
||||
it "should interpret duration strings that include units" do
|
||||
assess = Qti::AssessmentTestConverter
|
||||
|
||||
minutes_in_hour = 60
|
||||
minutes_in_day = 24 * minutes_in_hour
|
||||
|
||||
assess.parse_time_limit("D1").should == minutes_in_day
|
||||
assess.parse_time_limit("d2").should == 2 * minutes_in_day
|
||||
assess.parse_time_limit("H4").should == 4 * minutes_in_hour
|
||||
assess.parse_time_limit("h1").should == minutes_in_hour
|
||||
assess.parse_time_limit("M120").should == 120
|
||||
assess.parse_time_limit("m14").should == 14
|
||||
|
||||
#Canvas uses minutes, QTI uses seconds
|
||||
assess.parse_time_limit("60").should == 1
|
||||
assess.parse_time_limit("3600").should == 60
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue