add requirement_count to course copy

test plan:
* create a module with some required module items
* set it so students only need to "Complete One Item"
* copy the course
* the "Complete One Item" setting should be retained

closes #CNVS-23713

Change-Id: I7f113d34b2247c13c9984124c2364a6fece878b6
Reviewed-on: https://gerrit.instructure.com/64496
Tested-by: Jenkins
Reviewed-by: Dan Minkevitch <dan@instructure.com>
QA-Review: Charles Kimball <ckimball@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
This commit is contained in:
James Williams 2015-10-02 10:48:22 -06:00
parent c953e011ea
commit dbe56e5233
5 changed files with 29 additions and 0 deletions

View File

@ -73,6 +73,7 @@ module Importers
item.start_at = Canvas::Migration::MigratorHelper.get_utc_time_from_timestamp(hash[:start_at]) if hash[:start_at]
item.end_at = Canvas::Migration::MigratorHelper.get_utc_time_from_timestamp(hash[:end_at]) if hash[:end_at]
item.require_sequential_progress = hash[:require_sequential_progress] if hash[:require_sequential_progress]
item.requirement_count = hash[:requirement_count] if hash[:requirement_count]
if hash[:prerequisites]
preqs = []

View File

@ -33,6 +33,7 @@ module CC::Importer::Canvas
mod[:end_at] = get_time_val(r_node, 'end_at')
mod[:unlock_at] = get_time_val(r_node, 'unlock_at')
mod[:require_sequential_progress] = get_bool_val(r_node, 'require_sequential_progress')
mod[:requirement_count] = get_int_val(r_node, 'requirement_count')
mod[:items] = []
r_node.css('item').each do |item_node|

View File

@ -60,6 +60,7 @@ module CC
m_node.start_at CCHelper::ims_datetime(cm.start_at) if cm.start_at
m_node.end_at CCHelper::ims_datetime(cm.end_at) if cm.end_at
m_node.require_sequential_progress cm.require_sequential_progress.to_s unless cm.require_sequential_progress.nil?
m_node.requirement_count cm.requirement_count if cm.requirement_count
if cm.prerequisites && !cm.prerequisites.empty?
m_node.prerequisites do |pre_reqs|

View File

@ -184,6 +184,7 @@
<xs:element name="end_at" type="xs:dateTime" minOccurs="0"/>
<xs:element name="unlock_at" type="xs:dateTime" minOccurs="0"/>
<xs:element name="require_sequential_progress" type="xs:boolean" minOccurs="0"/>
<xs:element name="requirement_count" type="xs:integer" minOccurs="0"/>
<xs:element name="prerequisites" minOccurs="0">
<xs:complexType>

View File

@ -408,6 +408,31 @@ describe ContentMigration do
expect(@copy_to.syllabus_body).to eq @copy_from.syllabus_body.sub("http://derp.derp", "https://derp.derp")
end
it "should copy module settings" do
mod1 = @copy_from.context_modules.create!(:name => "some module")
tag = mod1.add_item({ :title => 'Example 1', :type => 'external_url', :url => 'http://derp.derp/something' })
mod1.completion_requirements = {tag.id => {:type => 'must_view'}}
mod1.require_sequential_progress = true
mod1.requirement_count = 1
mod1.save!
mod2 = @copy_from.context_modules.create!(:name => "some module 2")
mod2.prerequisites = "module_#{mod1.id}"
mod2.save!
run_course_copy
mod1_to = @copy_to.context_modules.where(:migration_id => mig_id(mod1)).first
tag_to = mod1_to.content_tags.first
expect(mod1_to.completion_requirements).to eq [{:id => tag_to.id, :type => 'must_view'}]
expect(mod1_to.require_sequential_progress).to be_truthy
expect(mod1_to.requirement_count).to be_truthy
mod2_to = @copy_to.context_modules.where(:migration_id => mig_id(mod2)).first
expect(mod2_to.prerequisites.count).to eq 1
expect(mod2_to.prerequisites.first[:id]).to eq mod1_to.id
end
it "should preserve media comment links" do
skip unless Qti.qti_enabled?