canvas_sync 0.27.12 → 0.27.14

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 (234) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/canvas_sync/api/v1/health_check_controller.rb +0 -0
  3. data/app/models/canvas_sync/job_log.rb +0 -0
  4. data/app/models/canvas_sync/sync_batch.rb +0 -0
  5. data/config/initializers/apartment.rb +0 -0
  6. data/config/routes.rb +0 -0
  7. data/db/migrate/20170915210836_create_canvas_sync_job_log.rb +0 -0
  8. data/db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb +0 -0
  9. data/db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb +0 -0
  10. data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +0 -0
  11. data/db/migrate/20201030210836_add_full_sync_to_canvas_sync_sync_batch.rb +0 -0
  12. data/lib/canvas_sync/api_syncable.rb +0 -0
  13. data/lib/canvas_sync/batch_processor.rb +0 -0
  14. data/lib/canvas_sync/class_callback_executor.rb +0 -0
  15. data/lib/canvas_sync/concerns/ability_helper.rb +43 -2
  16. data/lib/canvas_sync/concerns/account/ancestry.rb +0 -0
  17. data/lib/canvas_sync/concerns/account/base.rb +0 -0
  18. data/lib/canvas_sync/concerns/api_syncable.rb +0 -0
  19. data/lib/canvas_sync/concerns/canvas_id_as_primary.rb +0 -0
  20. data/lib/canvas_sync/concerns/jit_syncing.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/generators/install_generator.rb +0 -0
  24. data/lib/canvas_sync/generators/install_live_events_generator.rb +0 -0
  25. data/lib/canvas_sync/generators/templates/migrations/create_accounts.rb +0 -0
  26. data/lib/canvas_sync/generators/templates/migrations/create_admins.rb +0 -0
  27. data/lib/canvas_sync/generators/templates/migrations/create_assignment_groups.rb +0 -0
  28. data/lib/canvas_sync/generators/templates/migrations/create_assignments.rb +0 -0
  29. data/lib/canvas_sync/generators/templates/migrations/create_content_migrations.rb +0 -0
  30. data/lib/canvas_sync/generators/templates/migrations/create_context_module_items.rb +0 -0
  31. data/lib/canvas_sync/generators/templates/migrations/create_context_modules.rb +0 -0
  32. data/lib/canvas_sync/generators/templates/migrations/create_course_nicknames.rb +0 -0
  33. data/lib/canvas_sync/generators/templates/migrations/create_course_progresses.rb +0 -0
  34. data/lib/canvas_sync/generators/templates/migrations/create_grading_period_groups.rb +0 -0
  35. data/lib/canvas_sync/generators/templates/migrations/create_grading_periods.rb +0 -0
  36. data/lib/canvas_sync/generators/templates/migrations/create_group_memberships.rb +0 -0
  37. data/lib/canvas_sync/generators/templates/migrations/create_groups.rb +0 -0
  38. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb +0 -0
  39. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcomes.rb +0 -0
  40. data/lib/canvas_sync/generators/templates/migrations/create_pseudonyms.rb +0 -0
  41. data/lib/canvas_sync/generators/templates/migrations/create_rubric_assessments.rb +0 -0
  42. data/lib/canvas_sync/generators/templates/migrations/create_rubric_associations.rb +0 -0
  43. data/lib/canvas_sync/generators/templates/migrations/create_rubrics.rb +0 -0
  44. data/lib/canvas_sync/generators/templates/migrations/create_sections.rb +0 -0
  45. data/lib/canvas_sync/generators/templates/migrations/create_submissions.rb +0 -0
  46. data/lib/canvas_sync/generators/templates/migrations/create_terms.rb +0 -0
  47. data/lib/canvas_sync/generators/templates/migrations/create_user_observers.rb +0 -0
  48. data/lib/canvas_sync/generators/templates/migrations/create_users.rb +0 -0
  49. data/lib/canvas_sync/generators/templates/models/content_migration.rb +0 -0
  50. data/lib/canvas_sync/generators/templates/models/course_nickname.rb +0 -0
  51. data/lib/canvas_sync/generators/templates/models/rubric.rb +0 -0
  52. data/lib/canvas_sync/generators/templates/models/rubric_assessment.rb +0 -0
  53. data/lib/canvas_sync/generators/templates/models/rubric_association.rb +0 -0
  54. data/lib/canvas_sync/generators/templates/services/live_events/assignment_event.rb +0 -0
  55. data/lib/canvas_sync/generators/templates/services/live_events/assignment_group_event.rb +0 -0
  56. data/lib/canvas_sync/generators/templates/services/live_events/course_event.rb +0 -0
  57. data/lib/canvas_sync/generators/templates/services/live_events/course_section_event.rb +0 -0
  58. data/lib/canvas_sync/generators/templates/services/live_events/enrollment_event.rb +0 -0
  59. data/lib/canvas_sync/generators/templates/services/live_events/grade_event.rb +0 -0
  60. data/lib/canvas_sync/generators/templates/services/live_events/module_event.rb +0 -0
  61. data/lib/canvas_sync/generators/templates/services/live_events/module_item_event.rb +0 -0
  62. data/lib/canvas_sync/generators/templates/services/live_events/submission_event.rb +0 -0
  63. data/lib/canvas_sync/generators/templates/services/live_events/syllabus_event.rb +0 -0
  64. data/lib/canvas_sync/generators/templates/services/live_events/user_event.rb +0 -0
  65. data/lib/canvas_sync/importers/legacy_importer.rb +0 -0
  66. data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +0 -0
  67. data/lib/canvas_sync/jobs/canvas_process_waiter.rb +0 -0
  68. data/lib/canvas_sync/jobs/report_sync_task.rb +6 -3
  69. data/lib/canvas_sync/jobs/sync_admins_job.rb +0 -0
  70. data/lib/canvas_sync/jobs/sync_assignment_groups_job.rb +0 -0
  71. data/lib/canvas_sync/jobs/sync_assignments_job.rb +0 -0
  72. data/lib/canvas_sync/jobs/sync_content_migrations_job.rb +0 -0
  73. data/lib/canvas_sync/jobs/sync_context_module_items_job.rb +0 -0
  74. data/lib/canvas_sync/jobs/sync_context_modules_job.rb +0 -0
  75. data/lib/canvas_sync/jobs/sync_rubrics_job.rb +0 -0
  76. data/lib/canvas_sync/jobs/sync_simple_table_job.rb +0 -0
  77. data/lib/canvas_sync/live_events/base_handler.rb +0 -0
  78. data/lib/canvas_sync/live_events.rb +0 -0
  79. data/lib/canvas_sync/misc_helper.rb +0 -0
  80. data/lib/canvas_sync/processors/normal_processor.rb +0 -0
  81. data/lib/canvas_sync/sidekiq_job.rb +0 -0
  82. data/lib/canvas_sync/version.rb +1 -1
  83. data/spec/canvas_sync/concerns/ability_helper_spec.rb +165 -0
  84. data/spec/canvas_sync/jobs/canvas_process_waiter_spec.rb +0 -0
  85. data/spec/canvas_sync/jobs/report_starter_spec.rb +0 -0
  86. data/spec/canvas_sync/jobs/report_sync_task_spec.rb +56 -0
  87. data/spec/canvas_sync/jobs/sync_admins_job_spec.rb +0 -0
  88. data/spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb +0 -0
  89. data/spec/canvas_sync/jobs/sync_roles_job_spec.rb +0 -0
  90. data/spec/canvas_sync/jobs/sync_simple_table_job_spec.rb +0 -0
  91. data/spec/canvas_sync/jobs/sync_terms_job_spec.rb +0 -0
  92. data/spec/canvas_sync/live_events/live_event_sync_spec.rb +0 -0
  93. data/spec/canvas_sync/live_events/live_events_controller_spec.rb +0 -0
  94. data/spec/canvas_sync/misc_helper_spec.rb +0 -0
  95. data/spec/canvas_sync/models/accounts_spec.rb +0 -0
  96. data/spec/canvas_sync/models/admins_spec.rb +0 -0
  97. data/spec/canvas_sync/models/assignment_group_spec.rb +0 -0
  98. data/spec/canvas_sync/models/assignment_spec.rb +0 -0
  99. data/spec/canvas_sync/models/context_module_item_spec.rb +0 -0
  100. data/spec/canvas_sync/models/context_module_spec.rb +0 -0
  101. data/spec/canvas_sync/models/course_spec.rb +0 -0
  102. data/spec/canvas_sync/models/enrollment_spec.rb +0 -0
  103. data/spec/canvas_sync/models/group_membership_spec.rb +0 -0
  104. data/spec/canvas_sync/models/group_spec.rb +0 -0
  105. data/spec/canvas_sync/models/roles_spec.rb +0 -0
  106. data/spec/canvas_sync/models/section_spec.rb +0 -0
  107. data/spec/canvas_sync/models/submission_spec.rb +0 -0
  108. data/spec/canvas_sync/models/term_spec.rb +0 -0
  109. data/spec/canvas_sync/models/user_spec.rb +0 -0
  110. data/spec/canvas_sync/processors/assignment_groups_processor_spec.rb +0 -0
  111. data/spec/canvas_sync/processors/assignments_processor_spec.rb +0 -0
  112. data/spec/canvas_sync/processors/content_migrations_processor_spec.rb +0 -0
  113. data/spec/canvas_sync/processors/context_module_items_processor_spec.rb +0 -0
  114. data/spec/canvas_sync/processors/context_modules_processor_spec.rb +0 -0
  115. data/spec/canvas_sync/processors/course_completion_report_processor_spec.rb +0 -0
  116. data/spec/canvas_sync/processors/rubric_assessments_spec.rb +0 -0
  117. data/spec/canvas_sync/processors/rubric_associations_spec.rb +0 -0
  118. data/spec/canvas_sync/processors/rubrics_processor_spec.rb +0 -0
  119. data/spec/canvas_sync/processors/submissions_processor_spec.rb +0 -0
  120. data/spec/canvas_sync/services/module_event_spec.rb +0 -0
  121. data/spec/canvas_sync/services/module_item_event_spec.rb +0 -0
  122. data/spec/factories/admin_factory.rb +0 -0
  123. data/spec/factories/assignment_factory.rb +0 -0
  124. data/spec/factories/assignment_group_factory.rb +0 -0
  125. data/spec/factories/context_module_factory.rb +0 -0
  126. data/spec/factories/context_module_item_factory.rb +0 -0
  127. data/spec/factories/course_factory.rb +0 -0
  128. data/spec/factories/enrollment_factory.rb +0 -0
  129. data/spec/factories/group_factory.rb +0 -0
  130. data/spec/factories/group_membership_factory.rb +0 -0
  131. data/spec/factories/role_factory.rb +0 -0
  132. data/spec/factories/section_factory.rb +0 -0
  133. data/spec/factories/submission_factory.rb +0 -0
  134. data/spec/factories/term_factory.rb +0 -0
  135. data/spec/factories/user_factory.rb +0 -0
  136. data/spec/support/fixtures/canvas_responses/admins.json +0 -0
  137. data/spec/support/fixtures/canvas_responses/module.json +0 -0
  138. data/spec/support/fixtures/canvas_responses/module_item.json +0 -0
  139. data/spec/support/fixtures/canvas_responses/roles.json +0 -0
  140. data/spec/support/fixtures/canvas_responses/terms.json +0 -0
  141. data/spec/support/fixtures/reports/assignment_groups.csv +0 -0
  142. data/spec/support/fixtures/reports/assignments.csv +0 -0
  143. data/spec/support/fixtures/reports/content_migrations.csv +0 -0
  144. data/spec/support/fixtures/reports/context_module_items.csv +0 -0
  145. data/spec/support/fixtures/reports/context_modules.csv +0 -0
  146. data/spec/support/fixtures/reports/course_nicknames.csv +0 -0
  147. data/spec/support/fixtures/reports/course_progresses.csv +0 -0
  148. data/spec/support/fixtures/reports/course_progresses_conflict.csv +0 -0
  149. data/spec/support/fixtures/reports/grading_period_groups.csv +0 -0
  150. data/spec/support/fixtures/reports/grading_periods.csv +0 -0
  151. data/spec/support/fixtures/reports/group_memberships.csv +0 -0
  152. data/spec/support/fixtures/reports/groups.csv +0 -0
  153. data/spec/support/fixtures/reports/learning_outcome_results.csv +0 -0
  154. data/spec/support/fixtures/reports/learning_outcomes.csv +0 -0
  155. data/spec/support/fixtures/reports/provisioning_csv +0 -0
  156. data/spec/support/fixtures/reports/rubric_assessments.csv +0 -0
  157. data/spec/support/fixtures/reports/rubric_associations.csv +0 -0
  158. data/spec/support/fixtures/reports/rubrics.csv +0 -0
  159. data/spec/support/fixtures/reports/sections.csv +0 -0
  160. data/spec/support/fixtures/reports/submissions.csv +0 -0
  161. data/spec/support/fixtures/reports/user_observers.csv +0 -0
  162. data/spec/support/fixtures/reports/users.csv +0 -0
  163. data/spec/support/fixtures/reports/xlist.csv +0 -0
  164. metadata +5 -143
  165. data/spec/internal/app/models/account.rb +0 -35
  166. data/spec/internal/app/models/admin.rb +0 -35
  167. data/spec/internal/app/models/assignment.rb +0 -39
  168. data/spec/internal/app/models/assignment_group.rb +0 -31
  169. data/spec/internal/app/models/assignment_override.rb +0 -34
  170. data/spec/internal/app/models/content_migration.rb +0 -18
  171. data/spec/internal/app/models/context_module.rb +0 -69
  172. data/spec/internal/app/models/context_module_item.rb +0 -33
  173. data/spec/internal/app/models/course.rb +0 -57
  174. data/spec/internal/app/models/course_nickname.rb +0 -20
  175. data/spec/internal/app/models/course_progress.rb +0 -29
  176. data/spec/internal/app/models/enrollment.rb +0 -48
  177. data/spec/internal/app/models/grading_period.rb +0 -17
  178. data/spec/internal/app/models/grading_period_group.rb +0 -16
  179. data/spec/internal/app/models/group.rb +0 -28
  180. data/spec/internal/app/models/group_membership.rb +0 -26
  181. data/spec/internal/app/models/learning_outcome.rb +0 -30
  182. data/spec/internal/app/models/learning_outcome_result.rb +0 -54
  183. data/spec/internal/app/models/pseudonym.rb +0 -19
  184. data/spec/internal/app/models/role.rb +0 -27
  185. data/spec/internal/app/models/rubric.rb +0 -36
  186. data/spec/internal/app/models/rubric_assessment.rb +0 -23
  187. data/spec/internal/app/models/rubric_association.rb +0 -20
  188. data/spec/internal/app/models/score.rb +0 -18
  189. data/spec/internal/app/models/section.rb +0 -36
  190. data/spec/internal/app/models/submission.rb +0 -32
  191. data/spec/internal/app/models/term.rb +0 -46
  192. data/spec/internal/app/models/user.rb +0 -43
  193. data/spec/internal/app/models/user_observer.rb +0 -22
  194. data/spec/internal/app/services/live_events/assignment_event.rb +0 -43
  195. data/spec/internal/app/services/live_events/course_event.rb +0 -28
  196. data/spec/internal/app/services/live_events/course_section_event.rb +0 -28
  197. data/spec/internal/app/services/live_events/enrollment_event.rb +0 -30
  198. data/spec/internal/app/services/live_events/grade_event.rb +0 -36
  199. data/spec/internal/app/services/live_events/module_event.rb +0 -26
  200. data/spec/internal/app/services/live_events/module_item_event.rb +0 -25
  201. data/spec/internal/app/services/live_events/submission_event.rb +0 -28
  202. data/spec/internal/app/services/live_events/syllabus_event.rb +0 -31
  203. data/spec/internal/app/services/live_events/user_event.rb +0 -27
  204. data/spec/internal/db/migrate/20251029222307_create_users.rb +0 -26
  205. data/spec/internal/db/migrate/20251029222308_create_pseudonyms.rb +0 -24
  206. data/spec/internal/db/migrate/20251029222309_create_courses.rb +0 -30
  207. data/spec/internal/db/migrate/20251029222310_create_groups.rb +0 -29
  208. data/spec/internal/db/migrate/20251029222311_create_group_memberships.rb +0 -24
  209. data/spec/internal/db/migrate/20251029222312_create_accounts.rb +0 -23
  210. data/spec/internal/db/migrate/20251029222313_create_terms.rb +0 -24
  211. data/spec/internal/db/migrate/20251029222314_create_enrollments.rb +0 -31
  212. data/spec/internal/db/migrate/20251029222315_create_sections.rb +0 -27
  213. data/spec/internal/db/migrate/20251029222316_create_assignments.rb +0 -37
  214. data/spec/internal/db/migrate/20251029222317_create_submissions.rb +0 -32
  215. data/spec/internal/db/migrate/20251029222318_create_roles.rb +0 -24
  216. data/spec/internal/db/migrate/20251029222319_create_admins.rb +0 -26
  217. data/spec/internal/db/migrate/20251029222320_create_assignment_groups.rb +0 -28
  218. data/spec/internal/db/migrate/20251029222321_create_context_modules.rb +0 -28
  219. data/spec/internal/db/migrate/20251029222322_create_context_module_items.rb +0 -26
  220. data/spec/internal/db/migrate/20251029222324_create_grading_periods.rb +0 -28
  221. data/spec/internal/db/migrate/20251029222325_create_grading_period_groups.rb +0 -24
  222. data/spec/internal/db/migrate/20251029222326_create_content_migrations.rb +0 -30
  223. data/spec/internal/db/migrate/20251029222327_create_learning_outcomes.rb +0 -36
  224. data/spec/internal/db/migrate/20251029222328_create_learning_outcome_results.rb +0 -52
  225. data/spec/internal/db/migrate/20251029222330_create_rubrics.rb +0 -44
  226. data/spec/internal/db/migrate/20251029222331_create_rubric_associations.rb +0 -42
  227. data/spec/internal/db/migrate/20251029222332_create_rubric_assessments.rb +0 -37
  228. data/spec/internal/db/migrate/20251029222334_create_assignment_overrides.rb +0 -25
  229. data/spec/internal/db/migrate/20251029222335_create_scores.rb +0 -42
  230. data/spec/internal/db/migrate/20251029223411_create_user_observers.rb +0 -23
  231. data/spec/internal/db/migrate/20251029224009_create_course_nicknames.rb +0 -23
  232. data/spec/internal/db/migrate/20251029224010_create_course_progresses.rb +0 -26
  233. data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +0 -3
  234. data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +0 -4
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
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.12
4
+ version: 0.27.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure CustomDev
@@ -413,14 +413,14 @@ dependencies:
413
413
  requirements:
