moodle2cc 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog +37 -29
  3. data/lib/moodle2cc.rb +2 -0
  4. data/lib/moodle2cc/canvas_cc/assignment_writer.rb +2 -1
  5. data/lib/moodle2cc/canvas_cc/models/assessment.rb +14 -4
  6. data/lib/moodle2cc/canvas_cc/models/assignment.rb +1 -1
  7. data/lib/moodle2cc/canvas_cc/models/course.rb +7 -1
  8. data/lib/moodle2cc/canvas_cc/models/page.rb +5 -1
  9. data/lib/moodle2cc/canvas_cc/models/question.rb +3 -3
  10. data/lib/moodle2cc/canvas_cc/multiple_answers_question_writer.rb +40 -0
  11. data/lib/moodle2cc/canvas_cc/question_writer.rb +1 -0
  12. data/lib/moodle2cc/moodle2/extractor.rb +23 -0
  13. data/lib/moodle2cc/moodle2/models.rb +5 -1
  14. data/lib/moodle2cc/moodle2/models/choice.rb +12 -0
  15. data/lib/moodle2cc/moodle2/models/course.rb +8 -3
  16. data/lib/moodle2cc/moodle2/models/feedback.rb +15 -0
  17. data/lib/moodle2cc/moodle2/models/label.rb +66 -0
  18. data/lib/moodle2cc/moodle2/models/questionnaire.rb +19 -0
  19. data/lib/moodle2cc/moodle2/parsers.rb +3 -0
  20. data/lib/moodle2cc/moodle2/parsers/choice_parser.rb +52 -0
  21. data/lib/moodle2cc/moodle2/parsers/course_parser.rb +2 -0
  22. data/lib/moodle2cc/moodle2/parsers/feedback_parser.rb +54 -0
  23. data/lib/moodle2cc/moodle2/parsers/questionnaire_parser.rb +58 -0
  24. data/lib/moodle2cc/moodle2converter/assessment_converter.rb +37 -1
  25. data/lib/moodle2cc/moodle2converter/assignment_converter.rb +1 -1
  26. data/lib/moodle2cc/moodle2converter/book_converter.rb +1 -0
  27. data/lib/moodle2cc/moodle2converter/converter_helper.rb +7 -1
  28. data/lib/moodle2cc/moodle2converter/feedback_converter.rb +70 -0
  29. data/lib/moodle2cc/moodle2converter/folder_converter.rb +2 -1
  30. data/lib/moodle2cc/moodle2converter/glossary_converter.rb +3 -3
  31. data/lib/moodle2cc/moodle2converter/label_converter.rb +39 -0
  32. data/lib/moodle2cc/moodle2converter/migrator.rb +17 -3
  33. data/lib/moodle2cc/moodle2converter/question_converters/question_converter.rb +4 -1
  34. data/lib/moodle2cc/moodle2converter/questionnaire_converter.rb +58 -0
  35. data/lib/moodle2cc/moodle2converter/section_converter.rb +4 -3
  36. data/lib/moodle2cc/version.rb +1 -1
  37. data/spec/moodle2cc/canvas_cc/assignment_writer_spec.rb +2 -0
  38. data/spec/moodle2cc/canvas_cc/models/assessment_spec.rb +25 -18
  39. data/spec/moodle2cc/canvas_cc/multiple_answers_question_writer_spec.rb +47 -0
  40. data/spec/moodle2cc/moodle2/extractor_spec.rb +24 -0
  41. data/spec/moodle2cc/moodle2/models/label_spec.rb +71 -0
  42. data/spec/moodle2cc/moodle2/parsers/choice_parser_spec.rb +32 -0
  43. data/spec/moodle2cc/moodle2/parsers/course_parser_spec.rb +1 -0
  44. data/spec/moodle2cc/moodle2/parsers/feedback_parser_spec.rb +31 -0
  45. data/spec/moodle2cc/moodle2/parsers/questionnaire_parser_spec.rb +32 -0
  46. data/spec/moodle2cc/moodle2converter/assessment_converter_spec.rb +158 -3
  47. data/spec/moodle2cc/moodle2converter/converter_helper_spec.rb +24 -0
  48. data/spec/moodle2cc/moodle2converter/folder_converter_spec.rb +2 -0
  49. data/spec/moodle2cc/moodle2converter/glossary_converter_spec.rb +2 -3
  50. data/spec/moodle2cc/moodle2converter/label_converter_spec.rb +86 -0
  51. data/spec/moodle2cc/moodle2converter/migrator_spec.rb +2 -0
  52. data/spec/moodle2cc/moodle2converter/question_bank_converter_spec.rb +2 -2
  53. data/spec/moodle2cc/moodle2converter/question_converters/calculated_converter_spec.rb +1 -1
  54. data/spec/moodle2cc/moodle2converter/question_converters/matching_converter_spec.rb +1 -1
  55. data/spec/moodle2cc/moodle2converter/question_converters/multiple_blanks_converter_spec.rb +1 -1
  56. data/spec/moodle2cc/moodle2converter/question_converters/numerical_converter_spec.rb +1 -1
  57. data/spec/moodle2cc/moodle2converter/question_converters/question_converter_spec.rb +1 -1
  58. data/spec/moodle2cc/moodle2converter/question_converters/true_false_converter_spec.rb +1 -1
  59. data/spec/moodle2cc/moodle2converter/section_converter_spec.rb +7 -22
  60. data/test/fixtures/moodle2/backup/activities/choice_56547/calendar.xml +3 -0
  61. data/test/fixtures/moodle2/backup/activities/choice_56547/choice.xml +32 -0
  62. data/test/fixtures/moodle2/backup/activities/choice_56547/comments.xml +3 -0
  63. data/test/fixtures/moodle2/backup/activities/choice_56547/completion.xml +3 -0
  64. data/test/fixtures/moodle2/backup/activities/choice_56547/filters.xml +7 -0
  65. data/test/fixtures/moodle2/backup/activities/choice_56547/grades.xml +7 -0
  66. data/test/fixtures/moodle2/backup/activities/choice_56547/inforef.xml +3 -0
  67. data/test/fixtures/moodle2/backup/activities/choice_56547/module.xml +28 -0
  68. data/test/fixtures/moodle2/backup/activities/choice_56547/roles.xml +7 -0
  69. data/test/fixtures/moodle2/backup/activities/feedback_58588/feedback.xml +147 -0
  70. data/test/fixtures/moodle2/backup/activities/feedback_58588/filters.xml +7 -0
  71. data/test/fixtures/moodle2/backup/activities/feedback_58588/grades.xml +7 -0
  72. data/test/fixtures/moodle2/backup/activities/feedback_58588/inforef.xml +3 -0
  73. data/test/fixtures/moodle2/backup/activities/feedback_58588/module.xml +28 -0
  74. data/test/fixtures/moodle2/backup/activities/feedback_58588/roles.xml +7 -0
  75. data/test/fixtures/moodle2/backup/moodle_backup.xml +14 -0
  76. metadata +52 -2
