canvas_sync 0.22.15 → 0.22.16

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 (403) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -0
  3. data/Rakefile +0 -0
  4. data/app/controllers/canvas_sync/api/v1/health_check_controller.rb +0 -0
  5. data/app/models/canvas_sync/job_log.rb +0 -0
  6. data/app/models/canvas_sync/sync_batch.rb +0 -0
  7. data/config/initializers/apartment.rb +0 -0
  8. data/config/routes.rb +0 -0
  9. data/db/migrate/20170915210836_create_canvas_sync_job_log.rb +0 -0
  10. data/db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb +0 -0
  11. data/db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb +0 -0
  12. data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +0 -0
  13. data/db/migrate/20201030210836_add_full_sync_to_canvas_sync_sync_batch.rb +0 -0
  14. data/lib/canvas_sync/api_syncable.rb +0 -0
  15. data/lib/canvas_sync/batch_processor.rb +0 -0
  16. data/lib/canvas_sync/class_callback_executor.rb +0 -0
  17. data/lib/canvas_sync/concerns/ability_helper.rb +0 -0
  18. data/lib/canvas_sync/concerns/account/ancestry.rb +0 -0
  19. data/lib/canvas_sync/concerns/account/base.rb +0 -0
  20. data/lib/canvas_sync/concerns/api_syncable.rb +0 -0
  21. data/lib/canvas_sync/concerns/legacy_columns.rb +0 -0
  22. data/lib/canvas_sync/concerns/role/base.rb +0 -0
  23. data/lib/canvas_sync/config.rb +0 -0
  24. data/lib/canvas_sync/generators/install_generator.rb +0 -0
  25. data/lib/canvas_sync/generators/install_live_events_generator.rb +0 -0
  26. data/lib/canvas_sync/generators/templates/migrations/create_accounts.rb +0 -0
  27. data/lib/canvas_sync/generators/templates/migrations/create_admins.rb +0 -0
  28. data/lib/canvas_sync/generators/templates/migrations/create_assignment_groups.rb +0 -0
  29. data/lib/canvas_sync/generators/templates/migrations/create_assignments.rb +0 -0
  30. data/lib/canvas_sync/generators/templates/migrations/create_content_migrations.rb +0 -0
  31. data/lib/canvas_sync/generators/templates/migrations/create_context_module_items.rb +0 -0
  32. data/lib/canvas_sync/generators/templates/migrations/create_context_modules.rb +0 -0
  33. data/lib/canvas_sync/generators/templates/migrations/create_course_nicknames.rb +0 -0
  34. data/lib/canvas_sync/generators/templates/migrations/create_course_progresses.rb +0 -0
  35. data/lib/canvas_sync/generators/templates/migrations/create_courses.rb +0 -0
  36. data/lib/canvas_sync/generators/templates/migrations/create_grading_period_groups.rb +0 -0
  37. data/lib/canvas_sync/generators/templates/migrations/create_grading_periods.rb +0 -0
  38. data/lib/canvas_sync/generators/templates/migrations/create_group_memberships.rb +0 -0
  39. data/lib/canvas_sync/generators/templates/migrations/create_groups.rb +0 -0
  40. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb +0 -0
  41. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcomes.rb +0 -0
  42. data/lib/canvas_sync/generators/templates/migrations/create_pseudonyms.rb +0 -0
  43. data/lib/canvas_sync/generators/templates/migrations/create_roles.rb +0 -0
  44. data/lib/canvas_sync/generators/templates/migrations/create_rubric_assessments.rb +0 -0
  45. data/lib/canvas_sync/generators/templates/migrations/create_rubric_associations.rb +0 -0
  46. data/lib/canvas_sync/generators/templates/migrations/create_rubrics.rb +0 -0
  47. data/lib/canvas_sync/generators/templates/migrations/create_scores.rb +36 -0
  48. data/lib/canvas_sync/generators/templates/migrations/create_sections.rb +0 -0
  49. data/lib/canvas_sync/generators/templates/migrations/create_submissions.rb +0 -0
  50. data/lib/canvas_sync/generators/templates/migrations/create_terms.rb +0 -0
  51. data/lib/canvas_sync/generators/templates/migrations/create_user_observers.rb +0 -0
  52. data/lib/canvas_sync/generators/templates/migrations/create_users.rb +0 -0
  53. data/lib/canvas_sync/generators/templates/models/account.rb +0 -0
  54. data/lib/canvas_sync/generators/templates/models/admin.rb +0 -0
  55. data/lib/canvas_sync/generators/templates/models/assignment.rb +0 -0
  56. data/lib/canvas_sync/generators/templates/models/assignment_group.rb +0 -0
  57. data/lib/canvas_sync/generators/templates/models/content_migration.rb +0 -0
  58. data/lib/canvas_sync/generators/templates/models/context_module.rb +0 -0
  59. data/lib/canvas_sync/generators/templates/models/context_module_item.rb +0 -0
  60. data/lib/canvas_sync/generators/templates/models/course.rb +0 -0
  61. data/lib/canvas_sync/generators/templates/models/course_nickname.rb +0 -0
  62. data/lib/canvas_sync/generators/templates/models/enrollment.rb +0 -0
  63. data/lib/canvas_sync/generators/templates/models/grading_period.rb +0 -0
  64. data/lib/canvas_sync/generators/templates/models/grading_period_group.rb +0 -0
  65. data/lib/canvas_sync/generators/templates/models/group.rb +0 -0
  66. data/lib/canvas_sync/generators/templates/models/group_membership.rb +0 -0
  67. data/lib/canvas_sync/generators/templates/models/learning_outcome.rb +0 -0
  68. data/lib/canvas_sync/generators/templates/models/learning_outcome_result.rb +0 -0
  69. data/lib/canvas_sync/generators/templates/models/pseudonym.rb +0 -0
  70. data/lib/canvas_sync/generators/templates/models/role.rb +0 -0
  71. data/lib/canvas_sync/generators/templates/models/rubric.rb +0 -0
  72. data/lib/canvas_sync/generators/templates/models/rubric_assessment.rb +0 -0
  73. data/lib/canvas_sync/generators/templates/models/rubric_association.rb +0 -0
  74. data/lib/canvas_sync/generators/templates/models/score.rb +12 -0
  75. data/lib/canvas_sync/generators/templates/models/section.rb +0 -0
  76. data/lib/canvas_sync/generators/templates/models/submission.rb +0 -0
  77. data/lib/canvas_sync/generators/templates/models/term.rb +0 -0
  78. data/lib/canvas_sync/generators/templates/models/user.rb +0 -0
  79. data/lib/canvas_sync/generators/templates/models/user_observer.rb +0 -0
  80. data/lib/canvas_sync/generators/templates/services/live_events/assignment_event.rb +0 -0
  81. data/lib/canvas_sync/generators/templates/services/live_events/assignment_group_event.rb +0 -0
  82. data/lib/canvas_sync/generators/templates/services/live_events/course_event.rb +0 -0
  83. data/lib/canvas_sync/generators/templates/services/live_events/course_section_event.rb +0 -0
  84. data/lib/canvas_sync/generators/templates/services/live_events/enrollment_event.rb +0 -0
  85. data/lib/canvas_sync/generators/templates/services/live_events/grade_event.rb +0 -0
  86. data/lib/canvas_sync/generators/templates/services/live_events/module_event.rb +0 -0
  87. data/lib/canvas_sync/generators/templates/services/live_events/module_item_event.rb +0 -0
  88. data/lib/canvas_sync/generators/templates/services/live_events/submission_event.rb +0 -0
  89. data/lib/canvas_sync/generators/templates/services/live_events/syllabus_event.rb +0 -0
  90. data/lib/canvas_sync/generators/templates/services/live_events/user_event.rb +0 -0
  91. data/lib/canvas_sync/importers/legacy_importer.rb +0 -0
  92. data/lib/canvas_sync/job_batches/callback.rb +0 -0
  93. data/lib/canvas_sync/job_batches/compat/active_job.rb +0 -0
  94. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/css/styles.less +0 -0
  95. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/js/util.js +0 -0
  96. data/lib/canvas_sync/job_batches/compat/sidekiq/web/helpers.rb +0 -0
  97. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_batch_tree.erb +0 -0
  98. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_batches_table.erb +0 -0
  99. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_common.erb +0 -0
  100. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_jobs_table.erb +0 -0
  101. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_pagination.erb +0 -0
  102. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/batch.erb +0 -0
  103. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/batches.erb +0 -0
  104. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/pool.erb +0 -0
  105. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/pools.erb +0 -0
  106. data/lib/canvas_sync/job_batches/compat.rb +0 -0
  107. data/lib/canvas_sync/job_batches/context_hash.rb +0 -0
  108. data/lib/canvas_sync/job_batches/hier_batch_ids.lua +0 -0
  109. data/lib/canvas_sync/job_batches/jobs/base_job.rb +0 -0
  110. data/lib/canvas_sync/job_batches/jobs/serial_batch_job.rb +0 -0
  111. data/lib/canvas_sync/job_batches/pool.rb +0 -0
  112. data/lib/canvas_sync/job_batches/pool_refill.lua +0 -0
  113. data/lib/canvas_sync/job_batches/redis_model.rb +0 -0
  114. data/lib/canvas_sync/job_batches/redis_script.rb +0 -0
  115. data/lib/canvas_sync/job_batches/schedule_callback.lua +0 -0
  116. data/lib/canvas_sync/job_uniqueness/compat/active_job.rb +0 -0
  117. data/lib/canvas_sync/job_uniqueness/compat/sidekiq.rb +0 -0
  118. data/lib/canvas_sync/job_uniqueness/compat.rb +0 -0
  119. data/lib/canvas_sync/job_uniqueness/configuration.rb +0 -0
  120. data/lib/canvas_sync/job_uniqueness/job_uniqueness.rb +0 -0
  121. data/lib/canvas_sync/job_uniqueness/locksmith.rb +0 -0
  122. data/lib/canvas_sync/job_uniqueness/on_conflict/base.rb +0 -0
  123. data/lib/canvas_sync/job_uniqueness/on_conflict/log.rb +0 -0
  124. data/lib/canvas_sync/job_uniqueness/on_conflict/null_strategy.rb +0 -0
  125. data/lib/canvas_sync/job_uniqueness/on_conflict/raise.rb +0 -0
  126. data/lib/canvas_sync/job_uniqueness/on_conflict/reject.rb +0 -0
  127. data/lib/canvas_sync/job_uniqueness/on_conflict/reschedule.rb +0 -0
  128. data/lib/canvas_sync/job_uniqueness/on_conflict.rb +0 -0
  129. data/lib/canvas_sync/job_uniqueness/strategy/base.rb +0 -0
  130. data/lib/canvas_sync/job_uniqueness/strategy/until_and_while_executing.rb +0 -0
  131. data/lib/canvas_sync/job_uniqueness/strategy/until_executed.rb +0 -0
  132. data/lib/canvas_sync/job_uniqueness/strategy/until_executing.rb +0 -0
  133. data/lib/canvas_sync/job_uniqueness/strategy/until_expired.rb +0 -0
  134. data/lib/canvas_sync/job_uniqueness/strategy/while_executing.rb +0 -0
  135. data/lib/canvas_sync/job_uniqueness/strategy.rb +0 -0
  136. data/lib/canvas_sync/job_uniqueness/unique_job_common.rb +0 -0
  137. data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +0 -0
  138. data/lib/canvas_sync/jobs/canvas_process_waiter.rb +0 -0
  139. data/lib/canvas_sync/jobs/report_checker.rb +0 -0
  140. data/lib/canvas_sync/jobs/report_processor_job.rb +0 -0
  141. data/lib/canvas_sync/jobs/report_starter.rb +0 -0
  142. data/lib/canvas_sync/jobs/sync_accounts_job.rb +0 -0
  143. data/lib/canvas_sync/jobs/sync_admins_job.rb +0 -0
  144. data/lib/canvas_sync/jobs/sync_assignment_groups_job.rb +0 -0
  145. data/lib/canvas_sync/jobs/sync_assignments_job.rb +0 -0
  146. data/lib/canvas_sync/jobs/sync_content_migrations_job.rb +0 -0
  147. data/lib/canvas_sync/jobs/sync_context_module_items_job.rb +0 -0
  148. data/lib/canvas_sync/jobs/sync_context_modules_job.rb +0 -0
  149. data/lib/canvas_sync/jobs/sync_course_progresses_job.rb +0 -0
  150. data/lib/canvas_sync/jobs/sync_provisioning_report_job.rb +0 -0
  151. data/lib/canvas_sync/jobs/sync_roles_job.rb +5 -1
  152. data/lib/canvas_sync/jobs/sync_rubric_assessments_job.rb +0 -0
  153. data/lib/canvas_sync/jobs/sync_rubric_associations_job.rb +0 -0
  154. data/lib/canvas_sync/jobs/sync_rubrics_job.rb +0 -0
  155. data/lib/canvas_sync/jobs/sync_scores_job.rb +18 -0
  156. data/lib/canvas_sync/jobs/sync_simple_table_job.rb +0 -0
  157. data/lib/canvas_sync/jobs/sync_submissions_job.rb +0 -0
  158. data/lib/canvas_sync/jobs/sync_terms_job.rb +0 -0
  159. data/lib/canvas_sync/live_events/base_handler.rb +0 -0
  160. data/lib/canvas_sync/live_events.rb +0 -0
  161. data/lib/canvas_sync/misc_helper.rb +0 -0
  162. data/lib/canvas_sync/processors/assignment_groups_processor.rb +0 -0
  163. data/lib/canvas_sync/processors/assignments_processor.rb +0 -0
  164. data/lib/canvas_sync/processors/content_migrations_processor.rb +0 -0
  165. data/lib/canvas_sync/processors/context_module_items_processor.rb +0 -0
  166. data/lib/canvas_sync/processors/context_modules_processor.rb +0 -0
  167. data/lib/canvas_sync/processors/course_completion_report_processor.rb +0 -0
  168. data/lib/canvas_sync/processors/model_mappings.yml +46 -0
  169. data/lib/canvas_sync/processors/normal_processor.rb +0 -0
  170. data/lib/canvas_sync/processors/rubric_assessments_processor.rb +0 -0
  171. data/lib/canvas_sync/processors/rubric_associations_processor.rb +0 -0
  172. data/lib/canvas_sync/processors/rubrics_processor.rb +0 -0
  173. data/lib/canvas_sync/processors/submissions_processor.rb +0 -0
  174. data/lib/canvas_sync/record.rb +0 -0
  175. data/lib/canvas_sync/sidekiq_job.rb +0 -0
  176. data/lib/canvas_sync/version.rb +1 -1
  177. data/lib/canvas_sync.rb +4 -0
  178. data/spec/canvas_sync/canvas_sync_spec.rb +26 -0
  179. data/spec/canvas_sync/jobs/canvas_process_waiter_spec.rb +0 -0
  180. data/spec/canvas_sync/jobs/job_spec.rb +0 -0
  181. data/spec/canvas_sync/jobs/report_checker_spec.rb +0 -0
  182. data/spec/canvas_sync/jobs/report_processor_job_spec.rb +0 -0
  183. data/spec/canvas_sync/jobs/report_starter_spec.rb +0 -0
  184. data/spec/canvas_sync/jobs/sync_admins_job_spec.rb +0 -0
  185. data/spec/canvas_sync/jobs/sync_assignment_groups_job_spec.rb +0 -0
  186. data/spec/canvas_sync/jobs/sync_assignments_job_spec.rb +0 -0
  187. data/spec/canvas_sync/jobs/sync_content_migrations_job_spec.rb +0 -0
  188. data/spec/canvas_sync/jobs/sync_context_module_items_job_spec.rb +0 -0
  189. data/spec/canvas_sync/jobs/sync_context_modules_job_spec.rb +0 -0
  190. data/spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb +0 -0
  191. data/spec/canvas_sync/jobs/sync_roles_job_spec.rb +0 -0
  192. data/spec/canvas_sync/jobs/sync_scores_job_spec.rb +15 -0
  193. data/spec/canvas_sync/jobs/sync_simple_table_job_spec.rb +0 -0
  194. data/spec/canvas_sync/jobs/sync_submissions_job_spec.rb +0 -0
  195. data/spec/canvas_sync/jobs/sync_terms_job_spec.rb +0 -0
  196. data/spec/canvas_sync/live_events/live_event_sync_spec.rb +0 -0
  197. data/spec/canvas_sync/live_events/live_events_controller_spec.rb +0 -0
  198. data/spec/canvas_sync/live_events/process_event_job_spec.rb +0 -0
  199. data/spec/canvas_sync/misc_helper_spec.rb +0 -0
  200. data/spec/canvas_sync/models/accounts_spec.rb +0 -0
  201. data/spec/canvas_sync/models/admins_spec.rb +0 -0
  202. data/spec/canvas_sync/models/assignment_group_spec.rb +0 -0
  203. data/spec/canvas_sync/models/assignment_spec.rb +0 -0
  204. data/spec/canvas_sync/models/context_module_item_spec.rb +0 -0
  205. data/spec/canvas_sync/models/context_module_spec.rb +0 -0
  206. data/spec/canvas_sync/models/course_spec.rb +0 -0
  207. data/spec/canvas_sync/models/enrollment_spec.rb +0 -0
  208. data/spec/canvas_sync/models/group_membership_spec.rb +0 -0
  209. data/spec/canvas_sync/models/group_spec.rb +0 -0
  210. data/spec/canvas_sync/models/roles_spec.rb +0 -0
  211. data/spec/canvas_sync/models/section_spec.rb +0 -0
  212. data/spec/canvas_sync/models/submission_spec.rb +0 -0
  213. data/spec/canvas_sync/models/term_spec.rb +0 -0
  214. data/spec/canvas_sync/models/user_spec.rb +0 -0
  215. data/spec/canvas_sync/processors/assignment_groups_processor_spec.rb +0 -0
  216. data/spec/canvas_sync/processors/assignments_processor_spec.rb +0 -0
  217. data/spec/canvas_sync/processors/content_migrations_processor_spec.rb +0 -0
  218. data/spec/canvas_sync/processors/context_module_items_processor_spec.rb +0 -0
  219. data/spec/canvas_sync/processors/context_modules_processor_spec.rb +0 -0
  220. data/spec/canvas_sync/processors/course_completion_report_processor_spec.rb +0 -0
  221. data/spec/canvas_sync/processors/normal_processor_spec.rb +18 -0
  222. data/spec/canvas_sync/processors/rubric_assessments_spec.rb +0 -0
  223. data/spec/canvas_sync/processors/rubric_associations_spec.rb +0 -0
  224. data/spec/canvas_sync/processors/rubrics_processor_spec.rb +0 -0
  225. data/spec/canvas_sync/processors/submissions_processor_spec.rb +0 -0
  226. data/spec/canvas_sync/services/module_event_spec.rb +0 -0
  227. data/spec/canvas_sync/services/module_item_event_spec.rb +0 -0
  228. data/spec/dummy/README.rdoc +0 -0
  229. data/spec/dummy/Rakefile +0 -0
  230. data/spec/dummy/app/models/account.rb +0 -0
  231. data/spec/dummy/app/models/admin.rb +0 -0
  232. data/spec/dummy/app/models/application_record.rb +0 -0
  233. data/spec/dummy/app/models/assignment.rb +0 -0
  234. data/spec/dummy/app/models/assignment_group.rb +0 -0
  235. data/spec/dummy/app/models/content_migration.rb +0 -0
  236. data/spec/dummy/app/models/context_module.rb +7 -0
  237. data/spec/dummy/app/models/context_module_item.rb +0 -0
  238. data/spec/dummy/app/models/course.rb +0 -0
  239. data/spec/dummy/app/models/course_nickname.rb +0 -0
  240. data/spec/dummy/app/models/enrollment.rb +0 -0
  241. data/spec/dummy/app/models/grading_period.rb +0 -0
  242. data/spec/dummy/app/models/grading_period_group.rb +0 -0
  243. data/spec/dummy/app/models/group.rb +0 -0
  244. data/spec/dummy/app/models/group_membership.rb +0 -0
  245. data/spec/dummy/app/models/learning_outcome.rb +0 -0
  246. data/spec/dummy/app/models/pseudonym.rb +0 -0
  247. data/spec/dummy/app/models/role.rb +0 -0
  248. data/spec/dummy/app/models/score.rb +18 -0
  249. data/spec/dummy/app/models/section.rb +0 -0
  250. data/spec/dummy/app/models/submission.rb +0 -0
  251. data/spec/dummy/app/models/term.rb +0 -0
  252. data/spec/dummy/app/models/user_observer.rb +0 -0
  253. data/spec/dummy/app/services/live_events/assignment_created_event.rb +0 -0
  254. data/spec/dummy/app/services/live_events/assignment_event.rb +0 -0
  255. data/spec/dummy/app/services/live_events/assignment_updated_event.rb +0 -0
  256. data/spec/dummy/app/services/live_events/base_event.rb +0 -0
  257. data/spec/dummy/app/services/live_events/course_created_event.rb +0 -0
  258. data/spec/dummy/app/services/live_events/course_event.rb +0 -0
  259. data/spec/dummy/app/services/live_events/course_section_created_event.rb +0 -0
  260. data/spec/dummy/app/services/live_events/course_section_event.rb +0 -0
  261. data/spec/dummy/app/services/live_events/course_section_updated_event.rb +0 -0
  262. data/spec/dummy/app/services/live_events/course_updated_event.rb +0 -0
  263. data/spec/dummy/app/services/live_events/enrollment_created_event.rb +0 -0
  264. data/spec/dummy/app/services/live_events/enrollment_event.rb +0 -0
  265. data/spec/dummy/app/services/live_events/enrollment_updated_event.rb +0 -0
  266. data/spec/dummy/app/services/live_events/grade_changed_event.rb +0 -0
  267. data/spec/dummy/app/services/live_events/grade_event.rb +0 -0
  268. data/spec/dummy/app/services/live_events/module_created_event.rb +0 -0
  269. data/spec/dummy/app/services/live_events/module_event.rb +0 -0
  270. data/spec/dummy/app/services/live_events/module_item_created_event.rb +0 -0
  271. data/spec/dummy/app/services/live_events/module_item_event.rb +0 -0
  272. data/spec/dummy/app/services/live_events/module_item_updated_event.rb +0 -0
  273. data/spec/dummy/app/services/live_events/module_updated_event.rb +0 -0
  274. data/spec/dummy/app/services/live_events/submission_created_event.rb +0 -0
  275. data/spec/dummy/app/services/live_events/submission_event.rb +0 -0
  276. data/spec/dummy/app/services/live_events/submission_updated_event.rb +0 -0
  277. data/spec/dummy/app/services/live_events/syllabus_event.rb +0 -0
  278. data/spec/dummy/app/services/live_events/syllabus_updated_event.rb +0 -0
  279. data/spec/dummy/app/services/live_events/user_created_event.rb +0 -0
  280. data/spec/dummy/app/services/live_events/user_event.rb +0 -0
  281. data/spec/dummy/app/services/live_events/user_updated_event.rb +0 -0
  282. data/spec/dummy/config/boot.rb +0 -0
  283. data/spec/dummy/config/database.yml +0 -0
  284. data/spec/dummy/config/environment.rb +0 -0
  285. data/spec/dummy/config/environments/development.rb +0 -0
  286. data/spec/dummy/config/environments/test.rb +0 -0
  287. data/spec/dummy/config/initializers/assets.rb +0 -0
  288. data/spec/dummy/config/initializers/session_store.rb +0 -0
  289. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
  290. data/spec/dummy/config/routes.rb +0 -0
  291. data/spec/dummy/config/secrets.yml +0 -0
  292. data/spec/dummy/config.ru +0 -0
  293. data/spec/dummy/db/migrate/20190702203621_create_courses.rb +0 -0
  294. data/spec/dummy/db/migrate/20190702203622_create_accounts.rb +0 -0
  295. data/spec/dummy/db/migrate/20190702203623_create_terms.rb +0 -0
  296. data/spec/dummy/db/migrate/20190702203625_create_sections.rb +0 -0
  297. data/spec/dummy/db/migrate/20190702203626_create_assignments.rb +0 -0
  298. data/spec/dummy/db/migrate/20190702203627_create_submissions.rb +0 -0
  299. data/spec/dummy/db/migrate/20190702203630_create_assignment_groups.rb +0 -0
  300. data/spec/dummy/db/migrate/20190702203631_create_context_modules.rb +0 -0
  301. data/spec/dummy/db/migrate/20190702203632_create_context_module_items.rb +0 -0
  302. data/spec/dummy/db/migrate/20190927204545_create_roles.rb +0 -0
  303. data/spec/dummy/db/migrate/20190927204546_create_admins.rb +0 -0
  304. data/spec/dummy/db/migrate/20200415171620_create_groups.rb +0 -0
  305. data/spec/dummy/db/migrate/20200416214248_create_group_memberships.rb +0 -0
  306. data/spec/dummy/db/migrate/20201016181346_create_pseudonyms.rb +0 -0
  307. data/spec/dummy/db/migrate/20210907233329_create_user_observers.rb +0 -0
  308. data/spec/dummy/db/migrate/20210907233330_create_grading_periods.rb +0 -0
  309. data/spec/dummy/db/migrate/20211001184920_create_grading_period_groups.rb +0 -0
  310. data/spec/dummy/db/migrate/20220308072643_create_content_migrations.rb +0 -0
  311. data/spec/dummy/db/migrate/20220712210559_create_learning_outcomes.rb +0 -0
  312. data/spec/dummy/db/migrate/20220926221926_create_users.rb +0 -0
  313. data/spec/dummy/db/migrate/20240510094100_create_rubric_associations.rb +0 -0
  314. data/spec/dummy/db/migrate/20240510101100_create_rubric_assessments.rb +0 -0
  315. data/spec/dummy/db/migrate/20240523101010_create_learning_outcome_results.rb +0 -0
  316. data/spec/dummy/db/migrate/20240828161300_create_course_progresses.rb +0 -0
  317. data/spec/dummy/db/migrate/20250626194330_create_scores.rb +42 -0
  318. data/spec/dummy/db/schema.rb +25 -1
  319. data/spec/factories/account_factory.rb +0 -0
  320. data/spec/factories/admin_factory.rb +0 -0
  321. data/spec/factories/assignment_factory.rb +0 -0
  322. data/spec/factories/assignment_group_factory.rb +0 -0
  323. data/spec/factories/context_module_factory.rb +0 -0
  324. data/spec/factories/context_module_item_factory.rb +0 -0
  325. data/spec/factories/course_factory.rb +0 -0
  326. data/spec/factories/enrollment_factory.rb +0 -0
  327. data/spec/factories/group_factory.rb +0 -0
  328. data/spec/factories/group_membership_factory.rb +0 -0
  329. data/spec/factories/role_factory.rb +0 -0
  330. data/spec/factories/score_factory.rb +5 -0
  331. data/spec/factories/section_factory.rb +0 -0
  332. data/spec/factories/submission_factory.rb +0 -0
  333. data/spec/factories/term_factory.rb +0 -0
  334. data/spec/factories/user_factory.rb +0 -0
  335. data/spec/job_batching/batch_spec.rb +0 -0
  336. data/spec/job_batching/callback_spec.rb +0 -0
  337. data/spec/job_batching/compat/active_job_spec.rb +0 -0
  338. data/spec/job_batching/compat/sidekiq_spec.rb +0 -0
  339. data/spec/job_batching/context_hash_spec.rb +0 -0
  340. data/spec/job_batching/flow_spec.rb +0 -0
  341. data/spec/job_batching/integration/fail_then_succeed.rb +0 -0
  342. data/spec/job_batching/integration/integration.rb +0 -0
  343. data/spec/job_batching/integration/nested.rb +0 -0
  344. data/spec/job_batching/integration/simple.rb +0 -0
  345. data/spec/job_batching/integration/workflow.rb +0 -0
  346. data/spec/job_batching/integration_helper.rb +0 -0
  347. data/spec/job_batching/pool_spec.rb +0 -0
  348. data/spec/job_batching/status_spec.rb +0 -0
  349. data/spec/job_batching/support/base_job.rb +0 -0
  350. data/spec/job_batching/support/sample_callback.rb +0 -0
  351. data/spec/job_uniqueness/compat/active_job_spec.rb +0 -0
  352. data/spec/job_uniqueness/compat/sidekiq_spec.rb +0 -0
  353. data/spec/job_uniqueness/lock_context_spec.rb +0 -0
  354. data/spec/job_uniqueness/on_conflict/log_spec.rb +0 -0
  355. data/spec/job_uniqueness/on_conflict/raise_spec.rb +0 -0
  356. data/spec/job_uniqueness/on_conflict/reschedule_spec.rb +0 -0
  357. data/spec/job_uniqueness/on_conflict_spec.rb +0 -0
  358. data/spec/job_uniqueness/spec_helper.rb +0 -0
  359. data/spec/job_uniqueness/strategy/base_spec.rb +0 -0
  360. data/spec/job_uniqueness/strategy/until_and_while_executing_spec.rb +0 -0
  361. data/spec/job_uniqueness/strategy/until_executed_spec.rb +0 -0
  362. data/spec/job_uniqueness/strategy/until_executing_spec.rb +0 -0
  363. data/spec/job_uniqueness/strategy/until_expired_spec.rb +0 -0
  364. data/spec/job_uniqueness/strategy/while_executing_spec.rb +0 -0
  365. data/spec/job_uniqueness/support/lock_strategy.rb +0 -0
  366. data/spec/job_uniqueness/support/on_conflict.rb +0 -0
  367. data/spec/job_uniqueness/support/test_worker.rb +0 -0
  368. data/spec/job_uniqueness/unique_job_common_spec.rb +0 -0
  369. data/spec/support/fake_canvas.rb +0 -0
  370. data/spec/support/fixtures/canvas_responses/admins.json +0 -0
  371. data/spec/support/fixtures/canvas_responses/module.json +0 -0
  372. data/spec/support/fixtures/canvas_responses/module_item.json +0 -0
  373. data/spec/support/fixtures/canvas_responses/roles.json +0 -0
  374. data/spec/support/fixtures/canvas_responses/terms.json +0 -0
  375. data/spec/support/fixtures/reports/assignment_groups.csv +0 -0
  376. data/spec/support/fixtures/reports/assignments.csv +0 -0
  377. data/spec/support/fixtures/reports/content_migrations.csv +0 -0
  378. data/spec/support/fixtures/reports/context_module_items.csv +0 -0
  379. data/spec/support/fixtures/reports/context_modules.csv +0 -0
  380. data/spec/support/fixtures/reports/course_nicknames.csv +0 -0
  381. data/spec/support/fixtures/reports/course_progresses.csv +0 -0
  382. data/spec/support/fixtures/reports/course_progresses_conflict.csv +0 -0
  383. data/spec/support/fixtures/reports/courses.csv +0 -0
  384. data/spec/support/fixtures/reports/enrollments.csv +0 -0
  385. data/spec/support/fixtures/reports/grading_period_groups.csv +0 -0
  386. data/spec/support/fixtures/reports/grading_periods.csv +0 -0
  387. data/spec/support/fixtures/reports/group_memberships.csv +0 -0
  388. data/spec/support/fixtures/reports/groups.csv +0 -0
  389. data/spec/support/fixtures/reports/learning_outcome_results.csv +0 -0
  390. data/spec/support/fixtures/reports/learning_outcomes.csv +0 -0
  391. data/spec/support/fixtures/reports/provisioning_csv +0 -0
  392. data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +0 -0
  393. data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +0 -0
  394. data/spec/support/fixtures/reports/rubric_assessments.csv +0 -0
  395. data/spec/support/fixtures/reports/rubric_associations.csv +0 -0
  396. data/spec/support/fixtures/reports/rubrics.csv +0 -0
  397. data/spec/support/fixtures/reports/scores.csv +3 -0
  398. data/spec/support/fixtures/reports/sections.csv +0 -0
  399. data/spec/support/fixtures/reports/submissions.csv +0 -0
  400. data/spec/support/fixtures/reports/user_observers.csv +0 -0
  401. data/spec/support/fixtures/reports/users.csv +0 -0
  402. data/spec/support/fixtures/reports/xlist.csv +0 -0
  403. metadata +16 -3