414
414
  - - "~>"
415
415
  - !ruby/object:Gem::Version
416
- version: 0.2.0
416
+ version: 0.2.1
417
417
  type: :runtime
418
418
  prerelease: false
419
419
  version_requirements: !ruby/object:Gem::Requirement
420
420
  requirements:
421
421
  - - "~>"
422
422
  - !ruby/object:Gem::Version
423
- version: 0.2.0
423
+ version: 0.2.1
424
424
  email:
425
425
  - pseng@instructure.com
426
426
  executables: []
@@ -569,6 +569,7 @@ files:
569
569
  - lib/canvas_sync/version.rb
570
570
  - lib/tasks/canvas_sync_tasks.rake
571
571
  - spec/canvas_sync/canvas_sync_spec.rb
572
+ - spec/canvas_sync/concerns/ability_helper_spec.rb
572
573
  - spec/canvas_sync/concerns/deleted_scoping_spec.rb
573
574
  - spec/canvas_sync/concerns/legacy_columns_spec.rb
574
575
  - spec/canvas_sync/engine_spec.rb
@@ -636,79 +637,11 @@ files:
636
637
  - spec/factories/submission_factory.rb
637
638
  - spec/factories/term_factory.rb
638
639
  - spec/factories/user_factory.rb
639
- - spec/internal/app/models/account.rb
640
- - spec/internal/app/models/admin.rb
641
640
  - spec/internal/app/models/application_record.rb