@@ -12,6 +12,7 @@ module Moodle2CC::Moodle2::Parsers
12
12
  expect(course.startdate).to eq(Time.parse('Sat, 15 Feb 2014 00:00:00 GMT'))
13
13
  expect(course.summary).to eq('<p>This is my course summary</p>')
14
14
  expect(course.course_id).to eq('2')
15
+ expect(course.show_grades).to eq true
15
16
  end
16
17
 
17
18
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Moodle2CC::Moodle2::Parsers::FeedbackParser do
4
+ subject { Moodle2CC::Moodle2::Parsers::FeedbackParser.new(fixture_path(File.join('moodle2', 'backup'))) }
5
+
6
+ it 'should parse a feedback activity' do
7
+ feedbacks = subject.parse
8
+ expect(feedbacks.count).to eq 1
9
+ feedback = feedbacks.first
10
+
11
+ expect(feedback.id).to eq '7'
12
+
13
+ expect(feedback.module_id).to eq '58588'
14
+ expect(feedback.name).to eq 'feedback name'
15
+ expect(feedback.intro).to eq '<p>feedback description</p>'
16
+ expect(feedback.intro_format).to eq '1'
17
+ expect(feedback.time_close).to eq '0'
18
+ expect(feedback.time_open).to eq '0'
19
+ expect(feedback.time_modified).to eq '1397566320'
20
+
21
+ expect(feedback.items.count).to eq 9
22
+ item = feedback.items.last
23
+ expect(item.id).to eq '131'
24
+ expect(item.name).to eq 'short text question'
25
+ expect(item.label).to eq 'shorttextlabel'
26
+ expect(item.position).to eq '9'
27
+ expect(item.type).to eq 'textfield'
28
+ expect(item.presentation).to eq '30|5'
29
+ end
30
+
31
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Moodle2CC::Moodle2::Parsers::QuestionnaireParser do
4
+ subject { Moodle2CC::Moodle2::Parsers::QuestionnaireParser.new(fixture_path(File.join('moodle2', 'backup'))) }
5
+
6
+ it 'should parse a questionnaire activity' do
7
+ questionnaires = subject.parse
8
+ expect(questionnaires.count).to eq 1
9
+ questionnaire = questionnaires.first
10
+
11
+ expect(questionnaire.id).to eq '1'
12
+
13
+ expect(questionnaire.module_id).to eq '9'
14
+ expect(questionnaire.name).to eq 'Questionnaire Name'
15
+ expect(questionnaire.intro).to eq '<p>Sumary</p>'
16
+ expect(questionnaire.intro_format).to eq '1'
17
+ expect(questionnaire.open_date).to eq '0'
18
+ expect(questionnaire.close_date).to eq '0'
19
+ expect(questionnaire.time_modified).to eq '1395073600'
20
+
21
+ expect(questionnaire.questions.count).to eq 10
22
+ question = questionnaire.questions.first
23
+ expect(question.id).to eq '1'
24
+ expect(question.name).to eq 'Checkboxes Quesiton'
25
+ expect(question.position).to eq '1'
26
+ expect(question.type_id).to eq '5'
27
+
28
+ expect(question.choices.count).to eq 3
29
+ expect(question.choices.first).to eq ({:id => '1', :content => 'possible answer 1'})
30
+ end
31
+
32
+ end
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Moodle2CC::Moodle2Converter::AssessmentConverter do
4
- let(:moodle_quiz) {Moodle2CC::Moodle2::Models::Quizzes::Quiz.new}
5
4
 