@@ -1,3 +1,3 @@
1
1
  module CanvasSync
2
- VERSION = "0.22.15".freeze
2
+ VERSION = "0.22.16".freeze
3
3
  end
data/lib/canvas_sync.rb CHANGED
@@ -55,6 +55,7 @@ module CanvasSync
55
55
  rubric_assessments
56
56
  course_progresses
57
57
  assignment_overrides
58
+ scores
58
59
  ].freeze
59
60
 
60
61
  SUPPORTED_TERM_SCOPE_MODELS = %w[
@@ -68,6 +69,7 @@ module CanvasSync
68
69
  rubric_assessments
69
70
  course_progresses
70
71
  assignment_overrides
72
+ scores
71
73
  ].freeze
72
74
 
73
75
  DEFAULT_TERM_SCOPE_MODELS = %w[
@@ -81,6 +83,7 @@ module CanvasSync
81
83
  rubric_assessments
82
84
  course_progresses
83
85
  assignment_overrides
86
+ scores
84
87
  ].freeze
85
88
 
86
89
  SUPPORTED_LIVE_EVENTS = %w[
@@ -177,6 +180,7 @@ module CanvasSync
177
180
  rubrics: CanvasSync::Jobs::SyncRubricsJob,
178
181
  rubric_associations: CanvasSync::Jobs::SyncRubricAssociationsJob,
179
182
  rubric_assessments: CanvasSync::Jobs::SyncRubricAssessmentsJob,
183
+ scores: CanvasSync::Jobs::SyncScoresJob,
180
184
  }.with_indifferent_access
