moodle2cc 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/lib/moodle2cc.rb +2 -0
  2. data/lib/moodle2cc/canvas/assessment.rb +18 -3
  3. data/lib/moodle2cc/canvas/converter.rb +4 -2
  4. data/lib/moodle2cc/canvas/course.rb +2 -4
  5. data/lib/moodle2cc/canvas/question.rb +11 -8
  6. data/lib/moodle2cc/canvas/question_bank.rb +6 -3
  7. data/lib/moodle2cc/canvas/question_group.rb +35 -0
  8. data/lib/moodle2cc/cc/converter.rb +1 -1
  9. data/lib/moodle2cc/cc/question.rb +1 -1
  10. data/lib/moodle2cc/cc/wiki.rb +1 -1
  11. data/lib/moodle2cc/logger.rb +5 -1
  12. data/lib/moodle2cc/moodle/course.rb +5 -1
  13. data/lib/moodle2cc/moodle/question.rb +1 -0
  14. data/lib/moodle2cc/moodle/section.rb +25 -3
  15. data/lib/moodle2cc/resource_factory.rb +1 -1
  16. data/lib/moodle2cc/version.rb +1 -1
  17. data/moodle2cc.gemspec +1 -0
  18. data/test/fixtures/moodle_backup/moodle.xml +20 -12
  19. data/test/fixtures/moodle_backup_random_questions/course_files/folder/test.txt +1 -0
  20. data/test/fixtures/moodle_backup_random_questions/course_files/test.txt +1 -0
  21. data/test/fixtures/moodle_backup_random_questions/moodle.xml +357 -0
  22. data/test/test_helper.rb +7 -7
  23. data/test/unit/canvas/assessment_test.rb +43 -0
  24. data/test/unit/canvas/converter_test.rb +14 -2
  25. data/test/unit/canvas/course_test.rb +7 -7
  26. data/test/unit/canvas/question_bank_test.rb +19 -0
  27. data/test/unit/canvas/question_group_test.rb +90 -0
  28. data/test/unit/canvas/question_test.rb +37 -38
  29. data/test/unit/canvas/wiki_test.rb +1 -1
  30. data/test/unit/cc/converter_test.rb +15 -3
  31. data/test/unit/cc/question_test.rb +6 -1
  32. data/test/unit/cc/wiki_test.rb +1 -1
  33. data/test/unit/moodle/mod_test.rb +2 -2
  34. data/test/unit/moodle/question_test.rb +4 -0
  35. data/test/unit/moodle/section_test.rb +25 -8
  36. data/test/unit/resource_factory_test.rb +9 -0
  37. metadata +33 -10
data/test/test_helper.rb CHANGED
@@ -1,22 +1,22 @@
1
1
  require 'zip/zipfilesystem'
2
2
 
3
3
  module TestHelper
4
- def create_moodle_backup_zip
5
- moodle_backup_path = File.expand_path("../tmp/moodle_backup.zip", __FILE__)
4
+ def create_moodle_backup_zip(backup_name='moodle_backup')
5
+ moodle_backup_path = File.expand_path("../tmp/#{backup_name}.zip", __FILE__)
6
6
  Zip::ZipFile.open(moodle_backup_path, Zip::ZipFile::CREATE) do |zipfile|
7
- zipfile.add("moodle.xml", File.expand_path("../fixtures/moodle_backup/moodle.xml", __FILE__))
7
+ zipfile.add("moodle.xml", File.expand_path("../fixtures/#{backup_name}/moodle.xml", __FILE__))
8
8
  zipfile.mkdir("course_files")
9
9
  zipfile.mkdir("course_files/folder")
10
- zipfile.add("course_files/test.txt", File.expand_path("../fixtures/moodle_backup/course_files/test.txt", __FILE__))
11
- zipfile.add("course_files/folder/test.txt", File.expand_path("../fixtures/moodle_backup/course_files/folder/test.txt", __FILE__))
10
+ zipfile.add("course_files/test.txt", File.expand_path("../fixtures/#{backup_name}/course_files/test.txt", __FILE__))
11
+ zipfile.add("course_files/folder/test.txt", File.expand_path("../fixtures/#{backup_name}/course_files/folder/test.txt", __FILE__))
12
12
  end
