moodle2cc 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog +37 -29
- data/lib/moodle2cc.rb +2 -0
- data/lib/moodle2cc/canvas_cc/assignment_writer.rb +2 -1
- data/lib/moodle2cc/canvas_cc/models/assessment.rb +14 -4
- data/lib/moodle2cc/canvas_cc/models/assignment.rb +1 -1
- data/lib/moodle2cc/canvas_cc/models/course.rb +7 -1
- data/lib/moodle2cc/canvas_cc/models/page.rb +5 -1
- data/lib/moodle2cc/canvas_cc/models/question.rb +3 -3
- data/lib/moodle2cc/canvas_cc/multiple_answers_question_writer.rb +40 -0
- data/lib/moodle2cc/canvas_cc/question_writer.rb +1 -0
- data/lib/moodle2cc/moodle2/extractor.rb +23 -0
- data/lib/moodle2cc/moodle2/models.rb +5 -1
- data/lib/moodle2cc/moodle2/models/choice.rb +12 -0
- data/lib/moodle2cc/moodle2/models/course.rb +8 -3
- data/lib/moodle2cc/moodle2/models/feedback.rb +15 -0
- data/lib/moodle2cc/moodle2/models/label.rb +66 -0
- data/lib/moodle2cc/moodle2/models/questionnaire.rb +19 -0
- data/lib/moodle2cc/moodle2/parsers.rb +3 -0
- data/lib/moodle2cc/moodle2/parsers/choice_parser.rb +52 -0
- data/lib/moodle2cc/moodle2/parsers/course_parser.rb +2 -0
- data/lib/moodle2cc/moodle2/parsers/feedback_parser.rb +54 -0
- data/lib/moodle2cc/moodle2/parsers/questionnaire_parser.rb +58 -0
- data/lib/moodle2cc/moodle2converter/assessment_converter.rb +37 -1
- data/lib/moodle2cc/moodle2converter/assignment_converter.rb +1 -1
- data/lib/moodle2cc/moodle2converter/book_converter.rb +1 -0
- data/lib/moodle2cc/moodle2converter/converter_helper.rb +7 -1
- data/lib/moodle2cc/moodle2converter/feedback_converter.rb +70 -0
- data/lib/moodle2cc/moodle2converter/folder_converter.rb +2 -1
- data/lib/moodle2cc/moodle2converter/glossary_converter.rb +3 -3
- data/lib/moodle2cc/moodle2converter/label_converter.rb +39 -0
- data/lib/moodle2cc/moodle2converter/migrator.rb +17 -3
- data/lib/moodle2cc/moodle2converter/question_converters/question_converter.rb +4 -1
- data/lib/moodle2cc/moodle2converter/questionnaire_converter.rb +58 -0
- data/lib/moodle2cc/moodle2converter/section_converter.rb +4 -3
- data/lib/moodle2cc/version.rb +1 -1
- data/spec/moodle2cc/canvas_cc/assignment_writer_spec.rb +2 -0
- data/spec/moodle2cc/canvas_cc/models/assessment_spec.rb +25 -18
- data/spec/moodle2cc/canvas_cc/multiple_answers_question_writer_spec.rb +47 -0
- data/spec/moodle2cc/moodle2/extractor_spec.rb +24 -0
- data/spec/moodle2cc/moodle2/models/label_spec.rb +71 -0
- data/spec/moodle2cc/moodle2/parsers/choice_parser_spec.rb +32 -0
- data/spec/moodle2cc/moodle2/parsers/course_parser_spec.rb +1 -0
- data/spec/moodle2cc/moodle2/parsers/feedback_parser_spec.rb +31 -0
- data/spec/moodle2cc/moodle2/parsers/questionnaire_parser_spec.rb +32 -0
- data/spec/moodle2cc/moodle2converter/assessment_converter_spec.rb +158 -3
- data/spec/moodle2cc/moodle2converter/converter_helper_spec.rb +24 -0
- data/spec/moodle2cc/moodle2converter/folder_converter_spec.rb +2 -0
- data/spec/moodle2cc/moodle2converter/glossary_converter_spec.rb +2 -3
- data/spec/moodle2cc/moodle2converter/label_converter_spec.rb +86 -0
- data/spec/moodle2cc/moodle2converter/migrator_spec.rb +2 -0
- data/spec/moodle2cc/moodle2converter/question_bank_converter_spec.rb +2 -2
- data/spec/moodle2cc/moodle2converter/question_converters/calculated_converter_spec.rb +1 -1
- data/spec/moodle2cc/moodle2converter/question_converters/matching_converter_spec.rb +1 -1
- data/spec/moodle2cc/moodle2converter/question_converters/multiple_blanks_converter_spec.rb +1 -1
- data/spec/moodle2cc/moodle2converter/question_converters/numerical_converter_spec.rb +1 -1
- data/spec/moodle2cc/moodle2converter/question_converters/question_converter_spec.rb +1 -1
- data/spec/moodle2cc/moodle2converter/question_converters/true_false_converter_spec.rb +1 -1
- data/spec/moodle2cc/moodle2converter/section_converter_spec.rb +7 -22
- data/test/fixtures/moodle2/backup/activities/choice_56547/calendar.xml +3 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/choice.xml +32 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/comments.xml +3 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/completion.xml +3 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/filters.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/grades.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/inforef.xml +3 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/module.xml +28 -0
- data/test/fixtures/moodle2/backup/activities/choice_56547/roles.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58588/feedback.xml +147 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58588/filters.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58588/grades.xml +7 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58588/inforef.xml +3 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58588/module.xml +28 -0
- data/test/fixtures/moodle2/backup/activities/feedback_58588/roles.xml +7 -0
- data/test/fixtures/moodle2/backup/moodle_backup.xml +14 -0
- 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.
|
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.
|
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(
|
32
|
-
expect(canvas_page.body).to include("<
|
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.
|
42
|
-
expect(canvas_group.questions.detect{|q| q.
|
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.
|
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
|