181
185
 
182
186
  root_chain = base_canvas_sync_chain(**kwargs, globals: options[:global] || kwargs[:globals])
@@ -168,6 +168,32 @@ RSpec.describe CanvasSync do
168
168
  :kwargs => {:batch_genre=>nil, :full_sync_every=>nil, :legacy_support=>false, :updated_after=>nil},
169
169
  })
170
170
  end
171
+
172
+ it 'passes along options to the roles job' do
173
+ chain = CanvasSync.default_provisioning_report_chain(['roles', 'courses'], options: { roles: { show_inherited: true } } )
174
+ expect(chain.normalize!).to eq({
175
+ :job => "CanvasSync::Jobs::BeginSyncChainJob",
176
+ :args => [[
177
+ {
178
+ :job=>"CanvasSync::JobBatches::ConcurrentBatchJob",
179
+ :args=>[[
180
+ {:job=>"CanvasSync::Jobs::SyncRolesJob", :options=>{:show_inherited=>true}},
181
+ {
182
+ :job=>"CanvasSync::Jobs::SyncTermsJob",
183
+ :args=>[],
184
+ :kwargs=>{
185
+ :sub_jobs=>[{:job=>"CanvasSync::Jobs::SyncProvisioningReportJob", :options=>{:models=>["courses"]}}],
186
+ :term_scope=>nil,
187
+ }
188
+ }
189
+ ]],
190
+ :kwargs=>{}
191
+ }
192
+ ]],
193
+ :kwargs => {:batch_genre=>nil, :full_sync_every=>nil, :legacy_support=>false, :updated_after=>nil},
194
+ })
195
+ end
196
+
171
197
  end