13
13
  moodle_backup_path
14
14
  end
15
15
 
16
- def convert_moodle_backup(format='cc')
16
+ def convert_moodle_backup(format='cc', backup_name='moodle_backup')
17
17
  raise "must be 'cc' or 'canvas'" unless ['cc', 'canvas'].include?(format)
18
18
  converter_class = format == 'cc' ? Moodle2CC::CC::Converter : Moodle2CC::Canvas::Converter
19
- @backup_path = create_moodle_backup_zip
19
+ @backup_path = create_moodle_backup_zip(backup_name)
20
20
  @backup = Moodle2CC::Moodle::Backup.read @backup_path
21
21
  @export_dir = File.expand_path("../tmp", __FILE__)
22
22
  @converter = converter_class.new @backup, @export_dir
@@ -122,6 +122,49 @@ class TestUnitCanvasAssessment < MiniTest::Unit::TestCase
122
122
  assert_equal 'survey', assessment.quiz_type
123
123
  end
124
124
 
125
+ def test_it_converts_questions
126
+ assessment = Moodle2CC::Canvas::Assessment.new @mod
127
+ assert_equal 5, assessment.questions.length
128
+ assert_kind_of Moodle2CC::Canvas::Question, assessment.questions[0]
129
+ assert_kind_of Moodle2CC::Canvas::Question, assessment.questions[1]
130
+ assert_kind_of Moodle2CC::Canvas::Question, assessment.questions[2]
131
+ assert_kind_of Moodle2CC::Canvas::Question, assessment.questions[3]
132
+ assert_kind_of Moodle2CC::Canvas::Question, assessment.questions[4]
133
+ end
134
+
135
+ def test_it_converts_question_groups
136
+ convert_moodle_backup('canvas', 'moodle_backup_random_questions')
137
+ mod = @backup.course.mods.find { |m| m.mod_type == "quiz" }
138
+ assessment = Moodle2CC::Canvas::Assessment.new mod
139
+
140
+ assert_equal 5, assessment.questions.length
141
+ assert_kind_of Moodle2CC::Canvas::QuestionGroup, assessment.questions[0]
142
+ assert_kind_of Moodle2CC::Canvas::QuestionGroup, assessment.questions[1]
143
+ assert_kind_of Moodle2CC::Canvas::Question, assessment.questions[2]
144
+ assert_kind_of Moodle2CC::Canvas::QuestionGroup, assessment.questions[3]
145
+ assert_kind_of Moodle2CC::Canvas::QuestionGroup, assessment.questions[4]
146
+
147
+ assert_equal 1, assessment.questions[0].id
148
+ assert_equal 'Group 1', assessment.questions[0].title
149
+ assert_equal 2, assessment.questions[0].selection_number
150
+ assert_equal 1, assessment.questions[0].points_per_item
151
+
152
+ assert_equal 2, assessment.questions[1].id
153
+ assert_equal 'Group 2', assessment.questions[1].title
154
+ assert_equal 1, assessment.questions[1].selection_number
155
+ assert_equal 2, assessment.questions[1].points_per_item
156
+
157
+ assert_equal 3, assessment.questions[3].id
158
+ assert_equal 'Group 3', assessment.questions[3].title
159
+ assert_equal 1, assessment.questions[3].selection_number
160
+ assert_equal 1, assessment.questions[3].points_per_item
161
+
162
+ assert_equal 4, assessment.questions[4].id
163
+ assert_equal 'Group 4', assessment.questions[4].title
164
+ assert_equal 1, assessment.questions[4].selection_number
165
+ assert_equal 1, assessment.questions[4].points_per_item
166
+ end
167
+
125
168
  def test_it_has_a_non_cc_assessments_identifier
126
169
  @mod.id = 321
127
170
  assessment = Moodle2CC::Canvas::Assessment.new @mod
@@ -113,11 +113,17 @@ class TestUnitCCConverter < MiniTest::Unit::TestCase
113
113
 
114
114
  item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[1]/xmlns:item[1]').first
115
115
  assert item