642
- - spec/internal/app/models/assignment.rb
643
- - spec/internal/app/models/assignment_group.rb
644
- - spec/internal/app/models/assignment_override.rb
645
- - spec/internal/app/models/content_migration.rb
646
- - spec/internal/app/models/context_module.rb
647
- - spec/internal/app/models/context_module_item.rb
648
- - spec/internal/app/models/course.rb
649
- - spec/internal/app/models/course_nickname.rb
650
- - spec/internal/app/models/course_progress.rb
651
- - spec/internal/app/models/enrollment.rb
652
- - spec/internal/app/models/grading_period.rb
653
- - spec/internal/app/models/grading_period_group.rb
654
- - spec/internal/app/models/group.rb
655
- - spec/internal/app/models/group_membership.rb
656
- - spec/internal/app/models/learning_outcome.rb
657
- - spec/internal/app/models/learning_outcome_result.rb
658
- - spec/internal/app/models/pseudonym.rb
659
- - spec/internal/app/models/role.rb
660
- - spec/internal/app/models/rubric.rb
661
- - spec/internal/app/models/rubric_assessment.rb
662
- - spec/internal/app/models/rubric_association.rb
663
- - spec/internal/app/models/score.rb
664
- - spec/internal/app/models/section.rb
665
- - spec/internal/app/models/submission.rb
666
- - spec/internal/app/models/term.rb
667
- - spec/internal/app/models/user.rb
668
- - spec/internal/app/models/user_observer.rb
669
- - spec/internal/app/services/live_events/assignment_event.rb
670
- - spec/internal/app/services/live_events/course_event.rb
671
- - spec/internal/app/services/live_events/course_section_event.rb
672
- - spec/internal/app/services/live_events/enrollment_event.rb
673
- - spec/internal/app/services/live_events/grade_event.rb
674
- - spec/internal/app/services/live_events/module_event.rb
675
- - spec/internal/app/services/live_events/module_item_event.rb
676
- - spec/internal/app/services/live_events/submission_event.rb
677
- - spec/internal/app/services/live_events/syllabus_event.rb
678
- - spec/internal/app/services/live_events/user_event.rb
679
641
  - spec/internal/bin/rails
