moodle2cc 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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