116
+ assert_equal "i421aa3e876264b528cdc0c22cf9b2124", item.attributes['identifier'].value
117
+ assert_equal "i2bbef1184ce7da2a0f6d9038cb872c28", item.attributes['identifierref'].value
118
+ assert_equal 'This is the Syllabus', item.xpath('xmlns:title').text
119
+
120
+ item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[1]/xmlns:item[2]').first
121
+ assert item
116
122
  assert_equal "i10241816e5909d8e76da003b2814c6a4", item.attributes['identifier'].value
117
123
  assert_equal "i6b162484accdf6081cea43b39219d129", item.attributes['identifierref'].value
118
124
  assert_equal 'Create a Rails site', item.xpath('xmlns:title').text
119
125
 
120
- item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[1]/xmlns:item[2]').first
126
+ item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[1]/xmlns:item[3]').first
121
127
  assert item
122
128
  assert_equal "i966437b815a49aad86a356bc8aa8f24a", item.attributes['identifier'].value
123
129
  assert_equal "i15aaccec404aa2ad557108a689bbba8f", item.attributes['identifierref'].value
@@ -125,11 +131,17 @@ class TestUnitCCConverter < MiniTest::Unit::TestCase
125
131
 
126
132
  item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[2]/xmlns:item[1]').first
127
133
  assert item
134
+ assert_equal "i61c91e0962069aa79c40a406a6c38e3e", item.attributes['identifier'].value
135
+ assert_equal "i9c32ce07701475bf3eb14257f2d6def4", item.attributes['identifierref'].value
136
+ assert_equal 'Week 1 Summary', item.xpath('xmlns:title').text
137
+
138
+ item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[2]/xmlns:item[2]').first
139
+ assert item
128
140
  assert_equal "ie8e11ad7a1b32660f6aeaf94948faa22", item.attributes['identifier'].value
129
141
  assert_equal "if7091ac80f57e45c757345555327b248", item.attributes['identifierref'].value
130
142
  assert_equal 'Announcements', item.xpath('xmlns:title').text
131
143
 
132
- item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[2]/xmlns:item[2]').first
144
+ item = xml.xpath('//xmlns:manifest/xmlns:organizations/xmlns:organization/xmlns:item/xmlns:item[2]/xmlns:item[3]').first
133
145
  assert item
134
146
  assert_equal "ifcf0624ce811c812c749c53f3c914f20", item.attributes['identifier'].value
135
147
  assert_equal "iddbfacadb16c78a584f81538cd53cc72", item.attributes['identifierref'].value
@@ -123,25 +123,25 @@ class TestUnitCanvasCourse < MiniTest::Unit::TestCase
123
123
 
124
124
  assert_equal 'iebbd12be3d1d1ba16e241599099c4795', xml.xpath('//xmlns:modules/xmlns:module').first.attributes['identifier'].value
125
125
 
126
- assert xml.xpath('//xmlns:modules/xmlns:module').count == 2
126
+ assert_equal 3, xml.xpath('//xmlns:modules/xmlns:module').count
127
127
 
128
128
  module_node = xml.xpath('//xmlns:modules/xmlns:module[1]').first
129
129
  assert_equal 'Week 0', module_node.xpath('xmlns:title').text
130
130
  assert_equal '0', module_node.xpath('xmlns:position').text
131
131
  assert_equal 'false', module_node.xpath('xmlns:require_sequential_progress').text
132
- assert_equal 2, module_node.xpath('xmlns:items').first.xpath('xmlns:item').count
132
+ assert_equal 3, module_node.xpath('xmlns:items').first.xpath('xmlns:item').count
133
133
 
134
134
  module_node = xml.xpath('//xmlns:modules/xmlns:module[2]').first
135
135
  assert_equal 'Week 1', module_node.xpath('xmlns:title').text
136
136
  assert_equal '1', module_node.xpath('xmlns:position').text
137
137
  assert_equal 'false', module_node.xpath('xmlns:require_sequential_progress').text
138
- assert_equal 8, module_node.xpath('xmlns:items').first.xpath('xmlns:item').count
139
-
140
- item_node = module_node.xpath('xmlns:items/xmlns:item[9]').first
141
- refute item_node, 'item exists for invisible mod'
138
+ assert_equal 9, module_node.xpath('xmlns:items').first.xpath('xmlns:item').count
142
139
 
143
140
  module_node = xml.xpath('//xmlns:modules/xmlns:module[3]').first