6
5
  it 'converts a moodle2 quiz to a canvas assessment' do
6
+ moodle_quiz = Moodle2CC::Moodle2::Models::Quizzes::Quiz.new
7
7
  moodle_quiz.id = 'quiz id'
8
8
  moodle_quiz.name = 'Quiz naem'
9
9
  moodle_quiz.intro = '<p> stuff </p>'
@@ -19,7 +19,7 @@ describe Moodle2CC::Moodle2Converter::AssessmentConverter do
19
19
  moodle_quiz.time_limit = "100"
20
20
  moodle_quiz.visible = false
21
21
 
22
- canvas_assessment = subject.convert(moodle_quiz)
22
+ canvas_assessment = subject.convert_quiz(moodle_quiz)
23
23
 
24
24
  expect(canvas_assessment.identifier).to eq 'm2d1dcd9630366a2c923c30734423c3fe8_assessment'
25
25
  expect(canvas_assessment.title).to eq moodle_quiz.name
@@ -41,9 +41,164 @@ describe Moodle2CC::Moodle2Converter::AssessmentConverter do
41
41
  moodle_quiz.attempts_number = 0 # Infinite attempts
42
42
  moodle_quiz.grade_method = 4
43
43
 
44
- canvas_assessment2 = subject.convert(moodle_quiz)
44
+ canvas_assessment2 = subject.convert_quiz(moodle_quiz)
45
45
  expect(canvas_assessment2.allowed_attempts).to eq -1
46
46
  expect(canvas_assessment2.scoring_policy).to eq 'keep_latest'