172
198
 
173
199
  context 'we are syncing admins with a term scope' do
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe CanvasSync::Jobs::SyncScoresJob do
4
+ describe '#perform' do
5
+ it "enqueues a ReportStarter for the proserv_assignment_export_csv for all terms" do
6
+ expect_any_instance_of(Bearcat::Client).to receive(:start_report)
7
+ .with("self", "proserv_scores_data_csv", { parameters: {} })
8
+ .and_return("id" => 1)
9
+
10
+ expect(CanvasSync::Jobs::ReportChecker).to receive(:set).and_call_original
11
+
12
+ CanvasSync::Jobs::SyncScoresJob.perform_now({})
13
+ end
14
+ end
15
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -23,5 +23,23 @@ RSpec.describe CanvasSync::Processors::NormalProcessor do
23
23
  )
24
24
  }.to change { Course.count }.by(2)
25
25
  end
26
+
27
+ context 'scores' do
28
+ it 'inserts scores' do
29
+ expect {
30
+ subject.process(
31
+ "spec/support/fixtures/reports/scores.csv",
32
+ {
33
+ report_name: 'proserv_scores_data_csv',
34
+ model: 'scores',
35
+ mapping: 'scores',
36
+ klass: 'Score',
37
+ term_scope: 'active',
38
+ },
39
+ 1
40
+ )
41
+ }.to change { Score.count }.by(2)
42
+ end
43
+ end
26
44
  end