144
- refute module_node, 'module exists for invisible section'
141
+ assert_equal 'Week 3', module_node.xpath('xmlns:title').text
142
+ assert_equal '3', module_node.xpath('xmlns:position').text
143
+ assert_equal 'false', module_node.xpath('xmlns:require_sequential_progress').text
144
+ assert_equal 2, module_node.xpath('xmlns:items').first.xpath('xmlns:item').count
145
145
  end
146
146
 
147
147
  def test_it_creates_assignment_groups_xml
@@ -28,6 +28,25 @@ class TestUnitCanvasQuestionBank < MiniTest::Unit::TestCase
28
28
  assert_equal 'Default for Beginning Ruby on Rails', question_bank.title
29
29
  end
30
30
 
31
+ def test_it_converts_questions
32
+ question_bank = Moodle2CC::Canvas::QuestionBank.new @question_category
33
+ assert_equal 5, question_bank.questions.length
34
+ assert_kind_of Moodle2CC::Canvas::Question, question_bank.questions[0]
35
+ assert_kind_of Moodle2CC::Canvas::Question, question_bank.questions[1]
36
+ assert_kind_of Moodle2CC::Canvas::Question, question_bank.questions[2]
37
+ assert_kind_of Moodle2CC::Canvas::Question, question_bank.questions[3]
38
+ assert_kind_of Moodle2CC::Canvas::Question, question_bank.questions[4]
39
+ end
40
+
41
+ def test_it_does_not_convert_random_questions
42
+ convert_moodle_backup('canvas', 'moodle_backup_random_questions')
43
+ mod = @backup.course.mods.find { |m| m.mod_type == "quiz" }
44
+ question_category = @backup.course.question_categories.first
45
+ question_bank = Moodle2CC::Canvas::QuestionBank.new question_category
46
+
47
+ assert_equal 2, question_bank.questions.length
48
+ end
49
+
31
50
  def test_it_has_an_identifier
32
51
  @question_category.id = 121
33
52
  question_bank = Moodle2CC::Canvas::QuestionBank.new @question_category