47
47
  end
48
48
 
49
+ it 'converts a moodle2 choice to a canvas assessment' do
50
+ moodle_choice = Moodle2CC::Moodle2::Models::Choice.new
51
+ moodle_choice.id = 'choice_id'
52
+ moodle_choice.name = "i'm an silly choice"
53
+ moodle_choice.intro = 'which of these arbitrary options do you like best?'
54
+
55
+ moodle_choice.visible = false
56
+ moodle_choice.time_open = Time.parse('Sat, 08 Feb 2014 16:00:00 GMT').to_i.to_s
57
+ moodle_choice.time_close = Time.parse('Sat, 08 Feb 2014 18:00:00 GMT').to_i.to_s
58
+ moodle_choice.completion_submit = '1'
59
+
60
+ moodle_choice.options = ['Option 1', 'Option 2', 'Option 3']
61
+
62
+ canvas_assessment = subject.convert_choice(moodle_choice)
63
+
64
+ expect(canvas_assessment.identifier).to eq 'm2428bb064a60ddb92239e9c818fbf33ff_choice_assessment'
65
+ expect(canvas_assessment.title).to eq moodle_choice.name
66
+ expect(canvas_assessment.description).to eq ''
67
+
68
+ expect(canvas_assessment.unlock_at).to eq Time.parse('Sat, 08 Feb 2014 16:00:00 GMT')
69
+ expect(canvas_assessment.lock_at).to eq Time.parse('Sat, 08 Feb 2014 18:00:00 GMT')
70
+ expect(canvas_assessment.allowed_attempts).to eq 1
71
+ expect(canvas_assessment.scoring_policy).to eq 'keep_latest'
72
+ expect(canvas_assessment.quiz_type).to eq 'survey'
73
+ expect(canvas_assessment.workflow_state).to eq Moodle2CC::CanvasCC::Models::WorkflowState::UNPUBLISHED
74
+
75
+ expect(canvas_assessment.items.count).to eq 1
76
+ question = canvas_assessment.items.first
77
+
78
+ expect(question.question_type).to eq 'multiple_choice_question'
79
+ expect(question.material).to eq moodle_choice.intro
80
+ expect(question.answers.map(&:answer_text)).to eq moodle_choice.options
81
+ end
82
+
83
+ it 'converts a moodle2 questionnaire to a canvas assessment' do
84
+ moodle_questionnaire = Moodle2CC::Moodle2::Models::Questionnaire.new
85
+ moodle_questionnaire.id = 'questionnaire_id'
86
+ moodle_questionnaire.name = "i'm an silly questionnaire"
87
+ moodle_questionnaire.intro = 'i should be an ungraderded survey'
88
+
89
+ moodle_questionnaire.visible = false
90
+ moodle_questionnaire.open_date = Time.parse('Sat, 08 Feb 2014 16:00:00 GMT').to_i.to_s
91
+ moodle_questionnaire.close_date = Time.parse('Sat, 08 Feb 2014 18:00:00 GMT').to_i.to_s
92
+
93
+ question1 = Moodle2CC::Moodle2::Models::Questionnaire::Question.new
94
+ question1.id = '2'
95
+ question1.name = 'q name'
96
+ question1.content = 'quest 1'
97
+ question1.type_id = '2'
98
+
99
+ question2 = Moodle2CC::Moodle2::Models::Questionnaire::Question.new
100
+ question2.id = '3'
101
+ question2.name = 'q name 2'
102
+ question2.content = 'question2 text'
103
+ question2.type_id = '8'
104
+ question2.choices = [{:id => '4', :content => 'choice3'}, {:id => '5', :content => 'choice4'}]
105
+
106
+ moodle_questionnaire.questions = [question1, question2]
107
+
108
+ canvas_assessment = subject.convert_questionnaire(moodle_questionnaire)
109
+
110
+ expect(canvas_assessment.identifier).to eq 'm2a530129147e6ee3df09cab63c6ebcb2e_questionnaire_assessment'
111
+ expect(canvas_assessment.title).to eq moodle_questionnaire.name
112
+ expect(canvas_assessment.description).to eq moodle_questionnaire.intro
113
+
114
+ expect(canvas_assessment.unlock_at).to eq Time.parse('Sat, 08 Feb 2014 16:00:00 GMT')
115
+ expect(canvas_assessment.lock_at).to eq Time.parse('Sat, 08 Feb 2014 18:00:00 GMT')
116
+ expect(canvas_assessment.scoring_policy).to eq 'keep_latest'
117
+ expect(canvas_assessment.quiz_type).to eq 'survey'
118
+ expect(canvas_assessment.workflow_state).to eq Moodle2CC::CanvasCC::Models::WorkflowState::UNPUBLISHED
119
+
120
+ expect(canvas_assessment.items.count).to eq 2
121
+
122
+ canvas_question1 = canvas_assessment.items[0]
123
+ expect(canvas_question1.question_type).to eq 'essay_question'
124
+ expect(canvas_question1.material).to eq question1.content
125
+ expect(canvas_question1.title).to eq question1.name
126
+ expect(canvas_question1.answers).to eq []
127
+
128
+ canvas_question2 = canvas_assessment.items[1]
129
+ expect(canvas_question2.question_type).to eq 'multiple_choice_question'
130
+ expect(canvas_question2.material).to eq question2.content
131
+ expect(canvas_question2.title).to eq question2.name
132
+ expect(canvas_question2.answers.count).to eq 2
133
+
134
+ expect(canvas_question2.answers.map(&:id)).to eq (question2.choices.map{|c| c[:id]})
135
+ expect(canvas_question2.answers.map(&:answer_text)).to eq (question2.choices.map{|c| c[:content]})
136
+ end
137
+
138
+ it "should convert a moodle2 feedback activity to an ungraded assessment" do
139
+ moodle_feedback = Moodle2CC::Moodle2::Models::Feedback.new
140
+ moodle_feedback.id = 'feedback_id'
141
+ moodle_feedback.name = "i'm an silly feedback"
142
+ moodle_feedback.intro = 'i should be an ungraderded survey'
143
+
144
+ moodle_feedback.visible = false
145
+ moodle_feedback.time_open = Time.parse('Sat, 08 Feb 2014 16:00:00 GMT').to_i.to_s
146
+ moodle_feedback.time_close = Time.parse('Sat, 08 Feb 2014 18:00:00 GMT').to_i.to_s
147
+
148
+ question1 = Moodle2CC::Moodle2::Models::Feedback::Question.new
149
+ question1.id = '2'
150
+ question1.name = 'actualy question'
151
+ question1.label = 'q name'
152
+ question1.type = 'multichoice'
153
+ question1.presentation = 'r>>>>>Option 1\n|Option 2\n|Option 3'
154
+
155
+ question2 = Moodle2CC::Moodle2::Models::Feedback::Question.new
156
+ question2.id = '2'
157
+ question2.name = 'actualy also question'
158
+ question2.label = 'q name 2'
159
+ question2.type = 'multichoicerated'
160
+ question2.presentation = 'r>>>>>1####Option1\n |2####Option2\n |3####Option3'
161
+
162
+ question3 = Moodle2CC::Moodle2::Models::Feedback::Question.new
163
+ question3.id = '2'
164
+ question3.name = 'label label'
165
+ question3.label = ''
166
+ question3.type = 'label'
167
+ question3.presentation = 'actually the text for the label'
168
+
169
+ moodle_feedback.items = [question1, question2, question3]
170
+
171
+ canvas_assessment = subject.convert_feedback(moodle_feedback)
172
+
173
+ expect(canvas_assessment.identifier).to eq 'm20188a0c97e17ce57511316621805da83_feedback_assessment'
174
+ expect(canvas_assessment.title).to eq moodle_feedback.name
175
+ expect(canvas_assessment.description).to eq moodle_feedback.intro
176
+
177
+ expect(canvas_assessment.unlock_at).to eq Time.parse('Sat, 08 Feb 2014 16:00:00 GMT')
178
+ expect(canvas_assessment.lock_at).to eq Time.parse('Sat, 08 Feb 2014 18:00:00 GMT')
179
+ expect(canvas_assessment.scoring_policy).to eq 'keep_latest'
180
+ expect(canvas_assessment.quiz_type).to eq 'survey'
181
+ expect(canvas_assessment.workflow_state).to eq Moodle2CC::CanvasCC::Models::WorkflowState::UNPUBLISHED
182
+
183
+ expect(canvas_assessment.items.count).to eq 3
184
+
185
+ canvas_question1 = canvas_assessment.items[0]
186
+ expect(canvas_question1.question_type).to eq 'multiple_choice_question'
187
+ expect(canvas_question1.material).to eq question1.name
188
+ expect(canvas_question1.title).to eq question1.label
189
+ expect(canvas_question1.answers.count).to eq 3
190
+ expect(canvas_question1.answers.map(&:answer_text)).to eq ['Option 1', 'Option 2', 'Option 3']
191
+
192
+ canvas_question2 = canvas_assessment.items[1]
193
+ expect(canvas_question2.question_type).to eq 'multiple_choice_question'
194
+ expect(canvas_question2.material).to eq question2.name
195
+ expect(canvas_question2.title).to eq question2.label
196
+ expect(canvas_question2.answers.count).to eq 3
197
+ expect(canvas_question2.answers.map(&:answer_text)).to eq ['[1] Option1', '[2] Option2', '[3] Option3']
198
+
199
+ canvas_question3 = canvas_assessment.items[2]
200
+ expect(canvas_question3.question_type).to eq 'text_only_question'
201
+ expect(canvas_question3.material).to eq question3.presentation
202
+ expect(canvas_question3.title).to eq question3.name
203
+ end
49
204
  end
