From dbe56e523331a7bb8cc649431a43c8333b754984 Mon Sep 17 00:00:00 2001 From: James Williams Date: Fri, 2 Oct 2015 10:48:22 -0600 Subject: [PATCH] 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 QA-Review: Charles Kimball Product-Review: James Williams --- .../importers/context_module_importer.rb | 1 + lib/cc/importer/canvas/module_converter.rb | 1 + lib/cc/module_meta.rb | 1 + lib/cc/xsd/cccv1p0.xsd | 1 + .../content_migration/course_copy_spec.rb | 25 +++++++++++++++++++ 5 files changed, 29 insertions(+) diff --git a/app/models/importers/context_module_importer.rb b/app/models/importers/context_module_importer.rb index 5816420b6d7..9adc21e1f3f 100644 --- a/app/models/importers/context_module_importer.rb +++ b/app/models/importers/context_module_importer.rb @@ -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 = [] diff --git a/lib/cc/importer/canvas/module_converter.rb b/lib/cc/importer/canvas/module_converter.rb index 8c076972568..ef281a9611b 100644 --- a/lib/cc/importer/canvas/module_converter.rb +++ b/lib/cc/importer/canvas/module_converter.rb @@ -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| diff --git a/lib/cc/module_meta.rb b/lib/cc/module_meta.rb index 1fbd205d0c2..50d39c76a2a 100644 --- a/lib/cc/module_meta.rb +++ b/lib/cc/module_meta.rb @@ -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| diff --git a/lib/cc/xsd/cccv1p0.xsd b/lib/cc/xsd/cccv1p0.xsd index 5c8a2a1c9b3..f4c9b16cb3a 100644 --- a/lib/cc/xsd/cccv1p0.xsd +++ b/lib/cc/xsd/cccv1p0.xsd @@ -184,6 +184,7 @@ + diff --git a/spec/models/content_migration/course_copy_spec.rb b/spec/models/content_migration/course_copy_spec.rb index fb0eafc81dd..a0dcd69c7ba 100644 --- a/spec/models/content_migration/course_copy_spec.rb +++ b/spec/models/content_migration/course_copy_spec.rb @@ -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?