27
45
  end
File without changes
File without changes
File without changes
data/spec/dummy/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -12,7 +12,14 @@
12
12
  class ContextModule < ApplicationRecord
13
13
  include CanvasSync::Record
14
14
  include CanvasSync::Concerns::ApiSyncable
15
+
15
16
  # include CanvasSync::Concerns::LiveEventSync
17
+ # live_events_config event_prefix: :module
18
+ # def process_live_event(event_type, payload, metadata)
19
+ # self.canvas_context_id = payload['context_id']
20
+ # self.canvas_context_type = payload['context_type']
21
+ # super
22
+ # end
16
23
 
17
24
  canvas_sync_features :defaults
18
25
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,18 @@
1
+ # #
2
+ # AUTO GENERATED MODEL
3
+ # This model was auto generated by the CanvasSync Gem.
4
+ # You can customize it as needed, but make sure you test
5
+ # any changes you make to the auto generated methods.
6
+ #
7
+
8
+
9
+ class Score < ApplicationRecord
10
+ include CanvasSync::Record
11
+
12
+ canvas_sync_features :defaults
13
+
14
+ validates :canvas_id, uniqueness: true, presence: true
15
+ belongs_to :enrollment, primary_key: :canvas_id, foreign_key: :canvas_enrollment_id, optional: true
16
+ belongs_to :assignment_group, primary_key: :canvas_id, foreign_key: :canvas_assignment_group_id, optional: true
17
+ belongs_to :grading_period, primary_key: :canvas_id, foreign_key: :canvas_grading_period_id, optional: true
18
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/spec/dummy/config.ru CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,42 @@
1
+ # #
2
+ # AUTO GENERATED MIGRATION
3
+ # This migration was auto generated by the CanvasSync Gem.
4
+ # You can add new columns to this table, but removing or
5
+ # re-naming ones created here may break Canvas Syncing.
6
+ #
7
+
8
+
9
+ class CreateScores < ActiveRecord::Migration[5.1]
10
+ def change
11
+ create_table :scores do |t|
12
+ t.bigint :canvas_id, null: false
13
+ t.bigint :canvas_enrollment_id, null: false
14
+ t.bigint :canvas_assignment_group_id
15
+ t.bigint :canvas_grading_period_id
16
+ t.float :current_score
17
+ t.float :unposted_current_score
18
+ t.string :workflow_state, default: :active, null: false, limit: 255
19
+ t.float :final_score
20
+ t.boolean :course_score, default: false, null: false
21
+ t.float :unposted_final_score
22
+ t.float :current_points
23
+ t.float :unposted_current_points
24
+ t.float :final_points
25
+ t.float :unposted_final_points
26
+ t.float :override_score
27
+
28
+ t.timestamps
29
+ end
30
+
31
+ add_index :scores, :canvas_id, unique: true
32
+ add_index :scores, :canvas_enrollment_id, unique: true, where: 'course_score'
33
+ add_index :scores, [:canvas_enrollment_id, :canvas_assignment_group_id],
34
+ unique: true,
35
+ where: 'canvas_assignment_group_id IS NOT NULL',
36
+ name: 'index_scores_on_canvas_enrollment_id_and_assignment_group_id'
37
+ add_index :scores, [:canvas_enrollment_id, :canvas_grading_period_id],
38
+ unique: true,
39
+ where: 'canvas_grading_period_id IS NOT NULL',
40
+ name: 'index_scores_on_canvas_enrollment_id_and_grading_period_id'
41
+ end
42
+ end
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # It's strongly recommended that you check this file into your version control system.
12
12
 