680
642
  - spec/internal/config/database.yml
681
643
  - spec/internal/config/routes.rb
682
644
  - spec/internal/config/storage.yml
683
- - spec/internal/db/migrate/20251029222307_create_users.rb
684
- - spec/internal/db/migrate/20251029222308_create_pseudonyms.rb
685
- - spec/internal/db/migrate/20251029222309_create_courses.rb
686
- - spec/internal/db/migrate/20251029222310_create_groups.rb
687
- - spec/internal/db/migrate/20251029222311_create_group_memberships.rb
688
- - spec/internal/db/migrate/20251029222312_create_accounts.rb
689
- - spec/internal/db/migrate/20251029222313_create_terms.rb
690
- - spec/internal/db/migrate/20251029222314_create_enrollments.rb
691
- - spec/internal/db/migrate/20251029222315_create_sections.rb
692
- - spec/internal/db/migrate/20251029222316_create_assignments.rb
693
- - spec/internal/db/migrate/20251029222317_create_submissions.rb
694
- - spec/internal/db/migrate/20251029222318_create_roles.rb
695
- - spec/internal/db/migrate/20251029222319_create_admins.rb
696
- - spec/internal/db/migrate/20251029222320_create_assignment_groups.rb
697
- - spec/internal/db/migrate/20251029222321_create_context_modules.rb
698
- - spec/internal/db/migrate/20251029222322_create_context_module_items.rb
699
- - spec/internal/db/migrate/20251029222324_create_grading_periods.rb
700
- - spec/internal/db/migrate/20251029222325_create_grading_period_groups.rb
701
- - spec/internal/db/migrate/20251029222326_create_content_migrations.rb
702
- - spec/internal/db/migrate/20251029222327_create_learning_outcomes.rb
703
- - spec/internal/db/migrate/20251029222328_create_learning_outcome_results.rb
704
- - spec/internal/db/migrate/20251029222330_create_rubrics.rb
705
- - spec/internal/db/migrate/20251029222331_create_rubric_associations.rb
706
- - spec/internal/db/migrate/20251029222332_create_rubric_assessments.rb
707
- - spec/internal/db/migrate/20251029222334_create_assignment_overrides.rb
708
- - spec/internal/db/migrate/20251029222335_create_scores.rb
709
- - spec/internal/db/migrate/20251029223411_create_user_observers.rb
710
- - spec/internal/db/migrate/20251029224009_create_course_nicknames.rb
711
- - spec/internal/db/migrate/20251029224010_create_course_progresses.rb
712
645
  - spec/internal/db/schema.rb