@@ -70,6 +70,20 @@ module Moodle2CC
70
70
  expect(subject).to have_received(:generate_unique_identifier_for).with('id', '_assessment')
71
71
  end
72
72
 
73
+ it 'generates a unique identifier for a Choice' do
74
+ choice = Moodle2CC::Moodle2::Models::Choice.new
75
+ choice.id = 'id'
76
+ subject.generate_unique_identifier_for_activity(choice)
77
+ expect(subject).to have_received(:generate_unique_identifier_for).with('id', '_choice_assessment')
78
+ end
79
+
80
+ it 'generates a unique identifier for a Questionnaire' do
81
+ questionnaire = Moodle2CC::Moodle2::Models::Questionnaire.new
82
+ questionnaire.id = 'id'
83
+ subject.generate_unique_identifier_for_activity(questionnaire)
84
+ expect(subject).to have_received(:generate_unique_identifier_for).with('id', '_questionnaire_assessment')
85
+ end
86
+
73
87
  it 'generates a unique identifier for an Assignment' do
74
88
  assignment = Moodle2CC::Moodle2::Models::Assignment.new
75
89
  assignment.id = 'id'
@@ -107,6 +121,16 @@ module Moodle2CC
107
121
  expect(subject.activity_content_type(quiz)).to eq CanvasCC::Models::ModuleItem::CONTENT_TYPE_QUIZ