@@ -0,0 +1,90 @@
1
+ require 'nokogiri'
2
+ require 'minitest/autorun'
3
+ require 'test/test_helper'
4
+ require 'moodle2cc'
5
+
6
+ class TestUnitCanvasQuestionGroup < MiniTest::Unit::TestCase
7
+ include TestHelper
8
+
9
+ def setup
10
+ convert_moodle_backup 'canvas', 'moodle_backup_random_questions'
11
+ @course = @backup.course
12
+ end
13
+
14
+ def teardown
15
+ clean_tmp_folder
16
+ end
17
+
18
+ def test_it_has_an_id
19
+ question_group = Moodle2CC::Canvas::QuestionGroup.new :id => 1
20
+ assert_equal 1, question_group.id
21
+ end
22
+
23
+ def test_it_has_an_id_that_defaults_to_1
24
+ question_group = Moodle2CC::Canvas::QuestionGroup.new
25
+ assert_equal 1, question_group.id
26
+ end
27
+
28
+ def test_it_has_a_title_from_the_id
29
+ question_group = Moodle2CC::Canvas::QuestionGroup.new :id => 1
30
+ assert_equal 'Group 1', question_group.title
31
+ end
32
+
33
+ def test_it_has_a_selection_number
34
+ question_group = Moodle2CC::Canvas::QuestionGroup.new
35
+ assert_equal 1, question_group.selection_number
36
+ end
37
+
38
+ def test_it_can_increment_the_selection_number
39
+ question_group = Moodle2CC::Canvas::QuestionGroup.new
40
+ question_group.increment_selection_number
41
+ assert_equal 2, question_group.selection_number
42
+ end
43
+
44
+ def test_it_has_points_per_item
45
+ question_group = Moodle2CC::Canvas::QuestionGroup.new :points_per_item => 2
46
+ assert_equal 2, question_group.points_per_item
47
+ end
48
+
49
+ def test_it_has_points_per_item_that_defaults_to_1
50
+ question_group = Moodle2CC::Canvas::QuestionGroup.new
51
+ assert_equal 1, question_group.points_per_item
52
+ end
53
+
54
+ def test_it_has_a_question_bank
55
+ question_category = @course.question_categories.first
56
+ question_bank = Moodle2CC::Canvas::QuestionBank.new question_category
57
+ question_group = Moodle2CC::Canvas::QuestionGroup.new :question_bank => question_bank
58
+ assert_equal question_bank, question_group.question_bank
59
+ end
60
+
61
+ def test_it_has_a_sourcebank_ref
62
+ question_category = @course.question_categories.first
63
+ question_bank = Moodle2CC::Canvas::QuestionBank.new question_category
64
+ question_group = Moodle2CC::Canvas::QuestionGroup.new :question_bank => question_bank
65
+ assert_equal question_bank.identifier, question_group.sourcebank_ref
66
+ end
67
+
68
+ def test_it_has_an_identifer_based_on_id
69
+ question_group = Moodle2CC::Canvas::QuestionGroup.new :id => 1
70
+ assert_equal 'i5432a6c714ced15aecdc0209411ecbe9', question_group.identifier
71
+ # question_group_1
72
+ end
73
+
74
+ def test_it_creates_item_xml
75
+ mod = @course.mods.find { |mod| mod.mod_type == 'quiz' }
76
+ assessment = Moodle2CC::Canvas::Assessment.new mod
77
+ question_group = assessment.questions.first
78
+ node = Builder::XmlMarkup.new
79
+ xml = Nokogiri::XML(question_group.create_item_xml(node))
80
+
81
+ assert xml.root, 'root element does not exist'
82
+ assert_equal 'section', xml.root.name
83
+ assert_equal 'Group 1', xml.root.attributes['title'].value
84
+ assert_equal 'i5432a6c714ced15aecdc0209411ecbe9', xml.root.attributes['ident'].value
85
+
86
+ assert_equal question_group.sourcebank_ref, xml.root.xpath('selection_ordering/selection/sourcebank_ref').text
87
+ assert_equal '2', xml.root.xpath('selection_ordering/selection/selection_number').text
88
+ assert_equal '1', xml.root.xpath('selection_ordering/selection/selection_extension/points_per_item').text
89
+ end
90
+ end
@@ -18,16 +18,8 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
18
18
  clean_tmp_folder
19
19
  end
20
20
 
21
- def test_it_converts_id
22
- @question.id = 989
23
- question = Moodle2CC::Canvas::Question.new @question
24
- assert_equal 989, question.id
25
- end
26
-
27
- def test_it_converts_title
28
- @question.name = "Basic Arithmetic"
29
- question = Moodle2CC::Canvas::Question.new @question
30
- assert_equal "Basic Arithmetic", question.title
21
+ def test_it_inherits_from_cc
22
+ assert Moodle2CC::Canvas::Question.ancestors.include?(Moodle2CC::CC::Question), 'does not inherit from base CC class'
31
23
  end
32
24
 
33
25
  def test_it_converts_length
@@ -128,6 +120,13 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
128
120
  assert_equal "How much is [a] + [b] ?", question.material
129
121
  end
130
122
 
123
+ def test_it_converts_markdown_text_to_html_material
124
+ @question.text = "This is **bold** and this is _italic_"
125
+ @question.format = 4 # markdown
126
+ question = Moodle2CC::Canvas::Question.new @question
127
+ assert_equal "<p>This is <strong>bold</strong> and this is <em>italic</em></p>\n", question.material
128
+ end
129
+
131
130
  def test_it_converts_material_for_multiple_dropdowns_question
132
131
  multiple_dropdowns_question!
133
132
  @question.content = "This is a rating question"
@@ -413,7 +412,7 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
413
412
 
414
413
  general_feedback = xml.root.xpath('itemfeedback[@ident="general_fb"]').first
415
414
  assert general_feedback, 'no feeback node'
416
- material = general_feedback.xpath('flow_mat/material/mattext[@texttype="text/plain"]').first
415
+ material = general_feedback.xpath('flow_mat/material/mattext[@texttype="text/html"]').first
417
416
  assert material, 'no feedback text'
418
417
  assert_equal 'This should be easy', material.text
419
418
  end
@@ -512,14 +511,14 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
512
511
 
513
512
  response = xml.root.xpath('presentation/response_lid[@ident="response_123"]').first