713
646
  - spec/spec_helper.rb
714
647
  - spec/support/fake_canvas.rb
@@ -737,8 +670,6 @@ files:
737
670
  - spec/support/fixtures/reports/learning_outcome_results.csv
738
671
  - spec/support/fixtures/reports/learning_outcomes.csv
739
672
  - spec/support/fixtures/reports/provisioning_csv
740
- - spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
741
- - spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv
742
673
  - spec/support/fixtures/reports/rubric_assessments.csv
743
674
  - spec/support/fixtures/reports/rubric_associations.csv
744
675
  - spec/support/fixtures/reports/rubrics.csv
@@ -770,6 +701,7 @@ specification_version: 4
770
701
  summary: Gem for generating Canvas models and migrations and syncing data from Canvas
771
702
  test_files:
772
703
  - spec/canvas_sync/canvas_sync_spec.rb
704
+ - spec/canvas_sync/concerns/ability_helper_spec.rb
773
705
  - spec/canvas_sync/concerns/deleted_scoping_spec.rb
774
706
  - spec/canvas_sync/concerns/legacy_columns_spec.rb
775
707
  - spec/canvas_sync/engine_spec.rb
@@ -837,79 +769,11 @@ test_files:
837
769
  - spec/factories/submission_factory.rb
838
770
  - spec/factories/term_factory.rb