13
- ActiveRecord::Schema[7.1].define(version: 2025_03_19_194135) do
13
+ ActiveRecord::Schema[7.1].define(version: 2025_06_26_194330) do
14
14
  # These are extensions that must be enabled in order to support this database
15
15
  enable_extension "plpgsql"
16
16
 
@@ -462,6 +462,30 @@ ActiveRecord::Schema[7.1].define(version: 2025_03_19_194135) do
462
462
  t.index ["canvas_user_id"], name: "index_rubrics_on_canvas_user_id"
463
463
  end
464
464
 
465
+ create_table "scores", force: :cascade do |t|
466
+ t.bigint "canvas_id", null: false
467
+ t.bigint "canvas_enrollment_id", null: false
468
+ t.bigint "canvas_assignment_group_id"
469
+ t.bigint "canvas_grading_period_id"
470
+ t.float "current_score"
471
+ t.float "unposted_current_score"
472
+ t.string "workflow_state", limit: 255, default: "active", null: false
473
+ t.float "final_score"
474
+ t.boolean "course_score", default: false, null: false
475
+ t.float "unposted_final_score"
476
+ t.float "current_points"
477
+ t.float "unposted_current_points"
478
+ t.float "final_points"
479
+ t.float "unposted_final_points"
480
+ t.float "override_score"
481
+ t.datetime "created_at", precision: nil, null: false
482
+ t.datetime "updated_at", precision: nil, null: false
483
+ t.index ["canvas_enrollment_id", "canvas_assignment_group_id"], name: "index_scores_on_canvas_enrollment_id_and_assignment_group_id", unique: true, where: "(canvas_assignment_group_id IS NOT NULL)"
484
+ t.index ["canvas_enrollment_id", "canvas_grading_period_id"], name: "index_scores_on_canvas_enrollment_id_and_grading_period_id", unique: true, where: "(canvas_grading_period_id IS NOT NULL)"
485
+ t.index ["canvas_enrollment_id"], name: "index_scores_on_canvas_enrollment_id", unique: true, where: "course_score"
486
+ t.index ["canvas_id"], name: "index_scores_on_canvas_id", unique: true
487
+ end
488
+
465
489
  create_table "sections", force: :cascade do |t|
466
490
  t.bigint "canvas_id", null: false
467
491
  t.string "sis_id"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :score do
3
+ sequence(:canvas_id) { |n| n }
4
+ end
5
+ end
File without changes