514
513
  assert response, 'response for first matching question does not exist'
515
- assert_equal 'Ruby on Rails is written in this language', response.xpath('material/mattext[@texttype="text/plain"]').text
514
+ assert_equal 'Ruby on Rails is written in this language', response.xpath('material/mattext[@texttype="text/html"]').text
516
515
  assert_equal 'Ruby', response.xpath('render_choice/response_label[@ident="123"]/material/mattext').text
517
516
  assert_equal 'Python', response.xpath('render_choice/response_label[@ident="234"]/material/mattext').text
518
517
  assert_equal 'CoffeeScript', response.xpath('render_choice/response_label[@ident="345"]/material/mattext').text
519
518
 
520
519
  response = xml.root.xpath('presentation/response_lid[@ident="response_345"]').first
521
520
  assert response, 'response for second matching question does not exist'
522
- assert_equal 'Files with .coffee extension use which language?', response.xpath('material/mattext[@texttype="text/plain"]').text
521
+ assert_equal 'Files with .coffee extension use which language?', response.xpath('material/mattext[@texttype="text/html"]').text
523
522
  assert_equal 'Ruby', response.xpath('render_choice/response_label[@ident="123"]/material/mattext').text
524
523
  assert_equal 'Python', response.xpath('render_choice/response_label[@ident="234"]/material/mattext').text
525
524
  assert_equal 'CoffeeScript', response.xpath('render_choice/response_label[@ident="345"]/material/mattext').text
@@ -552,10 +551,10 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
552
551
  response = xml.root.xpath('presentation/response_lid[@ident="response1"]').first
553
552
  assert response, 'response for multiple choice question does not exist'
554
553
  assert_equal 'Single', response.attributes['rcardinality'].value
555
- assert_equal 'Ruby', response.xpath('render_choice/response_label[@ident="123"]/material/mattext[@texttype="text/plain"]').text
556
- assert_equal 'CoffeeScript', response.xpath('render_choice/response_label[@ident="234"]/material/mattext[@texttype="text/plain"]').text
557
- assert_equal 'Java', response.xpath('render_choice/response_label[@ident="345"]/material/mattext[@texttype="text/plain"]').text
558
- assert_equal 'Clojure', response.xpath('render_choice/response_label[@ident="456"]/material/mattext[@texttype="text/plain"]').text
554
+ assert_equal 'Ruby', response.xpath('render_choice/response_label[@ident="123"]/material/mattext[@texttype="text/html"]').text
555
+ assert_equal 'CoffeeScript', response.xpath('render_choice/response_label[@ident="234"]/material/mattext[@texttype="text/html"]').text
556
+ assert_equal 'Java', response.xpath('render_choice/response_label[@ident="345"]/material/mattext[@texttype="text/html"]').text
557
+ assert_equal 'Clojure', response.xpath('render_choice/response_label[@ident="456"]/material/mattext[@texttype="text/html"]').text
559
558
 
560
559
  # Feedback
561
560
  feedback = xml.root.xpath('resprocessing/respcondition[@continue="Yes"]/conditionvar/varequal[@respident="response1" and text()="123"]/../..').first
@@ -578,19 +577,19 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
578
577
  display = feedback.xpath('displayfeedback[@feedbacktype="Response"][@linkrefid="456_fb"]').first
579
578
  assert display, 'display feedback does not exist for fourth answer'
580
579
 