839
771
  - spec/factories/user_factory.rb
840
- - spec/internal/app/models/account.rb
841
- - spec/internal/app/models/admin.rb
842
772
  - spec/internal/app/models/application_record.rb
843
- - spec/internal/app/models/assignment.rb
844
- - spec/internal/app/models/assignment_group.rb
845
- - spec/internal/app/models/assignment_override.rb
846
- - spec/internal/app/models/content_migration.rb
847
- - spec/internal/app/models/context_module.rb
848
- - spec/internal/app/models/context_module_item.rb
849
- - spec/internal/app/models/course.rb
850
- - spec/internal/app/models/course_nickname.rb
851
- - spec/internal/app/models/course_progress.rb
852
- - spec/internal/app/models/enrollment.rb
853
- - spec/internal/app/models/grading_period.rb
854
- - spec/internal/app/models/grading_period_group.rb
855
- - spec/internal/app/models/group.rb
856
- - spec/internal/app/models/group_membership.rb
857
- - spec/internal/app/models/learning_outcome.rb
858
- - spec/internal/app/models/learning_outcome_result.rb
859
- - spec/internal/app/models/pseudonym.rb
860
- - spec/internal/app/models/role.rb
861
- - spec/internal/app/models/rubric.rb
862
- - spec/internal/app/models/rubric_assessment.rb
863
- - spec/internal/app/models/rubric_association.rb
864
- - spec/internal/app/models/score.rb
865
- - spec/internal/app/models/section.rb
866
- - spec/internal/app/models/submission.rb
867
- - spec/internal/app/models/term.rb
868
- - spec/internal/app/models/user.rb
869
- - spec/internal/app/models/user_observer.rb
870
- - spec/internal/app/services/live_events/assignment_event.rb
871
- - spec/internal/app/services/live_events/course_event.rb
872
- - spec/internal/app/services/live_events/course_section_event.rb
873
- - spec/internal/app/services/live_events/enrollment_event.rb
874
- - spec/internal/app/services/live_events/grade_event.rb
875
- - spec/internal/app/services/live_events/module_event.rb
876
- - spec/internal/app/services/live_events/module_item_event.rb
877
- - spec/internal/app/services/live_events/submission_event.rb
878
- - spec/internal/app/services/live_events/syllabus_event.rb
879
- - spec/internal/app/services/live_events/user_event.rb
880
773
  - spec/internal/bin/rails
881
774
  - spec/internal/config/database.yml
882
775
  - spec/internal/config/routes.rb
883
776
  - spec/internal/config/storage.yml
884
- - spec/internal/db/migrate/20251029222307_create_users.rb
885
- - spec/internal/db/migrate/20251029222308_create_pseudonyms.rb
886
- - spec/internal/db/migrate/20251029222309_create_courses.rb
887
- - spec/internal/db/migrate/20251029222310_create_groups.rb
888
- - spec/internal/db/migrate/20251029222311_create_group_memberships.rb
889
- - spec/internal/db/migrate/20251029222312_create_accounts.rb
890
- - spec/internal/db/migrate/20251029222313_create_terms.rb
891
- - spec/internal/db/migrate/20251029222314_create_enrollments.rb
892
- - spec/internal/db/migrate/20251029222315_create_sections.rb
893
- - spec/internal/db/migrate/20251029222316_create_assignments.rb
894
- - spec/internal/db/migrate/20251029222317_create_submissions.rb
895
- - spec/internal/db/migrate/20251029222318_create_roles.rb
896
- - spec/internal/db/migrate/20251029222319_create_admins.rb
897
- - spec/internal/db/migrate/20251029222320_create_assignment_groups.rb
898
- - spec/internal/db/migrate/20251029222321_create_context_modules.rb
899
- - spec/internal/db/migrate/20251029222322_create_context_module_items.rb
900
- - spec/internal/db/migrate/20251029222324_create_grading_periods.rb
901
- - spec/internal/db/migrate/20251029222325_create_grading_period_groups.rb
902
- - spec/internal/db/migrate/20251029222326_create_content_migrations.rb
903
- - spec/internal/db/migrate/20251029222327_create_learning_outcomes.rb
904
- - spec/internal/db/migrate/20251029222328_create_learning_outcome_results.rb
905
- - spec/internal/db/migrate/20251029222330_create_rubrics.rb
906
- - spec/internal/db/migrate/20251029222331_create_rubric_associations.rb
907
- - spec/internal/db/migrate/20251029222332_create_rubric_assessments.rb
908
- - spec/internal/db/migrate/20251029222334_create_assignment_overrides.rb
909
- - spec/internal/db/migrate/20251029222335_create_scores.rb
910
- - spec/internal/db/migrate/20251029223411_create_user_observers.rb
911
- - spec/internal/db/migrate/20251029224009_create_course_nicknames.rb
912
- - spec/internal/db/migrate/20251029224010_create_course_progresses.rb
913
777
  - spec/internal/db/schema.rb
