moodle2cc 0.1.12 → 0.2.0

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 (479) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +4 -1
  3. data/Changelog +5 -0
  4. data/Gemfile +2 -0
  5. data/Guardfile +6 -0
  6. data/README.md +1 -1
  7. data/Rakefile +14 -1
  8. data/lib/moodle2cc.rb +66 -0
  9. data/lib/moodle2cc/canvas/question.rb +1 -1
  10. data/lib/moodle2cc/canvas_cc/assessment_writer.rb +82 -0
  11. data/lib/moodle2cc/canvas_cc/assignment_writer.rb +67 -0
  12. data/lib/moodle2cc/canvas_cc/calculated_question_writer.rb +61 -0
  13. data/lib/moodle2cc/canvas_cc/canvas_export_writer.rb +18 -0
  14. data/lib/moodle2cc/canvas_cc/cartridge_creator.rb +57 -0
  15. data/lib/moodle2cc/canvas_cc/course_setting_writer.rb +35 -0
  16. data/lib/moodle2cc/canvas_cc/discussion_writer.rb +51 -0
  17. data/lib/moodle2cc/canvas_cc/essay_question_writer.rb +19 -0
  18. data/lib/moodle2cc/canvas_cc/file_meta_writer.rb +38 -0
  19. data/lib/moodle2cc/canvas_cc/ims_manifest_generator.rb +123 -0
  20. data/lib/moodle2cc/canvas_cc/matching_question_writer.rb +41 -0
  21. data/lib/moodle2cc/canvas_cc/models/answer.rb +12 -0
  22. data/lib/moodle2cc/canvas_cc/models/assessment.rb +68 -0
  23. data/lib/moodle2cc/canvas_cc/models/assignment.rb +30 -0
  24. data/lib/moodle2cc/canvas_cc/models/calculated_question.rb +7 -0
  25. data/lib/moodle2cc/canvas_cc/models/canvas_file.rb +22 -0
  26. data/lib/moodle2cc/canvas_cc/models/canvas_module.rb +10 -0
  27. data/lib/moodle2cc/canvas_cc/models/course.rb +46 -0
  28. data/lib/moodle2cc/canvas_cc/models/discussion.rb +36 -0
  29. data/lib/moodle2cc/canvas_cc/models/discussion_topic.rb +5 -0
  30. data/lib/moodle2cc/canvas_cc/models/matching_question.rb +7 -0
  31. data/lib/moodle2cc/canvas_cc/models/module_item.rb +16 -0
  32. data/lib/moodle2cc/canvas_cc/models/numerical_question.rb +7 -0
  33. data/lib/moodle2cc/canvas_cc/models/page.rb +31 -0
  34. data/lib/moodle2cc/canvas_cc/models/question.rb +36 -0
  35. data/lib/moodle2cc/canvas_cc/models/question_bank.rb +27 -0
  36. data/lib/moodle2cc/canvas_cc/models/question_group.rb +10 -0
  37. data/lib/moodle2cc/canvas_cc/models/resource.rb +23 -0
  38. data/lib/moodle2cc/canvas_cc/models/web_content.rb +7 -0
  39. data/lib/moodle2cc/canvas_cc/models/web_link.rb +7 -0
  40. data/lib/moodle2cc/canvas_cc/models/workflow_state.rb +6 -0
  41. data/lib/moodle2cc/canvas_cc/module_meta_writer.rb +52 -0
  42. data/lib/moodle2cc/canvas_cc/multiple_blanks_question_writer.rb +51 -0
  43. data/lib/moodle2cc/canvas_cc/multiple_choice_question_writer.rb +48 -0
  44. data/lib/moodle2cc/canvas_cc/numerical_question_writer.rb +40 -0
  45. data/lib/moodle2cc/canvas_cc/page_writer.rb +38 -0
  46. data/lib/moodle2cc/canvas_cc/question_bank_writer.rb +44 -0
  47. data/lib/moodle2cc/canvas_cc/question_group_writer.rb +23 -0
  48. data/lib/moodle2cc/canvas_cc/question_writer.rb +127 -0
  49. data/lib/moodle2cc/canvas_cc/short_answer_question_writer.rb +42 -0
  50. data/lib/moodle2cc/canvas_cc/text_only_question_writer.rb +19 -0
  51. data/lib/moodle2cc/canvas_cc/true_false_question_writer.rb +38 -0
  52. data/lib/moodle2cc/cli.rb +1 -1
  53. data/lib/moodle2cc/migrator.rb +37 -4
  54. data/lib/moodle2cc/moodle2.rb +9 -0
  55. data/lib/moodle2cc/moodle2/extractor.rb +144 -0
  56. data/lib/moodle2cc/moodle2/models.rb +17 -0
  57. data/lib/moodle2cc/moodle2/models/assignment.rb +10 -0
  58. data/lib/moodle2cc/moodle2/models/book.rb +9 -0
  59. data/lib/moodle2cc/moodle2/models/book_chapter.rb +5 -0
  60. data/lib/moodle2cc/moodle2/models/course.rb +29 -0
  61. data/lib/moodle2cc/moodle2/models/external_url.rb +7 -0
  62. data/lib/moodle2cc/moodle2/models/folder.rb +9 -0
  63. data/lib/moodle2cc/moodle2/models/forum.rb +10 -0
  64. data/lib/moodle2cc/moodle2/models/glossary.rb +13 -0
  65. data/lib/moodle2cc/moodle2/models/glossary_entry.rb +13 -0
  66. data/lib/moodle2cc/moodle2/models/label.rb +6 -0
  67. data/lib/moodle2cc/moodle2/models/moodle2_file.rb +13 -0
  68. data/lib/moodle2cc/moodle2/models/page.rb +9 -0
  69. data/lib/moodle2cc/moodle2/models/quizzes.rb +13 -0
  70. data/lib/moodle2cc/moodle2/models/quizzes/answer.rb +5 -0
  71. data/lib/moodle2cc/moodle2/models/quizzes/calculated_question.rb +11 -0
  72. data/lib/moodle2cc/moodle2/models/quizzes/match_question.rb +11 -0
  73. data/lib/moodle2cc/moodle2/models/quizzes/multianswer_question.rb +23 -0
  74. data/lib/moodle2cc/moodle2/models/quizzes/numerical_question.rb +11 -0
  75. data/lib/moodle2cc/moodle2/models/quizzes/question.rb +33 -0
  76. data/lib/moodle2cc/moodle2/models/quizzes/question_category.rb +18 -0
  77. data/lib/moodle2cc/moodle2/models/quizzes/quiz.rb +20 -0
  78. data/lib/moodle2cc/moodle2/models/quizzes/random_sa_question.rb +6 -0
  79. data/lib/moodle2cc/moodle2/models/quizzes/true_false_question.rb +6 -0
  80. data/lib/moodle2cc/moodle2/models/resource.rb +11 -0
  81. data/lib/moodle2cc/moodle2/models/section.rb +19 -0
  82. data/lib/moodle2cc/moodle2/parsers.rb +19 -0
  83. data/lib/moodle2cc/moodle2/parsers/answer_parser.rb +17 -0
  84. data/lib/moodle2cc/moodle2/parsers/assignment_parser.rb +61 -0
  85. data/lib/moodle2cc/moodle2/parsers/book_parser.rb +52 -0
  86. data/lib/moodle2cc/moodle2/parsers/course_parser.rb +28 -0
  87. data/lib/moodle2cc/moodle2/parsers/external_url_parser.rb +40 -0
  88. data/lib/moodle2cc/moodle2/parsers/file_parser.rb +47 -0
  89. data/lib/moodle2cc/moodle2/parsers/folder_parser.rb +54 -0
  90. data/lib/moodle2cc/moodle2/parsers/forum_parser.rb +53 -0
  91. data/lib/moodle2cc/moodle2/parsers/glossary_parser.rb +78 -0
  92. data/lib/moodle2cc/moodle2/parsers/label_parser.rb +36 -0
  93. data/lib/moodle2cc/moodle2/parsers/page_parser.rb +45 -0
  94. data/lib/moodle2cc/moodle2/parsers/parser_helper.rb +37 -0
  95. data/lib/moodle2cc/moodle2/parsers/question_category_parser.rb +47 -0
  96. data/lib/moodle2cc/moodle2/parsers/question_parsers.rb +13 -0
  97. data/lib/moodle2cc/moodle2/parsers/question_parsers/calculated_parser.rb +43 -0
  98. data/lib/moodle2cc/moodle2/parsers/question_parsers/match_parser.rb +24 -0
  99. data/lib/moodle2cc/moodle2/parsers/question_parsers/multianswer_parser.rb +21 -0
  100. data/lib/moodle2cc/moodle2/parsers/question_parsers/multichoice_parser.rb +16 -0
  101. data/lib/moodle2cc/moodle2/parsers/question_parsers/numerical_parser.rb +24 -0
  102. data/lib/moodle2cc/moodle2/parsers/question_parsers/question_parser.rb +51 -0
  103. data/lib/moodle2cc/moodle2/parsers/question_parsers/random_sa_parser.rb +17 -0
  104. data/lib/moodle2cc/moodle2/parsers/question_parsers/short_answer_parser.rb +16 -0
  105. data/lib/moodle2cc/moodle2/parsers/question_parsers/true_false_parser.rb +20 -0
  106. data/lib/moodle2cc/moodle2/parsers/quiz_parser.rb +87 -0
  107. data/lib/moodle2cc/moodle2/parsers/resource_parser.rb +54 -0
  108. data/lib/moodle2cc/moodle2/parsers/section_parser.rb +48 -0
  109. data/lib/moodle2cc/moodle2converter/assessment_converter.rb +31 -0
  110. data/lib/moodle2cc/moodle2converter/assignment_converter.rb +23 -0
  111. data/lib/moodle2cc/moodle2converter/book_converter.rb +97 -0
  112. data/lib/moodle2cc/moodle2converter/converter_helper.rb +68 -0
  113. data/lib/moodle2cc/moodle2converter/course_converter.rb +18 -0
  114. data/lib/moodle2cc/moodle2converter/discussion_converter.rb +18 -0
  115. data/lib/moodle2cc/moodle2converter/file_converter.rb +14 -0
  116. data/lib/moodle2cc/moodle2converter/folder_converter.rb +50 -0
  117. data/lib/moodle2cc/moodle2converter/glossary_converter.rb +36 -0
  118. data/lib/moodle2cc/moodle2converter/html_converter.rb +96 -0
  119. data/lib/moodle2cc/moodle2converter/migrator.rb +111 -0
  120. data/lib/moodle2cc/moodle2converter/page_converter.rb +16 -0
  121. data/lib/moodle2cc/moodle2converter/question_bank_converter.rb +31 -0
  122. data/lib/moodle2cc/moodle2converter/question_converters.rb +11 -0
  123. data/lib/moodle2cc/moodle2converter/question_converters/calculated_converter.rb +17 -0
  124. data/lib/moodle2cc/moodle2converter/question_converters/matching_converter.rb +22 -0
  125. data/lib/moodle2cc/moodle2converter/question_converters/multiple_blanks_converter.rb +26 -0
  126. data/lib/moodle2cc/moodle2converter/question_converters/numerical_converter.rb +14 -0
  127. data/lib/moodle2cc/moodle2converter/question_converters/question_converter.rb +57 -0
  128. data/lib/moodle2cc/moodle2converter/question_converters/random_sa_converter.rb +18 -0
  129. data/lib/moodle2cc/moodle2converter/question_converters/true_false_converter.rb +20 -0
  130. data/lib/moodle2cc/moodle2converter/section_converter.rb +75 -0
  131. data/lib/moodle2cc/version.rb +1 -1
  132. data/moodle2cc.gemspec +6 -1
  133. data/spec/moodle2cc/canvas_cc/assessment_writer_spec.rb +95 -0
  134. data/spec/moodle2cc/canvas_cc/assignment_writer_spec.rb +72 -0
  135. data/spec/moodle2cc/canvas_cc/calculated_question_writer_spec.rb +81 -0
  136. data/spec/moodle2cc/canvas_cc/canvas_export_writer_spec.rb +26 -0
  137. data/spec/moodle2cc/canvas_cc/cartridge_creator_spec.rb +50 -0
  138. data/spec/moodle2cc/canvas_cc/course_setting_writer_spec.rb +47 -0
  139. data/spec/moodle2cc/canvas_cc/discussion_writer_spec.rb +38 -0
  140. data/spec/moodle2cc/canvas_cc/essay_question_writer_spec.rb +31 -0
  141. data/spec/moodle2cc/canvas_cc/file_meta_writer_spec.rb +57 -0
  142. data/spec/moodle2cc/canvas_cc/ims_manifest_generator_spec.rb +141 -0
  143. data/spec/moodle2cc/canvas_cc/matching_question_writer_spec.rb +51 -0
  144. data/spec/moodle2cc/canvas_cc/models/assessment_spec.rb +78 -0
  145. data/spec/moodle2cc/canvas_cc/models/assignment_spec.rb +45 -0
  146. data/spec/moodle2cc/canvas_cc/models/canvas_file_spec.rb +23 -0
  147. data/spec/moodle2cc/canvas_cc/models/canvas_module_spec.rb +16 -0
  148. data/spec/moodle2cc/canvas_cc/models/course_spec.rb +43 -0
  149. data/spec/moodle2cc/canvas_cc/models/discussion_spec.rb +47 -0
  150. data/spec/moodle2cc/canvas_cc/models/discussion_topic_spec.rb +7 -0
  151. data/spec/moodle2cc/canvas_cc/models/module_item_spec.rb +15 -0
  152. data/spec/moodle2cc/canvas_cc/models/page_spec.rb +28 -0
  153. data/spec/moodle2cc/canvas_cc/models/question_spec.rb +8 -0
  154. data/spec/moodle2cc/canvas_cc/models/resource_spec.rb +17 -0
  155. data/spec/moodle2cc/canvas_cc/models/web_content_spec.rb +7 -0
  156. data/spec/moodle2cc/canvas_cc/models/web_link_spec.rb +9 -0
  157. data/spec/moodle2cc/canvas_cc/module_meta_writer_spec.rb +118 -0
  158. data/spec/moodle2cc/canvas_cc/multiple_blanks_question_writer_spec.rb +77 -0
  159. data/spec/moodle2cc/canvas_cc/multiple_choice_question_writer_spec.rb +69 -0
  160. data/spec/moodle2cc/canvas_cc/numerical_question_writer_spec.rb +69 -0
  161. data/spec/moodle2cc/canvas_cc/page_writer_spec.rb +29 -0
  162. data/spec/moodle2cc/canvas_cc/question_bank_writer_spec.rb +43 -0
  163. data/spec/moodle2cc/canvas_cc/question_writer_spec.rb +129 -0
  164. data/spec/moodle2cc/canvas_cc/short_answer_question_writer_spec.rb +50 -0
  165. data/spec/moodle2cc/canvas_cc/text_only_question_writer_spec.rb +23 -0
  166. data/spec/moodle2cc/canvas_cc/true_false_question_writer_spec.rb +62 -0
  167. data/spec/moodle2cc/moodle2/extractor_spec.rb +175 -0
  168. data/spec/moodle2cc/moodle2/models/assignment_spec.rb +36 -0
  169. data/spec/moodle2cc/moodle2/models/book_chapter_spec.rb +11 -0
  170. data/spec/moodle2cc/moodle2/models/book_spec.rb +13 -0
  171. data/spec/moodle2cc/moodle2/models/course_spec.rb +67 -0
  172. data/spec/moodle2cc/moodle2/models/external_url_spec.rb +18 -0
  173. data/spec/moodle2cc/moodle2/models/folder_spec.rb +16 -0
  174. data/spec/moodle2cc/moodle2/models/forum_spec.rb +30 -0
  175. data/spec/moodle2cc/moodle2/models/glossary_entry_spec.rb +25 -0
  176. data/spec/moodle2cc/moodle2/models/glossary_spec.rb +35 -0
  177. data/spec/moodle2cc/moodle2/models/label_spec.rb +13 -0
  178. data/spec/moodle2cc/moodle2/models/moodle2_file_spec.rb +32 -0
  179. data/spec/moodle2cc/moodle2/models/page_spec.rb +23 -0
  180. data/spec/moodle2cc/moodle2/models/quizzes/answer_spec.rb +14 -0
  181. data/spec/moodle2cc/moodle2/models/quizzes/calculated_question_spec.rb +14 -0
  182. data/spec/moodle2cc/moodle2/models/quizzes/multianswer_question_spec.rb +30 -0
  183. data/spec/moodle2cc/moodle2/models/quizzes/numerical_question_spec.rb +12 -0
  184. data/spec/moodle2cc/moodle2/models/quizzes/question_category_spec.rb +29 -0
  185. data/spec/moodle2cc/moodle2/models/quizzes/question_spec.rb +35 -0
  186. data/spec/moodle2cc/moodle2/models/quizzes/quiz_spec.rb +7 -0
  187. data/spec/moodle2cc/moodle2/models/quizzes/random_sa_question_spec.rb +12 -0
  188. data/spec/moodle2cc/moodle2/models/quizzes/true_false_question_spec.rb +16 -0
  189. data/spec/moodle2cc/moodle2/models/resource_spec.rb +22 -0
  190. data/spec/moodle2cc/moodle2/models/section_spec.rb +57 -0
  191. data/spec/moodle2cc/moodle2/parsers/answer_parser_spec.rb +18 -0
  192. data/spec/moodle2cc/moodle2/parsers/assignment_parser_spec.rb +42 -0
  193. data/spec/moodle2cc/moodle2/parsers/book_parser_spec.rb +35 -0
  194. data/spec/moodle2cc/moodle2/parsers/course_parser_spec.rb +18 -0
  195. data/spec/moodle2cc/moodle2/parsers/external_url_parser_spec.rb +26 -0
  196. data/spec/moodle2cc/moodle2/parsers/file_parser_spec.rb +35 -0
  197. data/spec/moodle2cc/moodle2/parsers/folder_parser_spec.rb +24 -0
  198. data/spec/moodle2cc/moodle2/parsers/forum_parser_spec.rb +38 -0
  199. data/spec/moodle2cc/moodle2/parsers/glossary_parser_spec.rb +60 -0
  200. data/spec/moodle2cc/moodle2/parsers/label_parser_spec.rb +21 -0
  201. data/spec/moodle2cc/moodle2/parsers/page_parser_spec.rb +25 -0
  202. data/spec/moodle2cc/moodle2/parsers/parser_helper_spec.rb +94 -0
  203. data/spec/moodle2cc/moodle2/parsers/question_category_parser_spec.rb +27 -0
  204. data/spec/moodle2cc/moodle2/parsers/question_parsers/calculated_parser_spec.rb +83 -0
  205. data/spec/moodle2cc/moodle2/parsers/question_parsers/match_parser_spec.rb +31 -0
  206. data/spec/moodle2cc/moodle2/parsers/question_parsers/multianswer_parser_spec.rb +16 -0
  207. data/spec/moodle2cc/moodle2/parsers/question_parsers/multichoice_parser_spec.rb +16 -0
  208. data/spec/moodle2cc/moodle2/parsers/question_parsers/numerical_parser_spec.rb +23 -0
  209. data/spec/moodle2cc/moodle2/parsers/question_parsers/question_parser_spec.rb +62 -0
  210. data/spec/moodle2cc/moodle2/parsers/question_parsers/random_sa_parser_spec.rb +18 -0
  211. data/spec/moodle2cc/moodle2/parsers/question_parsers/short_answer_parser_spec.rb +16 -0
  212. data/spec/moodle2cc/moodle2/parsers/question_parsers/true_false_parser_spec.rb +22 -0
  213. data/spec/moodle2cc/moodle2/parsers/quiz_parser_spec.rb +68 -0
  214. data/spec/moodle2cc/moodle2/parsers/resource_parser_spec.rb +29 -0
  215. data/spec/moodle2cc/moodle2/parsers/section_parser_spec.rb +27 -0
  216. data/spec/moodle2cc/moodle2converter/assessment_converter_spec.rb +49 -0
  217. data/spec/moodle2cc/moodle2converter/assignment_converter_spec.rb +34 -0
  218. data/spec/moodle2cc/moodle2converter/book_converter_spec.rb +132 -0
  219. data/spec/moodle2cc/moodle2converter/converter_helper_spec.rb +149 -0
  220. data/spec/moodle2cc/moodle2converter/course_converter_spec.rb +24 -0
  221. data/spec/moodle2cc/moodle2converter/discussion_converter_spec.rb +23 -0
  222. data/spec/moodle2cc/moodle2converter/file_converter_spec.rb +20 -0
  223. data/spec/moodle2cc/moodle2converter/folder_converter_spec.rb +42 -0
  224. data/spec/moodle2cc/moodle2converter/glossary_converter_spec.rb +36 -0
  225. data/spec/moodle2cc/moodle2converter/html_converter_spec.rb +186 -0
  226. data/spec/moodle2cc/moodle2converter/migrator_spec.rb +173 -0
  227. data/spec/moodle2cc/moodle2converter/page_converter_spec.rb +28 -0
  228. data/spec/moodle2cc/moodle2converter/question_bank_converter_spec.rb +44 -0
  229. data/spec/moodle2cc/moodle2converter/question_converters/calculated_converter_spec.rb +30 -0
  230. data/spec/moodle2cc/moodle2converter/question_converters/matching_converter_spec.rb +25 -0
  231. data/spec/moodle2cc/moodle2converter/question_converters/multiple_blanks_converter_spec.rb +37 -0
  232. data/spec/moodle2cc/moodle2converter/question_converters/numerical_converter_spec.rb +19 -0
  233. data/spec/moodle2cc/moodle2converter/question_converters/question_converter_spec.rb +82 -0
  234. data/spec/moodle2cc/moodle2converter/question_converters/random_sa_converter_spec.rb +20 -0
  235. data/spec/moodle2cc/moodle2converter/question_converters/true_false_converter_spec.rb +26 -0
  236. data/spec/moodle2cc/moodle2converter/section_converter_spec.rb +187 -0
  237. data/spec/spec_helper.rb +11 -0
  238. data/spec/support/shared_examples_for_models.rb +26 -0
  239. data/test/acceptance/migrator_test.rb +2 -1
  240. data/test/fixtures/common_cartridge/ims_manifest_simple.xml +45 -0
  241. data/test/fixtures/common_cartridge/schema/cccv1p0.xsd +563 -0
  242. data/test/fixtures/common_cartridge/schema/ccv1p1_imsccauth_v1p1.xsd +203 -0
  243. data/test/fixtures/common_cartridge/schema/ccv1p1_imscp_v1p2_v1p0.xsd +827 -0
  244. data/test/fixtures/common_cartridge/schema/ccv1p1_lommanifest_v1p0.xsd +822 -0
  245. data/test/fixtures/common_cartridge/schema/ccv1p1_lomresource_v1p0.xsd +273 -0
  246. data/test/fixtures/common_cartridge/schema/xml.xsd +286 -0
  247. data/test/fixtures/moodle2/SC.mbz +0 -0
  248. data/test/fixtures/moodle2/backup/activities/assign_12/assign.xml +78 -0
  249. data/test/fixtures/moodle2/backup/activities/assign_12/calendar.xml +21 -0
  250. data/test/fixtures/moodle2/backup/activities/assign_12/comments.xml +3 -0
  251. data/test/fixtures/moodle2/backup/activities/assign_12/completion.xml +3 -0
  252. data/test/fixtures/moodle2/backup/activities/assign_12/filters.xml +7 -0
  253. data/test/fixtures/moodle2/backup/activities/assign_12/grades.xml +38 -0
  254. data/test/fixtures/moodle2/backup/activities/assign_12/grading.xml +9 -0
  255. data/test/fixtures/moodle2/backup/activities/assign_12/inforef.xml +13 -0
  256. data/test/fixtures/moodle2/backup/activities/assign_12/module.xml +25 -0
  257. data/test/fixtures/moodle2/backup/activities/assign_12/roles.xml +7 -0
  258. data/test/fixtures/moodle2/backup/activities/assign_4/assign.xml +78 -0
  259. data/test/fixtures/moodle2/backup/activities/assign_4/calendar.xml +21 -0
  260. data/test/fixtures/moodle2/backup/activities/assign_4/comments.xml +3 -0
  261. data/test/fixtures/moodle2/backup/activities/assign_4/completion.xml +3 -0
  262. data/test/fixtures/moodle2/backup/activities/assign_4/filters.xml +7 -0
  263. data/test/fixtures/moodle2/backup/activities/assign_4/grades.xml +38 -0
  264. data/test/fixtures/moodle2/backup/activities/assign_4/grading.xml +9 -0
  265. data/test/fixtures/moodle2/backup/activities/assign_4/inforef.xml +13 -0
  266. data/test/fixtures/moodle2/backup/activities/assign_4/module.xml +25 -0
  267. data/test/fixtures/moodle2/backup/activities/assign_4/roles.xml +7 -0
  268. data/test/fixtures/moodle2/backup/activities/book_6/book.xml +44 -0
  269. data/test/fixtures/moodle2/backup/activities/book_6/calendar.xml +3 -0
  270. data/test/fixtures/moodle2/backup/activities/book_6/comments.xml +3 -0
  271. data/test/fixtures/moodle2/backup/activities/book_6/completion.xml +3 -0
  272. data/test/fixtures/moodle2/backup/activities/book_6/filters.xml +7 -0
  273. data/test/fixtures/moodle2/backup/activities/book_6/grades.xml +7 -0
  274. data/test/fixtures/moodle2/backup/activities/book_6/inforef.xml +3 -0
  275. data/test/fixtures/moodle2/backup/activities/book_6/module.xml +25 -0
  276. data/test/fixtures/moodle2/backup/activities/book_6/roles.xml +7 -0
  277. data/test/fixtures/moodle2/backup/activities/folder_7/calendar.xml +3 -0
  278. data/test/fixtures/moodle2/backup/activities/folder_7/comments.xml +3 -0
  279. data/test/fixtures/moodle2/backup/activities/folder_7/completion.xml +3 -0
  280. data/test/fixtures/moodle2/backup/activities/folder_7/filters.xml +7 -0
  281. data/test/fixtures/moodle2/backup/activities/folder_7/folder.xml +10 -0
  282. data/test/fixtures/moodle2/backup/activities/folder_7/grades.xml +7 -0
  283. data/test/fixtures/moodle2/backup/activities/folder_7/inforef.xml +20 -0
  284. data/test/fixtures/moodle2/backup/activities/folder_7/module.xml +25 -0
  285. data/test/fixtures/moodle2/backup/activities/folder_7/roles.xml +7 -0
  286. data/test/fixtures/moodle2/backup/activities/forum_1/calendar.xml +3 -0
  287. data/test/fixtures/moodle2/backup/activities/forum_1/comments.xml +3 -0
  288. data/test/fixtures/moodle2/backup/activities/forum_1/completion.xml +3 -0
  289. data/test/fixtures/moodle2/backup/activities/forum_1/filters.xml +7 -0
  290. data/test/fixtures/moodle2/backup/activities/forum_1/forum.xml +34 -0
  291. data/test/fixtures/moodle2/backup/activities/forum_1/grades.xml +7 -0
  292. data/test/fixtures/moodle2/backup/activities/forum_1/inforef.xml +3 -0
  293. data/test/fixtures/moodle2/backup/activities/forum_1/module.xml +25 -0
  294. data/test/fixtures/moodle2/backup/activities/forum_1/roles.xml +7 -0
  295. data/test/fixtures/moodle2/backup/activities/forum_13/calendar.xml +3 -0
  296. data/test/fixtures/moodle2/backup/activities/forum_13/comments.xml +3 -0
  297. data/test/fixtures/moodle2/backup/activities/forum_13/completion.xml +3 -0
  298. data/test/fixtures/moodle2/backup/activities/forum_13/filters.xml +7 -0
  299. data/test/fixtures/moodle2/backup/activities/forum_13/forum.xml +34 -0
  300. data/test/fixtures/moodle2/backup/activities/forum_13/grades.xml +7 -0
  301. data/test/fixtures/moodle2/backup/activities/forum_13/inforef.xml +3 -0
  302. data/test/fixtures/moodle2/backup/activities/forum_13/module.xml +25 -0
  303. data/test/fixtures/moodle2/backup/activities/forum_13/roles.xml +7 -0
  304. data/test/fixtures/moodle2/backup/activities/glossary_8/calendar.xml +3 -0
  305. data/test/fixtures/moodle2/backup/activities/glossary_8/comments.xml +3 -0
  306. data/test/fixtures/moodle2/backup/activities/glossary_8/completion.xml +3 -0
  307. data/test/fixtures/moodle2/backup/activities/glossary_8/filters.xml +7 -0
  308. data/test/fixtures/moodle2/backup/activities/glossary_8/glossary.xml +115 -0
  309. data/test/fixtures/moodle2/backup/activities/glossary_8/grades.xml +7 -0
  310. data/test/fixtures/moodle2/backup/activities/glossary_8/inforef.xml +22 -0
  311. data/test/fixtures/moodle2/backup/activities/glossary_8/module.xml +25 -0
  312. data/test/fixtures/moodle2/backup/activities/glossary_8/roles.xml +7 -0
  313. data/test/fixtures/moodle2/backup/activities/label_11/calendar.xml +3 -0
  314. data/test/fixtures/moodle2/backup/activities/label_11/comments.xml +3 -0
  315. data/test/fixtures/moodle2/backup/activities/label_11/completion.xml +3 -0
  316. data/test/fixtures/moodle2/backup/activities/label_11/filters.xml +7 -0
  317. data/test/fixtures/moodle2/backup/activities/label_11/grades.xml +7 -0
  318. data/test/fixtures/moodle2/backup/activities/label_11/inforef.xml +3 -0
  319. data/test/fixtures/moodle2/backup/activities/label_11/label.xml +9 -0
  320. data/test/fixtures/moodle2/backup/activities/label_11/module.xml +25 -0
  321. data/test/fixtures/moodle2/backup/activities/label_11/roles.xml +7 -0
  322. data/test/fixtures/moodle2/backup/activities/page_10/calendar.xml +3 -0
  323. data/test/fixtures/moodle2/backup/activities/page_10/comments.xml +3 -0
  324. data/test/fixtures/moodle2/backup/activities/page_10/completion.xml +3 -0
  325. data/test/fixtures/moodle2/backup/activities/page_10/filters.xml +7 -0
  326. data/test/fixtures/moodle2/backup/activities/page_10/grades.xml +7 -0
  327. data/test/fixtures/moodle2/backup/activities/page_10/inforef.xml +3 -0
  328. data/test/fixtures/moodle2/backup/activities/page_10/module.xml +25 -0
  329. data/test/fixtures/moodle2/backup/activities/page_10/page.xml +16 -0
  330. data/test/fixtures/moodle2/backup/activities/page_10/roles.xml +7 -0
  331. data/test/fixtures/moodle2/backup/activities/page_2/calendar.xml +3 -0
  332. data/test/fixtures/moodle2/backup/activities/page_2/comments.xml +3 -0
  333. data/test/fixtures/moodle2/backup/activities/page_2/completion.xml +3 -0
  334. data/test/fixtures/moodle2/backup/activities/page_2/filters.xml +7 -0
  335. data/test/fixtures/moodle2/backup/activities/page_2/grades.xml +7 -0
  336. data/test/fixtures/moodle2/backup/activities/page_2/inforef.xml +14 -0
  337. data/test/fixtures/moodle2/backup/activities/page_2/module.xml +25 -0
  338. data/test/fixtures/moodle2/backup/activities/page_2/page.xml +21 -0
  339. data/test/fixtures/moodle2/backup/activities/page_2/roles.xml +7 -0
  340. data/test/fixtures/moodle2/backup/activities/questionnaire_9/calendar.xml +3 -0
  341. data/test/fixtures/moodle2/backup/activities/questionnaire_9/comments.xml +3 -0
  342. data/test/fixtures/moodle2/backup/activities/questionnaire_9/completion.xml +3 -0
  343. data/test/fixtures/moodle2/backup/activities/questionnaire_9/filters.xml +7 -0
  344. data/test/fixtures/moodle2/backup/activities/questionnaire_9/grades.xml +7 -0
  345. data/test/fixtures/moodle2/backup/activities/questionnaire_9/inforef.xml +3 -0
  346. data/test/fixtures/moodle2/backup/activities/questionnaire_9/module.xml +25 -0
  347. data/test/fixtures/moodle2/backup/activities/questionnaire_9/questionnaire.xml +245 -0
  348. data/test/fixtures/moodle2/backup/activities/questionnaire_9/roles.xml +7 -0
  349. data/test/fixtures/moodle2/backup/activities/quiz_5/calendar.xml +21 -0
  350. data/test/fixtures/moodle2/backup/activities/quiz_5/comments.xml +3 -0
  351. data/test/fixtures/moodle2/backup/activities/quiz_5/completion.xml +3 -0
  352. data/test/fixtures/moodle2/backup/activities/quiz_5/filters.xml +7 -0
  353. data/test/fixtures/moodle2/backup/activities/quiz_5/grades.xml +38 -0
  354. data/test/fixtures/moodle2/backup/activities/quiz_5/inforef.xml +21 -0
  355. data/test/fixtures/moodle2/backup/activities/quiz_5/module.xml +25 -0
  356. data/test/fixtures/moodle2/backup/activities/quiz_5/quiz.xml +108 -0
  357. data/test/fixtures/moodle2/backup/activities/quiz_5/roles.xml +7 -0
  358. data/test/fixtures/moodle2/backup/activities/resource_14/calendar.xml +3 -0
  359. data/test/fixtures/moodle2/backup/activities/resource_14/comments.xml +3 -0
  360. data/test/fixtures/moodle2/backup/activities/resource_14/completion.xml +3 -0
  361. data/test/fixtures/moodle2/backup/activities/resource_14/filters.xml +7 -0
  362. data/test/fixtures/moodle2/backup/activities/resource_14/grades.xml +7 -0
  363. data/test/fixtures/moodle2/backup/activities/resource_14/inforef.xml +11 -0
  364. data/test/fixtures/moodle2/backup/activities/resource_14/module.xml +25 -0
  365. data/test/fixtures/moodle2/backup/activities/resource_14/resource.xml +16 -0
  366. data/test/fixtures/moodle2/backup/activities/resource_14/roles.xml +7 -0
  367. data/test/fixtures/moodle2/backup/activities/resource_3/calendar.xml +3 -0
  368. data/test/fixtures/moodle2/backup/activities/resource_3/comments.xml +3 -0
  369. data/test/fixtures/moodle2/backup/activities/resource_3/completion.xml +3 -0
  370. data/test/fixtures/moodle2/backup/activities/resource_3/filters.xml +7 -0
  371. data/test/fixtures/moodle2/backup/activities/resource_3/grades.xml +7 -0
  372. data/test/fixtures/moodle2/backup/activities/resource_3/inforef.xml +11 -0
  373. data/test/fixtures/moodle2/backup/activities/resource_3/module.xml +25 -0
  374. data/test/fixtures/moodle2/backup/activities/resource_3/resource.xml +16 -0
  375. data/test/fixtures/moodle2/backup/activities/resource_3/roles.xml +7 -0
  376. data/test/fixtures/moodle2/backup/activities/url_15/calendar.xml +3 -0
  377. data/test/fixtures/moodle2/backup/activities/url_15/comments.xml +3 -0
  378. data/test/fixtures/moodle2/backup/activities/url_15/completion.xml +3 -0
  379. data/test/fixtures/moodle2/backup/activities/url_15/filters.xml +7 -0
  380. data/test/fixtures/moodle2/backup/activities/url_15/grades.xml +7 -0
  381. data/test/fixtures/moodle2/backup/activities/url_15/inforef.xml +3 -0
  382. data/test/fixtures/moodle2/backup/activities/url_15/module.xml +25 -0
  383. data/test/fixtures/moodle2/backup/activities/url_15/roles.xml +7 -0
  384. data/test/fixtures/moodle2/backup/activities/url_15/url.xml +13 -0
  385. data/test/fixtures/moodle2/backup/completion.xml +3 -0
  386. data/test/fixtures/moodle2/backup/course/blocks/calendar_upcoming_12/block.xml +13 -0
  387. data/test/fixtures/moodle2/backup/course/blocks/calendar_upcoming_12/comments.xml +3 -0
  388. data/test/fixtures/moodle2/backup/course/blocks/calendar_upcoming_12/inforef.xml +3 -0
  389. data/test/fixtures/moodle2/backup/course/blocks/calendar_upcoming_12/roles.xml +7 -0
  390. data/test/fixtures/moodle2/backup/course/blocks/news_items_11/block.xml +13 -0
  391. data/test/fixtures/moodle2/backup/course/blocks/news_items_11/comments.xml +3 -0
  392. data/test/fixtures/moodle2/backup/course/blocks/news_items_11/inforef.xml +3 -0
  393. data/test/fixtures/moodle2/backup/course/blocks/news_items_11/roles.xml +7 -0
  394. data/test/fixtures/moodle2/backup/course/blocks/recent_activity_13/block.xml +13 -0
  395. data/test/fixtures/moodle2/backup/course/blocks/recent_activity_13/comments.xml +3 -0
  396. data/test/fixtures/moodle2/backup/course/blocks/recent_activity_13/inforef.xml +3 -0
  397. data/test/fixtures/moodle2/backup/course/blocks/recent_activity_13/roles.xml +7 -0
  398. data/test/fixtures/moodle2/backup/course/blocks/search_forums_10/block.xml +13 -0
  399. data/test/fixtures/moodle2/backup/course/blocks/search_forums_10/comments.xml +3 -0
  400. data/test/fixtures/moodle2/backup/course/blocks/search_forums_10/inforef.xml +3 -0
  401. data/test/fixtures/moodle2/backup/course/blocks/search_forums_10/roles.xml +7 -0
  402. data/test/fixtures/moodle2/backup/course/calendar.xml +3 -0
  403. data/test/fixtures/moodle2/backup/course/comments.xml +3 -0
  404. data/test/fixtures/moodle2/backup/course/course.xml +37 -0
  405. data/test/fixtures/moodle2/backup/course/enrolments.xml +110 -0
  406. data/test/fixtures/moodle2/backup/course/filters.xml +7 -0
  407. data/test/fixtures/moodle2/backup/course/inforef.xml +13 -0
  408. data/test/fixtures/moodle2/backup/course/roles.xml +7 -0
  409. data/test/fixtures/moodle2/backup/files.xml +531 -0
  410. data/test/fixtures/moodle2/backup/files/50/50bf82ee23d193378b172d6656c08eebb094f006 +0 -0
  411. data/test/fixtures/moodle2/backup/files/51/516ec993971b6e2122b97d15ecc0e08c3eb03828 +0 -0
  412. data/test/fixtures/moodle2/backup/files/64/64643b3bd4274c90e293583030e549e61f4d24fb +0 -0
  413. data/test/fixtures/moodle2/backup/files/67/67859b142e5ba020a84c3166f09d59ef992379a4 +0 -0
  414. data/test/fixtures/moodle2/backup/files/7a/7a647918739d3017a4e272ad97b147b667c00fca +0 -0
  415. data/test/fixtures/moodle2/backup/files/a0/a0f324310c8d8dd9c79458986c4322f5a060a1d9 +0 -0
  416. data/test/fixtures/moodle2/backup/files/a2/a258f0bb582d111a994b35fdc84a71ed1d487310 +0 -0
  417. data/test/fixtures/moodle2/backup/gradebook.xml +57 -0
  418. data/test/fixtures/moodle2/backup/groups.xml +5 -0
  419. data/test/fixtures/moodle2/backup/moodle_backup.xml +530 -0
  420. data/test/fixtures/moodle2/backup/outcomes.xml +3 -0
  421. data/test/fixtures/moodle2/backup/questions.xml +1187 -0
  422. data/test/fixtures/moodle2/backup/roles.xml +11 -0
  423. data/test/fixtures/moodle2/backup/scales.xml +3 -0
  424. data/test/fixtures/moodle2/backup/sections/section_1/inforef.xml +3 -0
  425. data/test/fixtures/moodle2/backup/sections/section_1/section.xml +13 -0
  426. data/test/fixtures/moodle2/backup/sections/section_10/inforef.xml +3 -0
  427. data/test/fixtures/moodle2/backup/sections/section_10/section.xml +13 -0
  428. data/test/fixtures/moodle2/backup/sections/section_2/inforef.xml +3 -0
  429. data/test/fixtures/moodle2/backup/sections/section_2/section.xml +13 -0
  430. data/test/fixtures/moodle2/backup/sections/section_3/inforef.xml +3 -0
  431. data/test/fixtures/moodle2/backup/sections/section_3/section.xml +13 -0
  432. data/test/fixtures/moodle2/backup/sections/section_4/inforef.xml +3 -0
  433. data/test/fixtures/moodle2/backup/sections/section_4/section.xml +13 -0
  434. data/test/fixtures/moodle2/backup/sections/section_5/inforef.xml +3 -0
  435. data/test/fixtures/moodle2/backup/sections/section_5/section.xml +13 -0
  436. data/test/fixtures/moodle2/backup/sections/section_6/inforef.xml +3 -0
  437. data/test/fixtures/moodle2/backup/sections/section_6/section.xml +13 -0
  438. data/test/fixtures/moodle2/backup/sections/section_7/inforef.xml +3 -0
  439. data/test/fixtures/moodle2/backup/sections/section_7/section.xml +13 -0
  440. data/test/fixtures/moodle2/backup/users.xml +104 -0
  441. data/test/fixtures/moodle2/moodle2_shell.mbz +0 -0
  442. data/test/test_helper.rb +71 -0
  443. data/{lib/test → test}/test_question_helper.rb +0 -0
  444. data/{lib/test → test}/test_wiki_helper.rb +0 -0
  445. data/test/unit/canvas/assessment_test.rb +1 -1
  446. data/test/unit/canvas/assignment_test.rb +1 -1
  447. data/test/unit/canvas/converter_test.rb +1 -1
  448. data/test/unit/canvas/course_test.rb +1 -1
  449. data/test/unit/canvas/discussion_topic_test.rb +1 -1
  450. data/test/unit/canvas/label_test.rb +1 -1
  451. data/test/unit/canvas/question_bank_test.rb +1 -1
  452. data/test/unit/canvas/question_group_test.rb +1 -1
  453. data/test/unit/canvas/question_test.rb +2 -2
  454. data/test/unit/canvas/web_content_test.rb +1 -1
  455. data/test/unit/canvas/web_link_test.rb +1 -1
  456. data/test/unit/canvas/wiki_test.rb +2 -2
  457. data/test/unit/cc/assessment_test.rb +1 -1
  458. data/test/unit/cc/assignment_test.rb +1 -1
  459. data/test/unit/cc/cc_helper_test.rb +1 -1
  460. data/test/unit/cc/converter_test.rb +1 -1
  461. data/test/unit/cc/course_test.rb +1 -1
  462. data/test/unit/cc/discussion_topic_test.rb +1 -1
  463. data/test/unit/cc/label_test.rb +1 -1
  464. data/test/unit/cc/question_test.rb +2 -2
  465. data/test/unit/cc/web_content_test.rb +1 -1
  466. data/test/unit/cc/web_link_test.rb +1 -1
  467. data/test/unit/cc/wiki_test.rb +2 -2
  468. data/test/unit/migrator_test.rb +12 -1
  469. data/test/unit/moodle/backup_test.rb +1 -1
  470. data/test/unit/moodle/course_test.rb +1 -1
  471. data/test/unit/moodle/grade_item_test.rb +1 -1
  472. data/test/unit/moodle/info_test.rb +1 -1
  473. data/test/unit/moodle/mod_test.rb +1 -1
  474. data/test/unit/moodle/question_category_test.rb +1 -1
  475. data/test/unit/moodle/question_test.rb +1 -1
  476. data/test/unit/moodle/section_test.rb +1 -1
  477. data/test/unit/resource_factory_test.rb +1 -1
  478. metadata +814 -58
  479. data/lib/test/test_helper.rb +0 -44
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::CanvasCC
4
+ describe TextOnlyQuestionWriter do
5
+
6
+ let(:question) { Moodle2CC::CanvasCC::Models::Question.create('text_only_question')}
7
+
8
+ it 'creates the question item xml for a true_false_question' do
9
+ question.identifier = 300
10
+ question.title = 'hi title and stuff'
11
+ question.material = 'heressome material'
12
+
13
+ xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |node|
14
+ QuestionWriter.write_question(node, question)
15
+ end.doc
16
+
17
+ expect(xml.at_xpath('item/@ident').value).to eq question.identifier.to_s
18
+ expect(xml.at_xpath('item/@title').value).to eq question.title
19
+ expect(xml.at_xpath("item/itemmetadata/qtimetadata/qtimetadatafield[fieldlabel=\"question_type\" and fieldentry=\"#{question.question_type}\"]")).to_not be_nil
20
+ expect(xml.at_xpath('item/presentation/material/mattext[@texttype="text/html"]').text).to eq question.material
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::CanvasCC
4
+ describe TrueFalseQuestionWriter do
5
+
6
+ let(:question) { Moodle2CC::CanvasCC::Models::Question.create('true_false_question')}
7
+
8
+ it 'creates the question item xml for a true_false_question' do
9
+ question.identifier = 42
10
+ question.title = 'hi title'
11
+ question.general_feedback = 'unconstructive feedback'
12
+ question.material = 'materia'
13
+
14
+ true_answer = Moodle2CC::CanvasCC::Models::Answer.new
15
+ true_answer.id = 'tr00'
16
+ true_answer.fraction = 1.0
17
+ true_answer.answer_text = 'so true'
18
+ true_answer.feedback = 'was there ever any doubt?'
19
+ false_answer = Moodle2CC::CanvasCC::Models::Answer.new
20
+ false_answer.id = 'furse'
21
+ false_answer.fraction = 0.0
22
+ false_answer.answer_text = 'falrse'
23
+ false_answer.feedback = 'bakaaaa'
24
+ question.answers = [true_answer, false_answer]
25
+
26
+ xml = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |node|
27
+ QuestionWriter.write_question(node, question)
28
+ end.doc
29
+
30
+ expect(xml.at_xpath('item/@ident').value).to eq question.identifier.to_s
31
+ expect(xml.at_xpath('item/@title').value).to eq question.title
32
+ expect(xml.at_xpath("item/itemmetadata/qtimetadata/qtimetadatafield[fieldlabel=\"question_type\" and fieldentry=\"#{question.question_type}\"]")).to_not be_nil
33
+
34
+ response = xml.at_xpath('item/presentation/response_lid')
35
+ expect(response.attributes['rcardinality'].value).to eq 'Single'
36
+ expect(response.attributes['ident'].value).to eq 'response1'
37
+
38
+ expect(response.at_xpath("render_choice/response_label[@ident=\"#{true_answer.id}\"]/material/mattext[@texttype=\"text/html\" and text()=\"#{true_answer.answer_text}\"]")).not_to be_nil
39
+ expect(response.at_xpath("render_choice/response_label[@ident=\"#{false_answer.id}\"]/material/mattext[@texttype=\"text/html\" and text()=\"#{false_answer.answer_text}\"]")).not_to be_nil
40
+
41
+ condition = xml.at_xpath("item/resprocessing/respcondition[@continue=\"No\"]/conditionvar/varequal[@respident=\"response1\" and text()=\"#{true_answer.id}\"]/../..")
42
+ expect(condition).not_to be_nil
43
+ feedback = condition.at_xpath("displayfeedback[@feedbacktype=\"Response\" and @linkrefid=\"#{true_answer.id}_fb\"]")
44
+ expect(feedback).not_to be_nil
45
+ setvar = condition.at_xpath('setvar[@varname="SCORE" and @action="Set" and text()="100"]')
46
+ expect(setvar).not_to be_nil
47
+
48
+ condition = xml.at_xpath("item/resprocessing/respcondition[@continue=\"No\"]/conditionvar/varequal[@respident=\"response1\" and text()=\"#{false_answer.id}\"]/../..")
49
+ expect(condition).not_to be_nil
50
+ feedback = condition.at_xpath("displayfeedback[@feedbacktype=\"Response\" and @linkrefid=\"#{false_answer.id}_fb\"]")
51
+ expect(feedback).not_to be_nil
52
+ setvar = condition.at_xpath('setvar[@varname="SCORE" and @action="Set" and text()="0"]')
53
+ expect(setvar).not_to be_nil
54
+
55
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{true_answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
56
+ expect(feedback.text).to eq true_answer.feedback
57
+
58
+ feedback = xml.at_xpath("item/itemfeedback[@ident=\"#{false_answer.id}_fb\"]/flow_mat/material/mattext[@texttype=\"text/html\"]")
59
+ expect(feedback.text).to eq false_answer.feedback
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,175 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::Moodle2
4
+ describe Extractor do
5
+ subject(:extractor) { Extractor.new('path_to_zip') }
6
+ let(:course) { Models::Course.new }
7
+
8
+ before(:each) do
9
+ Dir.stub(:mktmpdir).and_yield('work_dir')
10
+ Parsers::CourseParser.any_instance.stub(:parse).and_return(course)
11
+ Parsers::SectionParser.any_instance.stub(:parse)
12
+ Parsers::FileParser.any_instance.stub(:parse)
13
+ Parsers::PageParser.any_instance.stub(:parse)
14
+ Parsers::ForumParser.any_instance.stub(:parse)
15
+ Parsers::AssignmentParser.any_instance.stub(:parse)
16
+ Parsers::BookParser.any_instance.stub(:parse)
17
+ Parsers::FolderParser.any_instance.stub(:parse)
18
+ Parsers::QuestionCategoryParser.any_instance.stub(:parse)
19
+ Parsers::QuizParser.any_instance.stub(:parse)
20
+ Parsers::GlossaryParser.any_instance.stub(:parse)
21
+ Parsers::LabelParser.any_instance.stub(:parse)
22
+ Parsers::ExternalUrlParser.any_instance.stub(:parse)
23
+ Parsers::ResourceParser.any_instance.stub(:parse)
24
+ Zip::File.stub(:open).and_yield([])
25
+ end
26
+
27
+ it 'parses courses' do
28
+ allow(course).to receive(:name) { 'course double' }
29
+ Parsers::CourseParser.any_instance.stub(:parse).and_return(course)
30
+ extractor.extract { |parsed_course| expect(parsed_course.name).to eq 'course double' }
31
+ end
32
+
33
+ it 'parses sections' do
34
+ section = Models::Section.new
35
+ Parsers::SectionParser.any_instance.stub(:parse).and_return([section])
36
+ extractor.extract {}
37
+
38
+ expect(course.sections).to eq [section]
39
+ end
40
+
41
+ it 'associates activities with sections based on their sequence' do
42
+ section = Models::Section.new
43
+ section.sequence = [2, 1]
44
+ Parsers::SectionParser.any_instance.stub(:parse).and_return([section])
45
+
46
+ activity1 = double(module_id: '1')
47
+ activity2 = double(module_id: '2')
48
+ activity3 = double(module_id: '3')
49
+ course.stub(:activities).and_return([activity1, activity2, activity3])
50
+
51
+ extractor.extract {}
52
+
53
+ expect(section.activities.size).to eq 2
54
+ expect(section.activities[0]).to eq activity2
55
+ expect(section.activities[1]).to eq activity1
56
+ end
57
+
58
+ it 'associates activities with sections based on their sequence' do
59
+ section = Models::Section.new
60
+ section.sequence = [2, 1]
61
+ Parsers::SectionParser.any_instance.stub(:parse).and_return([section])
62
+
63
+ activity1 = double(module_id: '1')
64
+ activity2 = double(module_id: '2')
65
+ activity3 = double(module_id: '3')
66
+ course.stub(:activities).and_return([activity1, activity2, activity3])
67
+
68
+ extractor.extract {}
69
+
70
+ expect(section.activities.size).to eq 2
71
+ expect(section.activities[0]).to eq activity2
72
+ expect(section.activities[1]).to eq activity1
73
+ end
74
+
75
+ it 'associates resources with their files' do
76
+ resource = Models::Resource.new
77
+ resource.file_ids = [1,3]
78
+ Parsers::ResourceParser.any_instance.stub(:parse).and_return([resource])
79
+
80
+ file = Models::Moodle2File.new
81
+ file.id = 3
82
+ course.stub(:files).and_return([file])
83
+
84
+ extractor.extract {}
85
+
86
+ expect(resource.file).to eq file
87
+ end
88
+
89
+ it 'parses files' do
90
+ file = Models::Moodle2File.new
91
+ Parsers::FileParser.any_instance.stub(:parse).and_return([file])
92
+ extractor.extract {}
93
+ expect(course.files).to eq [file]
94
+ end
95
+
96
+ it 'parses pages' do
97
+ page = Models::Page.new
98
+ Parsers::PageParser.any_instance.stub(:parse).and_return([page])
99
+ extractor.extract {}
100
+ expect(course.pages).to eq [page]
101
+ end
102
+
103
+ it 'parses forums' do
104
+ forum = Models::Forum.new
105
+ Parsers::ForumParser.any_instance.stub(:parse).and_return([forum])
106
+ extractor.extract {}
107
+ expect(course.forums).to eq [forum]
108
+ end
109
+
110
+ it 'parses assignments' do
111
+ assignment = Models::Assignment.new
112
+ Parsers::AssignmentParser.any_instance.stub(:parse).and_return([assignment])
113
+ extractor.extract {}
114
+ expect(course.assignments).to eq [assignment]
115
+ end
116
+
117
+ it 'parses books' do
118
+ book = Models::Book.new
119
+ Parsers::BookParser.any_instance.stub(:parse).and_return([book])
120
+ extractor.extract {}
121
+ expect(course.books).to eq [book]
122
+ end
123
+
124
+ it 'parses folders' do
125
+ folder = Models::Folder.new
126
+ Parsers::FolderParser.any_instance.stub(:parse).and_return([folder])
127
+ extractor.extract {}
128
+ expect(course.folders).to eq [folder]
129
+ end
130
+
131
+ it 'parses quiz questions' do
132
+ Models::Quizzes::QuestionCategory.any_instance.stub(:resolve_embedded_question_references)
133
+ question_category = Models::Quizzes::QuestionCategory.new
134
+ Parsers::QuestionCategoryParser.any_instance.stub(:parse).and_return([question_category])
135
+ extractor.extract {}
136
+ expect(course.question_categories).to eq [question_category]
137
+ expect(question_category).to have_received(:resolve_embedded_question_references).exactly(1)
138
+ end
139
+
140
+ it 'parses quizzes' do
141
+ quiz = Models::Quizzes::Quiz.new
142
+ Parsers::QuizParser.any_instance.stub(:parse).and_return([quiz])
143
+ extractor.extract {}
144
+ expect(course.quizzes).to eq [quiz]
145
+ end
146
+
147
+ it 'parses glossaries' do
148
+ glossary = Models::Glossary.new
149
+ Parsers::GlossaryParser.any_instance.stub(:parse).and_return([glossary])
150
+ extractor.extract {}
151
+ expect(course.glossaries).to eq [glossary]
152
+ end
153
+
154
+ it 'parses labels' do
155
+ external_url = Models::Label.new
156
+ Parsers::LabelParser.any_instance.stub(:parse).and_return([external_url])
157
+ extractor.extract {}
158
+ expect(course.labels).to eq [external_url]
159
+ end
160
+
161
+ it 'parses external_urls' do
162
+ external_url = Models::ExternalUrl.new
163
+ Parsers::ExternalUrlParser.any_instance.stub(:parse).and_return([external_url])
164
+ extractor.extract {}
165
+ expect(course.external_urls).to eq [external_url]
166
+ end
167
+
168
+ it 'parses resources' do
169
+ resource = Models::Resource.new
170
+ Parsers::ResourceParser.any_instance.stub(:parse).and_return([resource])
171
+ extractor.extract {}
172
+ expect(course.resources).to eq [resource]
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Moodle2CC::Moodle2::Models::Assignment do
4
+
5
+ it_behaves_like 'it has an attribute for', :id
6
+ it_behaves_like 'it has an attribute for', :module_id
7
+ it_behaves_like 'it has an attribute for', :name
8
+ it_behaves_like 'it has an attribute for', :intro
9
+ it_behaves_like 'it has an attribute for', :intro_format
10
+ it_behaves_like 'it has an attribute for', :always_show_description
11
+ it_behaves_like 'it has an attribute for', :submission_drafts
12
+ it_behaves_like 'it has an attribute for', :send_notifications
13
+ it_behaves_like 'it has an attribute for', :send_late_notifications
14
+ it_behaves_like 'it has an attribute for', :due_date
15
+ it_behaves_like 'it has an attribute for', :cut_off_date
16
+ it_behaves_like 'it has an attribute for', :allow_submissions_from_date
17
+ it_behaves_like 'it has an attribute for', :grade
18
+ it_behaves_like 'it has an attribute for', :time_modified
19
+ it_behaves_like 'it has an attribute for', :completion_submit
20
+ it_behaves_like 'it has an attribute for', :require_submission_statement
21
+ it_behaves_like 'it has an attribute for', :team_submission
22
+ it_behaves_like 'it has an attribute for', :require_all_team_members_submit
23
+ it_behaves_like 'it has an attribute for', :team_submission_grouping_id
24
+ it_behaves_like 'it has an attribute for', :blind_marking
25
+ it_behaves_like 'it has an attribute for', :reveal_identities
26
+ it_behaves_like 'it has an attribute for', :online_text_submission
27
+ it_behaves_like 'it has an attribute for', :file_submission
28
+ it_behaves_like 'it has an attribute for', :max_file_size_submission
29
+ it_behaves_like 'it has an attribute for', :max_files_submission
30
+ it_behaves_like 'it has an attribute for', :submission_comments
31
+ it_behaves_like 'it has an attribute for', :feedback_comments
32
+ it_behaves_like 'it has an attribute for', :feedback_files
33
+ it_behaves_like 'it has an attribute for', :offline_grading_worksheet
34
+ it_behaves_like 'it has an attribute for', :visible
35
+
36
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Moodle2CC::Moodle2::Models::BookChapter do
4
+ it_behaves_like 'it has an attribute for', :id
5
+ it_behaves_like 'it has an attribute for', :pagenum
6
+ it_behaves_like 'it has an attribute for', :subchapter
7
+ it_behaves_like 'it has an attribute for', :title
8
+ it_behaves_like 'it has an attribute for', :content
9
+ it_behaves_like 'it has an attribute for', :content_format
10
+ it_behaves_like 'it has an attribute for', :hidden
11
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Moodle2CC::Moodle2::Models::Book do
4
+ it_behaves_like 'it has an attribute for', :id
5
+ it_behaves_like 'it has an attribute for', :module_id
6
+ it_behaves_like 'it has an attribute for', :name
7
+ it_behaves_like 'it has an attribute for', :intro
8
+ it_behaves_like 'it has an attribute for', :intro_format
9
+ it_behaves_like 'it has an attribute for', :numbering
10
+ it_behaves_like 'it has an attribute for', :custom_titles
11
+ it_behaves_like 'it has an attribute for', :visible
12
+ it_behaves_like 'it has an attribute for', :chapters, []
13
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::Moodle2::Models
4
+ describe Course do
5
+
6
+ it_behaves_like 'it has an attribute for', :id_number
7
+ it_behaves_like 'it has an attribute for', :fullname
8
+ it_behaves_like 'it has an attribute for', :shortname
9
+ it_behaves_like 'it has an attribute for', :startdate
10
+ it_behaves_like 'it has an attribute for', :summary
11
+ it_behaves_like 'it has an attribute for', :course_id
12
+ it_behaves_like 'it has an attribute for', :folders, []
13
+ it_behaves_like 'it has an attribute for', :glossaries, []
14
+ it_behaves_like 'it has an attribute for', :question_categories, []
15
+ it_behaves_like 'it has an attribute for', :labels, []
16
+ it_behaves_like 'it has an attribute for', :external_urls, []
17
+ it_behaves_like 'it has an attribute for', :resources, []
18
+
19
+ describe '#activities' do
20
+ it 'collects pages' do
21
+ subject.pages << :page
22
+ expect(subject.activities).to eq [:page]
23
+ end
24
+
25
+ it 'collects forums' do
26
+ subject.forums << :forums
27
+ expect(subject.activities).to eq [:forums]
28
+ end
29
+
30
+ it 'collects assignments' do
31
+ subject.assignments << :assignment
32
+ expect(subject.activities).to eq [:assignment]
33
+ end
34
+
35
+ it 'collects books' do
36
+ subject.books << :book
37
+ expect(subject.activities).to eq [:book]
38
+ end
39
+
40
+ it 'collects folders' do
41
+ subject.folders << :folder
42
+ expect(subject.activities).to eq [:folder]
43
+ end
44
+
45
+ it 'collects labels' do
46
+ subject.labels << :labels
47
+ expect(subject.activities).to eq [:labels]
48
+ end
49
+
50
+ it 'collect glossaries' do
51
+ subject.glossaries << :glossaries
52
+ expect(subject.activities).to eq [:glossaries]
53
+ end
54
+
55
+ it 'collect external_urls' do
56
+ subject.external_urls << :external_urls
57
+ expect(subject.activities).to eq [:external_urls]
58
+ end
59
+
60
+ it 'collects resources' do
61
+ subject.resources << :resources
62
+ expect(subject.activities).to eq [:resources]
63
+ end
64
+ end
65
+ end
66
+ end
67
+
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::Moodle2::Models
4
+ describe ExternalUrl do
5
+
6
+ it_behaves_like 'it has an attribute for', :id
7
+ it_behaves_like 'it has an attribute for', :module_id
8
+ it_behaves_like 'it has an attribute for', :name
9
+ it_behaves_like 'it has an attribute for', :intro
10
+ it_behaves_like 'it has an attribute for', :intro_format
11
+ it_behaves_like 'it has an attribute for', :external_url
12
+ it_behaves_like 'it has an attribute for', :display
13
+ it_behaves_like 'it has an attribute for', :display_options
14
+ it_behaves_like 'it has an attribute for', :parameters
15
+ it_behaves_like 'it has an attribute for', :visible
16
+
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ module Moodle2CC::Moodle2::Models
4
+ describe Folder do
5
+
6
+ it_behaves_like 'it has an attribute for', :id
7
+ it_behaves_like 'it has an attribute for', :module_id
8
+ it_behaves_like 'it has an attribute for', :name
9
+ it_behaves_like 'it has an attribute for', :intro
10
+ it_behaves_like 'it has an attribute for', :intro_format
11
+ it_behaves_like 'it has an attribute for', :revision
12
+ it_behaves_like 'it has an attribute for', :visible
13
+ it_behaves_like 'it has an attribute for', :file_ids, []
14
+
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ describe Moodle2CC::Moodle2::Models::Forum do
4
+
5
+ it_behaves_like 'it has an attribute for', :id
6
+ it_behaves_like 'it has an attribute for', :module_id
7
+ it_behaves_like 'it has an attribute for', :type
8
+ it_behaves_like 'it has an attribute for', :name
9
+ it_behaves_like 'it has an attribute for', :intro
10
+ it_behaves_like 'it has an attribute for', :intro_format
11
+ it_behaves_like 'it has an attribute for', :assessed
12
+ it_behaves_like 'it has an attribute for', :assess_time_start
13
+ it_behaves_like 'it has an attribute for', :assess_time_finish
14
+ it_behaves_like 'it has an attribute for', :scale
15
+ it_behaves_like 'it has an attribute for', :max_bytes
16
+ it_behaves_like 'it has an attribute for', :max_attachments
17
+ it_behaves_like 'it has an attribute for', :force_subsscribe
18
+ it_behaves_like 'it has an attribute for', :tracking_type
19
+ it_behaves_like 'it has an attribute for', :rss_type
20
+ it_behaves_like 'it has an attribute for', :rss_articles
21
+ it_behaves_like 'it has an attribute for', :time_modified
22
+ it_behaves_like 'it has an attribute for', :warn_after
23
+ it_behaves_like 'it has an attribute for', :block_after
24
+ it_behaves_like 'it has an attribute for', :block_period
25
+ it_behaves_like 'it has an attribute for', :completion_discussions
26
+ it_behaves_like 'it has an attribute for', :completion_replies
27
+ it_behaves_like 'it has an attribute for', :completion_posts
28
+ it_behaves_like 'it has an attribute for', :visible
29
+
30
+ end