581
- feedback = xml.root.xpath('itemfeedback[@ident="123_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
580
+ feedback = xml.root.xpath('itemfeedback[@ident="123_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
582
581
  assert feedback, 'feedback text does not exist for first answer'
583
582
  assert_equal 'Yippee!', feedback.text
584
583
 
585
- feedback = xml.root.xpath('itemfeedback[@ident="234_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
584
+ feedback = xml.root.xpath('itemfeedback[@ident="234_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
586
585
  assert feedback, 'feedback text does not exist for second answer'
587
586
  assert_equal 'Nope', feedback.text
588
587
 
589
- feedback = xml.root.xpath('itemfeedback[@ident="345_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
588
+ feedback = xml.root.xpath('itemfeedback[@ident="345_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
590
589
  assert feedback, 'feedback text does not exist for third answer'
591
590
  assert_equal 'No way', feedback.text
592
591
 
593
- feedback = xml.root.xpath('itemfeedback[@ident="456_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
592
+ feedback = xml.root.xpath('itemfeedback[@ident="456_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
594
593
  assert feedback, 'feedback text does not exist for fourth answer'
595
594
  assert_equal 'Not even close', feedback.text
596
595
 
@@ -627,18 +626,18 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
627
626
  response = xml.root.xpath('presentation/response_lid[@ident="response_response1"]').first
628
627
  assert response, 'first response for multiple dropdowns question does not exist'
629
628
  assert response.xpath('material/mattext["response1"]').first, 'material text does not exist for multiple dropdowns question first response'
630
- assert_equal '1=Almost Never', response.xpath('render_choice/response_label[@ident="11"]/material/mattext[@texttype="text/plain"]').text
631
- assert_equal '2=Sometimes', response.xpath('render_choice/response_label[@ident="12"]/material/mattext[@texttype="text/plain"]').text
632
- assert_equal '3=Always', response.xpath('render_choice/response_label[@ident="13"]/material/mattext[@texttype="text/plain"]').text
629
+ assert_equal '1=Almost Never', response.xpath('render_choice/response_label[@ident="11"]/material/mattext[@texttype="text/html"]').text
630
+ assert_equal '2=Sometimes', response.xpath('render_choice/response_label[@ident="12"]/material/mattext[@texttype="text/html"]').text
631
+ assert_equal '3=Always', response.xpath('render_choice/response_label[@ident="13"]/material/mattext[@texttype="text/html"]').text
633
632
  refute response.xpath('render_choice/response_label[4]').first, 'there should not be a response for answer text'
634
633
  refute response.xpath('render_choice/response_label[5]').first, 'there should not be a response for answer text'
635
634
 
636
635
  response = xml.root.xpath('presentation/response_lid[@ident="response_response2"]').first
637
636
  assert response, 'second response for multiple dropdowns question does not exist'
638
637
  assert response.xpath('material/mattext["response2"]').first, 'material text does not exist for multiple dropdowns question second response'
639
- assert_equal '1=Almost Never', response.xpath('render_choice/response_label[@ident="21"]/material/mattext[@texttype="text/plain"]').text
640
- assert_equal '2=Sometimes', response.xpath('render_choice/response_label[@ident="22"]/material/mattext[@texttype="text/plain"]').text
641
- assert_equal '3=Always', response.xpath('render_choice/response_label[@ident="23"]/material/mattext[@texttype="text/plain"]').text
638
+ assert_equal '1=Almost Never', response.xpath('render_choice/response_label[@ident="21"]/material/mattext[@texttype="text/html"]').text
639
+ assert_equal '2=Sometimes', response.xpath('render_choice/response_label[@ident="22"]/material/mattext[@texttype="text/html"]').text
640
+ assert_equal '3=Always', response.xpath('render_choice/response_label[@ident="23"]/material/mattext[@texttype="text/html"]').text
642
641
  refute response.xpath('render_choice/response_label[4]').first, 'there should not be a response for answer text'
643
642
  refute response.xpath('render_choice/response_label[5]').first, 'there should not be a response for answer text'
644
643
 
@@ -664,9 +663,9 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
664
663
  # Responses
665
664
  response = xml.root.xpath('presentation/response_lid[@ident="response1" and @rcardinality="Multiple"]').first
666
665
  assert response, 'response for multiple answers question does not exist'
667
- assert_equal 'Ruby', response.xpath('render_choice/response_label[@ident="1"]/material/mattext[@texttype="text/plain"]').text
668
- assert_equal 'Javascript', response.xpath('render_choice/response_label[@ident="2"]/material/mattext[@texttype="text/plain"]').text
669
- assert_equal 'Python', response.xpath('render_choice/response_label[@ident="3"]/material/mattext[@texttype="text/plain"]').text
666
+ assert_equal 'Ruby', response.xpath('render_choice/response_label[@ident="1"]/material/mattext[@texttype="text/html"]').text
667
+ assert_equal 'Javascript', response.xpath('render_choice/response_label[@ident="2"]/material/mattext[@texttype="text/html"]').text
668
+ assert_equal 'Python', response.xpath('render_choice/response_label[@ident="3"]/material/mattext[@texttype="text/html"]').text
670
669
 
671
670
  # Conditions
672
671
  condition = xml.root.xpath('resprocessing/respcondition[@continue="No"]').first
@@ -707,7 +706,7 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
707
706
  feedback = condition.xpath('displayfeedback[@feedbacktype="Response" and @linkrefid="43_fb"]').first
708
707
  assert feedback, 'displayfeedback does not exist for first answer'
709
708
 
710
- feedback = xml.root.xpath('itemfeedback[@ident="43_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
709
+ feedback = xml.root.xpath('itemfeedback[@ident="43_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
711
710
  assert feedback, 'feedback text does not exist for first answer'
712
711
  assert_equal 'Great age!', feedback.text
713
712
  end
@@ -758,13 +757,13 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
758
757
  feedback = condition.xpath('displayfeedback[@feedbacktype="Response" and @linkrefid="42_fb"]').first
759
758
  assert feedback, 'displayfeedback does not exist for third answer'
760
759
 
761
- feedback = xml.root.xpath('itemfeedback[@ident="40_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
760
+ feedback = xml.root.xpath('itemfeedback[@ident="40_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
762
761
  assert feedback, 'feedback text does not exist for first answer'
763
762
  assert_equal 'Good choice!', feedback.text
764
- feedback = xml.root.xpath('itemfeedback[@ident="41_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
763
+ feedback = xml.root.xpath('itemfeedback[@ident="41_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
765
764
  assert feedback, 'feedback text does not exist for second answer'
766
765
  assert_equal 'Not what I would have chosen...', feedback.text
767
- feedback = xml.root.xpath('itemfeedback[@ident="42_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
766
+ feedback = xml.root.xpath('itemfeedback[@ident="42_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
768
767
  assert feedback, 'feedback text does not exist for third answer'
769
768
  assert_equal "You're kidding, right?", feedback.text
770
769
  end
@@ -779,8 +778,8 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
779
778
  response = xml.root.xpath('presentation/response_lid').first
780
779
  assert_equal 'Single', response.attributes['rcardinality'].value
781
780
  assert_equal 'response1', response.attributes['ident'].value
782
- assert response.xpath('render_choice/response_label[@ident="44"]/material/mattext[@texttype="text/plain" and text()="True"]').first, 'true response choice does not exist'
783
- assert response.xpath('render_choice/response_label[@ident="45"]/material/mattext[@texttype="text/plain" and text()="False"]').first, 'false response choice does not exist'
781
+ assert response.xpath('render_choice/response_label[@ident="44"]/material/mattext[@texttype="text/html" and text()="True"]').first, 'true response choice does not exist'
782
+ assert response.xpath('render_choice/response_label[@ident="45"]/material/mattext[@texttype="text/html" and text()="False"]').first, 'false response choice does not exist'
784
783
 
785
784
  condition = xml.root.xpath('resprocessing/respcondition[@continue="No"]/conditionvar/varequal[@respident="response1" and text()="44"]/../..').first
786
785
  assert condition, 'condition does not exist for first answer'
@@ -796,10 +795,10 @@ class TestUnitCanvasQuestion < MiniTest::Unit::TestCase
796
795
  setvar = condition.xpath('setvar[@varname="SCORE" and @action="Set" and text()="0"]').first
797
796
  assert setvar, 'setvar does not exist for second answer'
798
797
 
799
- feedback = xml.root.xpath('itemfeedback[@ident="44_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
798
+ feedback = xml.root.xpath('itemfeedback[@ident="44_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
800
799
  assert feedback, 'feedback text does not exist for first answer'
801
800
  assert_equal 'Smarty pants!', feedback.text
802
- feedback = xml.root.xpath('itemfeedback[@ident="45_fb"]/flow_mat/material/mattext[@texttype="text/plain"]').first
801
+ feedback = xml.root.xpath('itemfeedback[@ident="45_fb"]/flow_mat/material/mattext[@texttype="text/html"]').first
803
802
  assert feedback, 'feedback text does not exist for second answer'
804
803
  assert_equal 'What exactly are you doing?', feedback.text
805
804
  end