914
778
  - spec/spec_helper.rb
915
779
  - spec/support/fake_canvas.rb
@@ -938,8 +802,6 @@ test_files:
938
802
  - spec/support/fixtures/reports/learning_outcome_results.csv
939
803
  - spec/support/fixtures/reports/learning_outcomes.csv
940
804
  - spec/support/fixtures/reports/provisioning_csv
941
- - spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
942
- - spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv
943
805
  - spec/support/fixtures/reports/rubric_assessments.csv
944
806
  - spec/support/fixtures/reports/rubric_associations.csv
945
807
  - spec/support/fixtures/reports/rubrics.csv
@@ -1,35 +0,0 @@
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 Account < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::Account::Ancestry # Add support for the ancestry Gem
13
- # include CanvasSync::Concerns::LiveEventSync
14
- # include CanvasSync::Concerns::DeletedScoping
15
-
16
- canvas_sync_features :defaults
17
-
18
- validates :canvas_id, uniqueness: true, presence: true
19
-
20
- has_many :admins, primary_key: :canvas_id, foreign_key: :canvas_account_id
21
- belongs_to :canvas_parent, class_name: 'Account', optional: true,
22
- primary_key: :canvas_id, foreign_key: :canvas_parent_account_id
23
- has_many :sub_accounts, class_name: 'Account',
24
- primary_key: :canvas_id, foreign_key: :canvas_parent_account_id
25
- has_many :groups, primary_key: :canvas_id, foreign_key: :canvas_account_id
26
-
27
- scope :active, -> { where.not(workflow_state: 'deleted') }
28
- # scope :should_canvas_sync, -> { active } # Optional - uses .active if not given
29
-
30
- api_syncable({
31
- name: :name,
32
- workflow_state: :workflow_state,
33
- canvas_parent_account_id: :parent_account_id,
34
- }, -> (api) { api.account(canvas_id) })
35
- end
@@ -1,35 +0,0 @@
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 Admin < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::DeletedScoping
13
-
14
- canvas_sync_features :defaults
15
-
16
- validates :canvas_id, uniqueness: true, presence: true
17
- belongs_to :account, primary_key: :canvas_id, foreign_key: :canvas_account_id, optional: true
18
- belongs_to :user, primary_key: :canvas_id, foreign_key: :canvas_user_id, optional: true
19
- belongs_to :role, primary_key: :canvas_id, foreign_key: :canvas_role_id, optional: true
20
-
21
- api_syncable({
22
- canvas_id: :id,
23
- role_name: :role,
24
- canvas_role_id: :role_id,
25
- canvas_user_id: ->(r) { r['user']['id'] },
26
- # NOTICE: The :account_id field is added by CanvasSync - it is not included in the Canvas API response
27
- canvas_account_id: :account_id,
28
- workflow_state: :workflow_state,
29
- }, -> (api) {
30
- admins = api.account_admins(canvas_account_id).all_pages!
31
- admin_data = admins.find{|admin| admin['id'] == canvas_id }
32
- raise Footrest::HttpError::NotFound unless admin_data.present?
33
- admin_data
34
- })
35
- end
@@ -1,39 +0,0 @@
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 Assignment < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::LiveEventSync
13
- # include CanvasSync::Concerns::DeletedScoping
14
-
15
- canvas_sync_features :defaults
16
-
17
- validates :canvas_id, uniqueness: true, presence: true
18
- belongs_to :context, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
19
- belongs_to :assignment_group, optional: true, primary_key: :canvas_id, foreign_key: :canvas_assignment_group_id
20
- has_many :submissions, primary_key: :canvas_id, foreign_key: :canvas_assignment_id
21
-
22
- has_many :context_module_items, as: :content, primary_key: :canvas_id, foreign_key: :canvas_content_id, foreign_type: :canvas_content_type, dependent: :destroy
23
- has_many :context_modules, through: :context_module_items
24
-
25
- api_syncable({
26
- title: :name,
27
- description: :description,
28
- due_at: :due_at,
29
- unlock_at: :unlock_at,
30
- lock_at: :lock_at,
31
- points_possible: :points_possible,
32
- grading_type: :grading_type,
33
- submission_types: lambda { |p| p["submission_types"].join(",") },
34
- canvas_context_id: :course_id,
35
- canvas_context_type: lambda { |_p| "Course" },
36
- canvas_assignment_group_id: :assignment_group_id,
37
- canvas_grading_standard_id: :grading_standard_id,
38
- }, -> (api) { api.assignment(canvas_context_id, canvas_id) })
39
- end
@@ -1,31 +0,0 @@
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 AssignmentGroup < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::LiveEventSync
13
- # include CanvasSync::Concerns::DeletedScoping
14
-
15
- canvas_sync_features :defaults
16
-
17
- validates :canvas_id, uniqueness: true, presence: true
18
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
19
- has_many :assignments, primary_key: :canvas_id, foreign_key: :canvas_assignment_group_id
20
-
21
- serialize :rules
22
-
23
- api_syncable({
24
- canvas_id: :id,
25
- name: :name,
26
- position: :position,
27
- rules: :rules,
28
- group_weight: :group_weight,
29
- workflow_state: ->(p) { 'available' },
30
- }, -> (api) { api.assignment_group(canvas_course_id, canvas_id) })
31
- end
@@ -1,34 +0,0 @@
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 AssignmentOverride < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
-
13
- canvas_sync_features :defaults
14
-
15
- validates :canvas_id, uniqueness: true, presence: true
16
- belongs_to :assignment, primary_key: :canvas_id, foreign_key: :canvas_assignment_id, optional: true
17
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
18
-
19
- api_syncable({
20
- canvas_id: :id,
21
- canvas_assignment_id: :assignment_id,
22
- title: :title,
23
- workflow_state: :workflow_state,
24
- due_at: :due_at,
25
- all_day: :all_day,
26
- all_day_date: :all_day_date,
27
- unlock_at: :unlock_at,
28
- lock_at: :lock_at,
29
- student_ids: ->(r) { JSON.parse(r[:student_ids]) if r[:student_ids].present? },
30
- canvas_group_id: :group_id,
31
- canvas_section_id: :course_section_id,
32
- canvas_course_id: -> (r) { r.dig(:assignment, :course_id) }
33
- }, -> (api) { api.assignment_override(canvas_assignment_id, canvas_id) })
34
- end
@@ -1,18 +0,0 @@
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 ContentMigration < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
-
13
- canvas_sync_features :defaults
14
-
15
- validates :canvas_id, uniqueness: true, presence: true
16
- belongs_to :context, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
17
-
18
- end
@@ -1,69 +0,0 @@
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
- # A ContextModule is the same as a Canvas Module. They're called ContextModules for 2 reasons:
10
- # 1 - Module is a reserved word in Rails and you can't call a model a Module
11
- # 2 - Canvas calls them ContextModules
12
- class ContextModule < ApplicationRecord
13
- include CanvasSync::Record
14
- include CanvasSync::Concerns::ApiSyncable
15
- # include CanvasSync::Concerns::DeletedScoping
16
-
17
- # include CanvasSync::Concerns::LiveEventSync
18
- # live_events_config event_prefix: :module
19
- # def process_live_event(event_type, payload, metadata)
20
- # self.canvas_context_id = payload['context_id']
21
- # self.canvas_context_type = payload['context_type']
22
- # super
23
- # end
24
-
25
- canvas_sync_features :defaults
26
-
27
- belongs_to :context, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
28
- has_many :context_module_items, primary_key: :canvas_id, foreign_key: :canvas_context_module_id
29
- has_many :assignments, through: :context_module_items
30
-
31
- serialize :completion_requirements
32
- serialize :prerequisites
33
-
34
- api_syncable({
35
- canvas_id: :id,
36
- canvas_context_id: :context_id,
37
- canvas_context_type: :context_type,
38
- position: :position,
39
- name: :name,
40
- workflow_state: :workflow_state,
41
- unlock_at: :unlock_at,
42
- completion_requirements: :completion_requirements,
43
- prerequisites: :prerequisites,
44
- requirement_count: :requirement_count
45
- }, lambda { |api|
46
- course_modules = api.course_modules(canvas_context_id, { include: ['items'] }) # avoids having 2 API calls for modules as we reuse this data
47
- context_module = course_modules&.detect { |course_module| course_module['id'] == canvas_id }
48
-
49
- if context_module.nil? # no context_module here means it is deleted in Canvas
50
- self.workflow_state = :deleted
51
- return self
52
- end
53
-
54
- # The ContextModule model in Canvas has the 'completion_requirements' and 'prerequisites' fields that are not returned directly from the API
55
- # We need to compute them here based on data that we receive from course_modules in the API
56
- context_module['prerequisites'] = course_modules.map do |course_module|
57
- next unless context_module['prerequisite_module_ids']&.include?(course_module['id'])
58
-
59
- {
60
- id: course_module['id'],
61
- name: course_module['name'],
62
- type: 'context_module'
63
- }.with_indifferent_access
64
- end.compact
65
-
66
- context_module['completion_requirements'] = context_module['items']&.map { |item| item['completion_requirement'] }&.compact
67
- context_module
68
- })
69
- end
@@ -1,33 +0,0 @@
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 ContextModuleItem < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::LiveEventSync
13
- # include CanvasSync::Concerns::DeletedScoping
14
-
15
- canvas_sync_features :defaults
16
-
17
- belongs_to :context_module, primary_key: :canvas_id, foreign_key: :canvas_context_module_id, optional: true
18
- belongs_to :content, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_content_id, foreign_type: :canvas_content_type
19
- belongs_to :assignment, foreign_key: :canvas_assignment_id, primary_key: :canvas_id
20
-
21
- api_syncable({
22
- canvas_id: :id,
23
- canvas_context_module_id: :module_id,
24
- position: :position,
25
- canvas_content_type: :type,
26
- canvas_content_id: :content_id,
27
- canvas_assignment_id: :assignment_id
28
- }, lambda { |api|
29
- module_item = api.module_item(context_module.context.canvas_id, context_module.canvas_id, canvas_id)
30
- module_item['assignment_id'] = api.assignment(context_module.context.canvas_id, module_item['content_id'])['id'] if module_item['type'] == 'Assignment'
31
- module_item
32
- })
33
- end