108
122
  end
109
123
 
124
+ it 'looks up the content type for a Choice' do
125
+ choice = Moodle2CC::Moodle2::Models::Choice.new
126
+ expect(subject.activity_content_type(choice)).to eq CanvasCC::Models::ModuleItem::CONTENT_TYPE_QUIZ
127
+ end
128
+
129
+ it 'looks up the content type for a Questionnaire' do
130
+ questionnaire = Moodle2CC::Moodle2::Models::Questionnaire.new
131
+ expect(subject.activity_content_type(questionnaire)).to eq CanvasCC::Models::ModuleItem::CONTENT_TYPE_QUIZ
132
+ end
133
+
110
134
  it 'looks up the content type for an Assignment' do
111
135
  assignment = Moodle2CC::Moodle2::Models::Assignment.new
112
136
  expect(subject.activity_content_type(assignment)).to eq CanvasCC::Models::ModuleItem::CONTENT_TYPE_ASSIGNMENT
@@ -25,6 +25,7 @@ module Moodle2CC
25
25
  it 'converts a moodle folder to a canvas page' do
26
26
  moodle2_folder.id = '3'
27
27
  moodle2_folder.name = 'Folder Name'
28
+ moodle2_folder.intro = 'introduction and stuff'
28
29
  moodle2_folder.visible = true
29
30
  canvas_page = subject.convert(moodle2_folder)
30
31
  expect(canvas_page.identifier).to eq 'm2eccbc87e4b5ce2fe28308fd9f2a7baf3_folder'
@@ -32,6 +33,7 @@ module Moodle2CC
32
33
  expect(canvas_page.workflow_state).to eq('active')
33
34
  expect(canvas_page.editing_roles).to eq('teachers')
34
35
  expect(canvas_page.body).to include('ul')
36
+ expect(canvas_page.body).to include(moodle2_folder.intro)
35
37
  expect(canvas_page.body).to include('<li><p><a href="@@PLUGINFILE@@/file1.txt">file1.txt</a></p></li>')
36
38
  expect(canvas_page.body).to include('<li><p><a href="@@PLUGINFILE@@/file2.txt">file2.txt</a></p></li>')
37
39
  expect(canvas_page.body).to include('<li><p><a href="@@PLUGINFILE@@/subfolder1/file4.txt">subfolder1/file4.txt</a></p></li>')
@@ -28,9 +28,8 @@ module Moodle2CC
28
28
  expect(canvas_page.editing_roles).to eq('teachers,students')
29
29
 
30
30
  expect(canvas_page.body).to include('<h2>Glossary Name</h2>')
31
- expect(canvas_page.body).to include('<table><tr><th>Concept</th><th>Definition</th></tr>')
32
- expect(canvas_page.body).to include("<tr><td style='padding-right:10px'>Concept number 0</td><td>Definition number 0</td></tr>")
33
- expect(canvas_page.body).to include("<tr><td style='padding-right:10px'>Concept number 1</td><td>Definition number 1</td></tr>")
31
+ expect(canvas_page.body).to include("<dt>Concept number 0</dt><dd>Definition number 0</dd>")
32
+ expect(canvas_page.body).to include("<dt>Concept number 1</dt><dd>Definition number 1</dd>")
34
33
  end
35
34
  end
36
35
  end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC
4
+ describe Moodle2Converter::LabelConverter do
5
+ let(:moodle_label) { Moodle2::Models::Label.new }
6
+
7
+ describe '#convert_to_module_items' do
8
+ it 'converts a moodle label with intro content to a wiki page module item' do
9
+ subject.stub(:generate_unique_identifier) { 'some_random_id' }
10
+
11
+ moodle_label.id = '1'
12
+ moodle_label.name = 'label title'
13
+ moodle_label.intro = '<div>hey look i have html content</div>'
14
+ moodle_label.visible = true
15
+
16
+ module_items = subject.convert_to_module_items(moodle_label)
17
+ expect(module_items.size).to eq 1
18
+
19
+ module_item = module_items.first
20
+
21
+ expect(module_item.identifier).to eq 'some_random_id'
22
+ expect(module_item.workflow_state).to eq 'active'
23
+ expect(module_item.title).to eq 'label title'
24
+ expect(module_item.identifierref).to eq "m2#{Digest::MD5.hexdigest(moodle_label.id.to_s)}"
25
+ expect(module_item.content_type).to eq 'WikiPage'
26
+ expect(module_item.indent).to eq '0'
27
+ end
28
+
29
+ it 'converts a plain moodle label to a title module item' do
30
+ subject.stub(:generate_unique_identifier) { 'some_random_id' }
31
+
32
+ moodle_label.id = '1'
33
+ moodle_label.name = 'label title'
34
+ moodle_label.intro = '<hr>'
35
+ moodle_label.visible = true
36
+
37
+ module_items = subject.convert_to_module_items(moodle_label)
38
+ expect(module_items.size).to eq 1
39
+
40
+ module_item = module_items.first
41
+
42
+ expect(module_item.identifier).to eq 'some_random_id'
43
+ expect(module_item.workflow_state).to eq 'active'
44
+ expect(module_item.title).to eq 'label title'
45
+ expect(module_item.identifierref).to be_nil
46
+ expect(module_item.content_type).to eq 'ContextModuleSubHeader'
47
+ expect(module_item.indent).to eq '0'
48
+ end
49
+ end
50
+
51
+ describe '#convert_to_pages' do
52
+ it 'converts a moodle label with intro content to a page' do
53
+ subject.stub(:generate_unique_identifier) { 'some_random_id' }
54
+
55
+ moodle_label.id = '1'
56
+ moodle_label.name = 'label title'
57
+ moodle_label.intro = '<div>hey look i also have html content</div>'
58
+ moodle_label.visible = true
59
+
60
+ pages = subject.convert_to_pages(moodle_label)
61
+ expect(pages.size).to eq 1
62
+
63
+ page = pages.first
64
+
65
+ expect(page.identifier).to eq "m2#{Digest::MD5.hexdigest(moodle_label.id.to_s)}"
66
+ expect(page.workflow_state).to eq 'active'
67
+ expect(page.title).to eq 'label title'
68
+ expect(page.editing_roles).to eq CanvasCC::Models::Page::EDITING_ROLE_TEACHER
69
+ expect(page.body).to eq moodle_label.intro
70
+ expect(page.href).to end_with("label-title.html")
71
+ end
72
+
73
+ it 'does not convert a plain moodle label to a page' do
74
+ subject.stub(:generate_unique_identifier) { 'some_random_id' }
75
+
76
+ moodle_label.id = '1'
77
+ moodle_label.name = 'label title'
78
+ moodle_label.intro = '<hr>'
79
+ moodle_label.visible = true
80
+
81
+ pages = subject.convert_to_pages(moodle_label)
82
+ expect(pages.size).to eq 0
83
+ end
84
+ end
85
+ end
86
+ end
@@ -144,10 +144,12 @@ module Moodle2CC
144
144
  end
145
145
 
146
146
  it 'converts assignments' do
147
+ moodle_course.show_grades = false
147
148
  canvas_course.assignments = [Moodle2CC::CanvasCC::Models::Assignment.new, Moodle2CC::CanvasCC::Models::Assignment.new]
148
149
  migrator.migrate
149
150
  expect(converter).to have_received(:convert).exactly(2)
150
151
  canvas_course.assignments.each{|assignment| expect(assignment.body).to eq 'converted_html'}
152
+ canvas_course.assignments.each{|assignment| expect(assignment.muted).to eq true}
151
153
  end
152
154
 
153
155
  it 'converts assessment' do
@@ -38,7 +38,7 @@ describe Moodle2CC::Moodle2Converter::QuestionBankConverter do
38
38
 
39
39
  canvas_group = canvas_bank.question_groups.first
40
40
  expect(canvas_group.questions.count).to eq 2
41
- expect(canvas_group.questions.detect{|q| q.identifier == question1.id}).not_to be_nil
42
- expect(canvas_group.questions.detect{|q| q.identifier == question2.id}).not_to be_nil
41
+ expect(canvas_group.questions.detect{|q| q.original_identifier == question1.id}).not_to be_nil
42
+ expect(canvas_group.questions.detect{|q| q.original_identifier == question2.id}).not_to be_nil
43
43
  end
44
44
  end
@@ -17,7 +17,7 @@ module Moodle2CC::Moodle2Converter::QuestionConverters
17
17
 
18
18
  converted_question = QuestionConverter.new.convert(moodle_question)
19
19
 
20
- expect(converted_question.identifier).to eq moodle_question.id
20
+ expect(converted_question.original_identifier).to eq moodle_question.id
21
21
  expect(converted_question.answers.count).to eq moodle_question.answers.count
22
22
  expect(converted_question.answers.first.id).to eq moodle_question.answers.first.id
23
23
  expect(converted_question.dataset_definitions).to eq moodle_question.dataset_definitions