bearcat 1.6.10 → 1.7.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 (267) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -0
  3. data/bearcat.gemspec +5 -3
  4. data/lib/badgrcat/api_array.rb +0 -0
  5. data/lib/badgrcat/client.rb +15 -2
  6. data/lib/badgrcat/version.rb +0 -0
  7. data/lib/bearcat/api_array.rb +1 -0
  8. data/lib/bearcat/client/account_reports.rb +0 -0
  9. data/lib/bearcat/client/analytics.rb +0 -0
  10. data/lib/bearcat/client/assignment_groups.rb +0 -0
  11. data/lib/bearcat/client/assignments.rb +0 -0
  12. data/lib/bearcat/client/blueprint_courses.rb +0 -0
  13. data/lib/bearcat/client/calendar_events.rb +0 -0
  14. data/lib/bearcat/client/canvas_files.rb +0 -0
  15. data/lib/bearcat/client/conferences.rb +0 -0
  16. data/lib/bearcat/client/content_exports.rb +0 -0
  17. data/lib/bearcat/client/content_migrations.rb +0 -0
  18. data/lib/bearcat/client/conversations.rb +0 -0
  19. data/lib/bearcat/client/custom_gradebook_columns.rb +0 -0
  20. data/lib/bearcat/client/discussions.rb +0 -0
  21. data/lib/bearcat/client/enrollments.rb +0 -0
  22. data/lib/bearcat/client/external_tools.rb +0 -0
  23. data/lib/bearcat/client/file_helper.rb +1 -1
  24. data/lib/bearcat/client/files.rb +0 -0
  25. data/lib/bearcat/client/folders.rb +0 -0
  26. data/lib/bearcat/client/group_categories.rb +0 -0
  27. data/lib/bearcat/client/group_memberships.rb +0 -0
  28. data/lib/bearcat/client/groups.rb +0 -0
  29. data/lib/bearcat/client/learning_outcomes.rb +0 -0
  30. data/lib/bearcat/client/logins.rb +0 -0
  31. data/lib/bearcat/client/module_items.rb +0 -0
  32. data/lib/bearcat/client/modules.rb +0 -0
  33. data/lib/bearcat/client/o_auth2.rb +0 -0
  34. data/lib/bearcat/client/outcome_groups.rb +0 -0
  35. data/lib/bearcat/client/outcome_imports.rb +1 -1
  36. data/lib/bearcat/client/outcomes.rb +0 -0
  37. data/lib/bearcat/client/progresses.rb +0 -0
  38. data/lib/bearcat/client/quizzes.rb +0 -0
  39. data/lib/bearcat/client/roles.rb +0 -0
  40. data/lib/bearcat/client/rubric.rb +0 -0
  41. data/lib/bearcat/client/rubric_assessment.rb +0 -0
  42. data/lib/bearcat/client/rubric_association.rb +0 -0
  43. data/lib/bearcat/client/search.rb +0 -0
  44. data/lib/bearcat/client/sections.rb +0 -0
  45. data/lib/bearcat/client/sis_imports.rb +1 -1
  46. data/lib/bearcat/client/tabs.rb +0 -0
  47. data/lib/bearcat/client.rb +14 -0
  48. data/lib/bearcat/client_module.rb +0 -0
  49. data/lib/bearcat/rate_limiting/functions.lua +11 -0
  50. data/lib/bearcat/rate_limiting/increment_bucket.lua +0 -0
  51. data/lib/bearcat/rate_limiting/redis_script.rb +0 -0
  52. data/lib/bearcat/rate_limiting.rb +0 -0
  53. data/lib/bearcat/version.rb +1 -1
  54. data/lib/catalogcat/api_array.rb +1 -1
  55. data/lib/catalogcat/client/catalogs.rb +0 -0
  56. data/lib/catalogcat/client/certificates.rb +0 -0
  57. data/lib/catalogcat/client/courses.rb +0 -0
  58. data/lib/catalogcat/client/email_domain_sets.rb +0 -0
  59. data/lib/catalogcat/client/enrollments.rb +0 -0
  60. data/lib/catalogcat/client/orders.rb +0 -0
  61. data/lib/catalogcat/client/user_registrations.rb +1 -1
  62. data/lib/catalogcat/client.rb +0 -0
  63. data/lib/catalogcat/version.rb +0 -0
  64. data/lib/catalogcat.rb +0 -0
  65. data/spec/badgrcat/client_spec.rb +151 -0
  66. data/spec/bearcat/api_array_spec.rb +8 -8
  67. data/spec/bearcat/client/analytics_spec.rb +0 -0
  68. data/spec/bearcat/client/assignment_groups_spec.rb +0 -0
  69. data/spec/bearcat/client/assignments_spec.rb +0 -0
  70. data/spec/bearcat/client/blueprint_courses_spec.rb +0 -0
  71. data/spec/bearcat/client/calendar_events_spec.rb +0 -0
  72. data/spec/bearcat/client/canvas_files_spec.rb +0 -0
  73. data/spec/bearcat/client/conferences_spec.rb +0 -0
  74. data/spec/bearcat/client/content_exports_spec.rb +0 -0
  75. data/spec/bearcat/client/content_migrations_spec.rb +0 -0
  76. data/spec/bearcat/client/conversations_spec.rb +0 -0
  77. data/spec/bearcat/client/courses_spec.rb +0 -0
  78. data/spec/bearcat/client/custom_gradebook_columns_spec.rb +0 -0
  79. data/spec/bearcat/client/discussions_spec.rb +0 -0
  80. data/spec/bearcat/client/enrollments_spec.rb +0 -0
  81. data/spec/bearcat/client/external_tools_spec.rb +0 -0
  82. data/spec/bearcat/client/files_spec.rb +0 -0
  83. data/spec/bearcat/client/folders_spec.rb +0 -0
  84. data/spec/bearcat/client/graph_ql_spec.rb +0 -0
  85. data/spec/bearcat/client/group_categories_spec.rb +0 -0
  86. data/spec/bearcat/client/group_membership_spec.rb +0 -0
  87. data/spec/bearcat/client/group_memberships_spec.rb +0 -0
  88. data/spec/bearcat/client/groups_spec.rb +0 -0
  89. data/spec/bearcat/client/learning_outcomes_spec.rb +0 -0
  90. data/spec/bearcat/client/module_items_spec.rb +0 -0
  91. data/spec/bearcat/client/modules_spec.rb +0 -0
  92. data/spec/bearcat/client/new_quizzes_spec.rb +111 -0
  93. data/spec/bearcat/client/o_auth2_spec.rb +0 -0
  94. data/spec/bearcat/client/outcome_groups_spec.rb +0 -0
  95. data/spec/bearcat/client/outcomes_spec.rb +0 -0
  96. data/spec/bearcat/client/quizzes_spec.rb +0 -0
  97. data/spec/bearcat/client/roles_spec.rb +0 -0
  98. data/spec/bearcat/client/rubric_assessment_spec.rb +0 -0
  99. data/spec/bearcat/client/rubric_association_spec.rb +0 -0
  100. data/spec/bearcat/client/rubric_spec.rb +0 -0
  101. data/spec/bearcat/client/search_spec.rb +0 -0
  102. data/spec/bearcat/client/sections_spec.rb +0 -0
  103. data/spec/bearcat/client/submissions_spec.rb +0 -0
  104. data/spec/bearcat/client/users_spec.rb +0 -0
  105. data/spec/bearcat/rate_limiting_spec.rb +0 -0
  106. data/spec/bearcat/stub_bearcat_spec.rb +0 -0
  107. data/spec/bearcat_spec.rb +0 -0
  108. data/spec/fixtures/access_token.json +0 -0
  109. data/spec/fixtures/account_admin_create.json +0 -0
  110. data/spec/fixtures/account_admin_delete.json +0 -0
  111. data/spec/fixtures/account_admins.json +0 -0
  112. data/spec/fixtures/account_courses.json +0 -0
  113. data/spec/fixtures/account_grading_standards.json +0 -0
  114. data/spec/fixtures/account_groups.json +0 -0
  115. data/spec/fixtures/account_reports.json +0 -0
  116. data/spec/fixtures/account_reports_index.json +0 -0
  117. data/spec/fixtures/account_reports_result_success.json +0 -0
  118. data/spec/fixtures/account_reports_start_result.json +0 -0
  119. data/spec/fixtures/account_role.json +0 -0
  120. data/spec/fixtures/account_roles.json +0 -0
  121. data/spec/fixtures/account_sis_imports.json +0 -0
  122. data/spec/fixtures/account_sub_accounts.json +0 -0
  123. data/spec/fixtures/account_user.json +0 -0
  124. data/spec/fixtures/account_users.json +0 -0
  125. data/spec/fixtures/accounts.json +0 -0
  126. data/spec/fixtures/add_custom_user_data.json +0 -0
  127. data/spec/fixtures/add_user.json +0 -0
  128. data/spec/fixtures/assignment.json +0 -0
  129. data/spec/fixtures/assignment_group.json +0 -0
  130. data/spec/fixtures/assignment_groups.json +0 -0
  131. data/spec/fixtures/assignment_section_override.json +0 -0
  132. data/spec/fixtures/assignments.json +0 -0
  133. data/spec/fixtures/bearcat.jpg +0 -0
  134. data/spec/fixtures/blueprint_migration.json +0 -0
  135. data/spec/fixtures/blueprint_subscriptions.json +0 -0
  136. data/spec/fixtures/blueprint_template.json +0 -0
  137. data/spec/fixtures/blueprint_update_assocations_success.json +0 -0
  138. data/spec/fixtures/calendar_event.json +0 -0
  139. data/spec/fixtures/calendar_events.json +0 -0
  140. data/spec/fixtures/canvas_files/declare_file.json +0 -0
  141. data/spec/fixtures/canvas_files/upload_success.json +0 -0
  142. data/spec/fixtures/cc.imscc +0 -0
  143. data/spec/fixtures/communication_channels.json +0 -0
  144. data/spec/fixtures/conclude_enrollment.json +0 -0
  145. data/spec/fixtures/content_export.json +0 -0
  146. data/spec/fixtures/content_migration_files/content_migration.json +0 -0
  147. data/spec/fixtures/content_migration_files/response.json +0 -0
  148. data/spec/fixtures/content_migration_files/upload_success.json +0 -0
  149. data/spec/fixtures/conversation.json +0 -0
  150. data/spec/fixtures/course.json +0 -0
  151. data/spec/fixtures/course_conferences.json +0 -0
  152. data/spec/fixtures/course_copy.json +0 -0
  153. data/spec/fixtures/course_enrollments.json +0 -0
  154. data/spec/fixtures/course_files.json +0 -0
  155. data/spec/fixtures/course_folder.json +0 -0
  156. data/spec/fixtures/course_folders.json +0 -0
  157. data/spec/fixtures/course_grading_standards.json +0 -0
  158. data/spec/fixtures/course_groups.json +0 -0
  159. data/spec/fixtures/course_sections.json +0 -0
  160. data/spec/fixtures/course_settings.json +0 -0
  161. data/spec/fixtures/course_students.json +0 -0
  162. data/spec/fixtures/create_course_discussion.json +0 -0
  163. data/spec/fixtures/create_group_discussion.json +0 -0
  164. data/spec/fixtures/create_outcome_in_group.json +0 -0
  165. data/spec/fixtures/create_section.json +0 -0
  166. data/spec/fixtures/created_assignment.json +0 -0
  167. data/spec/fixtures/created_course.json +0 -0
  168. data/spec/fixtures/created_group.json +0 -0
  169. data/spec/fixtures/created_group_category.json +0 -0
  170. data/spec/fixtures/created_group_membership.json +0 -0
  171. data/spec/fixtures/created_module.json +0 -0
  172. data/spec/fixtures/custom_data.json +0 -0
  173. data/spec/fixtures/custom_food_data.json +0 -0
  174. data/spec/fixtures/custom_gradebook_columns/column_data.json +0 -0
  175. data/spec/fixtures/custom_gradebook_columns/custom_gradebook_column.json +0 -0
  176. data/spec/fixtures/custom_gradebook_columns/custom_gradebook_columns.json +0 -0
  177. data/spec/fixtures/custom_gradebook_columns/gradebook_column_progress.json +0 -0
  178. data/spec/fixtures/dashboard.json +0 -0
  179. data/spec/fixtures/delete_course.json +0 -0
  180. data/spec/fixtures/delete_custom_data_scope.json +0 -0
  181. data/spec/fixtures/delete_group_category.json +0 -0
  182. data/spec/fixtures/delete_section.json +0 -0
  183. data/spec/fixtures/deleted_conversation.json +0 -0
  184. data/spec/fixtures/deleted_group.json +0 -0
  185. data/spec/fixtures/department_level_participation.json +0 -0
  186. data/spec/fixtures/department_level_statistics.json +0 -0
  187. data/spec/fixtures/discussion_entries.json +0 -0
  188. data/spec/fixtures/discussion_entry_replies.json +0 -0
  189. data/spec/fixtures/discussion_topic.json +0 -0
  190. data/spec/fixtures/discussion_topics.json +0 -0
  191. data/spec/fixtures/edited_group.json +0 -0
  192. data/spec/fixtures/edited_group_category.json +0 -0
  193. data/spec/fixtures/enroll_student.json +0 -0
  194. data/spec/fixtures/enrollment_terms.json +0 -0
  195. data/spec/fixtures/external_tool.json +0 -0
  196. data/spec/fixtures/external_tools.json +0 -0
  197. data/spec/fixtures/file.csv +0 -0
  198. data/spec/fixtures/gradebook_history.json +0 -0
  199. data/spec/fixtures/graph_ql_scores.json +0 -0
  200. data/spec/fixtures/group.json +0 -0
  201. data/spec/fixtures/group_categories.json +0 -0
  202. data/spec/fixtures/group_category.json +0 -0
  203. data/spec/fixtures/group_category_groups.json +0 -0
  204. data/spec/fixtures/group_conferences.json +0 -0
  205. data/spec/fixtures/group_membership.json +0 -0
  206. data/spec/fixtures/learning_outcome.json +0 -0
  207. data/spec/fixtures/link_unlink_outcome.json +0 -0
  208. data/spec/fixtures/merge_user.json +0 -0
  209. data/spec/fixtures/module.json +0 -0
  210. data/spec/fixtures/module_item.json +0 -0
  211. data/spec/fixtures/module_item_sequence.json +0 -0
  212. data/spec/fixtures/module_items.json +0 -0
  213. data/spec/fixtures/modules.json +0 -0
  214. data/spec/fixtures/new_quizzes/new_quiz_item_categorization.json +44 -0
  215. data/spec/fixtures/new_quizzes/new_quiz_item_essay.json +29 -0
  216. data/spec/fixtures/new_quizzes/new_quiz_item_file_upload.json +32 -0
  217. data/spec/fixtures/new_quizzes/new_quiz_item_fill_in_multiple_blanks.json +65 -0
  218. data/spec/fixtures/new_quizzes/new_quiz_item_formula.json +50 -0
  219. data/spec/fixtures/new_quizzes/new_quiz_item_hot_spot.json +42 -0
  220. data/spec/fixtures/new_quizzes/new_quiz_item_matching.json +52 -0
  221. data/spec/fixtures/new_quizzes/new_quiz_item_multiple_answer.json +38 -0
  222. data/spec/fixtures/new_quizzes/new_quiz_item_numeric.json +30 -0
  223. data/spec/fixtures/new_quizzes/new_quiz_item_ordering.json +40 -0
  224. data/spec/fixtures/new_quizzes/new_quiz_item_short_answer.json +31 -0
  225. data/spec/fixtures/new_quizzes/new_quiz_item_stimulus.json +26 -0
  226. data/spec/fixtures/new_quizzes/new_quiz_item_true_false.json +29 -0
  227. data/spec/fixtures/no_custom_data.json +0 -0
  228. data/spec/fixtures/ok.json +0 -0
  229. data/spec/fixtures/outcome_group_import.json +0 -0
  230. data/spec/fixtures/outcome_groups.json +0 -0
  231. data/spec/fixtures/outcome_result.json +0 -0
  232. data/spec/fixtures/outcome_subgroup.json +0 -0
  233. data/spec/fixtures/outcome_subgroups.json +0 -0
  234. data/spec/fixtures/outcomes.json +0 -0
  235. data/spec/fixtures/paged_body.json +0 -0
  236. data/spec/fixtures/pages.json +0 -0
  237. data/spec/fixtures/progress.json +0 -0
  238. data/spec/fixtures/quizzes/course_quiz.json +0 -0
  239. data/spec/fixtures/quizzes/course_quiz_questions.json +0 -0
  240. data/spec/fixtures/quizzes/course_quizzes.json +0 -0
  241. data/spec/fixtures/quizzes/quiz_assignment_override.json +0 -0
  242. data/spec/fixtures/quizzes/quiz_extension.json +0 -0
  243. data/spec/fixtures/reactivate_enrollment.json +0 -0
  244. data/spec/fixtures/report_history.json +0 -0
  245. data/spec/fixtures/report_list.json +0 -0
  246. data/spec/fixtures/report_status.json +0 -0
  247. data/spec/fixtures/rubric.json +0 -0
  248. data/spec/fixtures/rubric_assessment.json +0 -0
  249. data/spec/fixtures/rubric_association.json +0 -0
  250. data/spec/fixtures/search_find_recipients.json +0 -0
  251. data/spec/fixtures/section.json +0 -0
  252. data/spec/fixtures/section_enrollments.json +0 -0
  253. data/spec/fixtures/single_account.json +0 -0
  254. data/spec/fixtures/start_report.json +0 -0
  255. data/spec/fixtures/submissions/submission.json +0 -0
  256. data/spec/fixtures/update_outcome.json +0 -0
  257. data/spec/fixtures/update_outcome_group.json +0 -0
  258. data/spec/fixtures/update_section.json +0 -0
  259. data/spec/fixtures/updated_course.json +0 -0
  260. data/spec/fixtures/user_avatars.json +0 -0
  261. data/spec/fixtures/user_details.json +0 -0
  262. data/spec/fixtures/user_enrollments.json +0 -0
  263. data/spec/fixtures/user_logins.json +0 -0
  264. data/spec/fixtures/user_page_views.json +0 -0
  265. data/spec/fixtures/user_profile.json +0 -0
  266. data/spec/helper.rb +7 -0
  267. metadata +235 -182
@@ -0,0 +1,50 @@
1
+ {
2
+ "id": "12",
3
+ "position": 1,
4
+ "points_possible": 5.0,
5
+ "properties": { "required": false },
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "12",
12
+ "title": "Calculate the area of a rectangle.",
13
+ "item_body": "<p>A rectangle has a length of `length` and a width of `width`. What is its area?</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {},
16
+ "properties": {},
17
+ "scoring_data": {
18
+ "value": {
19
+ "formula": "length * width",
20
+ "numeric": {
21
+ "type": "marginOfError",
22
+ "margin": "0",
23
+ "margin_type": "absolute"
24
+ },
25
+ "variables": [
26
+ { "max": 20, "min": 1, "name": "length", "precision": 0 },
27
+ { "max": 20, "min": 1, "name": "width", "precision": 0 }
28
+ ],
29
+ "answer_count": "5",
30
+ "generated_solutions": [
31
+ {
32
+ "inputs": [{ "name": "length", "value": "3" }, { "name": "width", "value": "4" }],
33
+ "output": "12"
34
+ },
35
+ {
36
+ "inputs": [{ "name": "length", "value": "5" }, { "name": "width", "value": "2" }],
37
+ "output": "10"
38
+ }
39
+ ]
40
+ }
41
+ },
42
+ "answer_feedback": {},
43
+ "scoring_algorithm": "Numeric",
44
+ "created_at": "2026-04-23T10:00:00.000Z",
45
+ "updated_at": "2026-04-23T10:00:00.000Z",
46
+ "tag_associations": [],
47
+ "interaction_type_slug": "formula",
48
+ "feedback": {}
49
+ }
50
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "id": "13",
3
+ "position": 1,
4
+ "points_possible": 2.0,
5
+ "properties": {},
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "13",
12
+ "title": "Click on the location of France on the map.",
13
+ "item_body": "<p>Click on the location of France on the map.</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {
16
+ "image": {
17
+ "url": "https://example.com/europe_map.png",
18
+ "width": 800,
19
+ "height": 600
20
+ },
21
+ "regions": [
22
+ {
23
+ "id": "region1",
24
+ "shape": "rectangle",
25
+ "x": 320,
26
+ "y": 220,
27
+ "width": 80,
28
+ "height": 100
29
+ }
30
+ ]
31
+ },
32
+ "properties": {},
33
+ "scoring_data": { "value": ["region1"] },
34
+ "answer_feedback": {},
35
+ "scoring_algorithm": "PartialDeep",
36
+ "created_at": "2026-04-23T10:00:00.000Z",
37
+ "updated_at": "2026-04-23T10:00:00.000Z",
38
+ "tag_associations": [],
39
+ "interaction_type_slug": "hot_spot",
40
+ "feedback": {}
41
+ }
42
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "id": "3",
3
+ "position": 1,
4
+ "points_possible": 4.0,
5
+ "properties": { "required": false },
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "3",
12
+ "title": "Match each animal to its classification.",
13
+ "item_body": "<p>Match each animal to its classification.</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {
16
+ "answers": ["Mammal", "Bird", "Fish", "Reptile", "Amphibian"],
17
+ "questions": [
18
+ { "id": "q1", "item_body": "Dog" },
19
+ { "id": "q2", "item_body": "Eagle" },
20
+ { "id": "q3", "item_body": "Salmon" },
21
+ { "id": "q4", "item_body": "Snake" }
22
+ ]
23
+ },
24
+ "properties": {
25
+ "shuffle_rules": { "questions": { "shuffled": false } }
26
+ },
27
+ "scoring_data": {
28
+ "value": {
29
+ "q1": "Mammal",
30
+ "q2": "Bird",
31
+ "q3": "Fish",
32
+ "q4": "Reptile"
33
+ },
34
+ "edit_data": {
35
+ "matches": [
36
+ { "answer_body": "Mammal", "question_id": "q1", "question_body": "Dog" },
37
+ { "answer_body": "Bird", "question_id": "q2", "question_body": "Eagle" },
38
+ { "answer_body": "Fish", "question_id": "q3", "question_body": "Salmon" },
39
+ { "answer_body": "Reptile","question_id": "q4", "question_body": "Snake" }
40
+ ],
41
+ "distractors": ["Amphibian"]
42
+ }
43
+ },
44
+ "answer_feedback": {},
45
+ "scoring_algorithm": "PartialDeep",
46
+ "created_at": "2026-04-23T10:00:00.000Z",
47
+ "updated_at": "2026-04-23T10:00:00.000Z",
48
+ "tag_associations": [],
49
+ "interaction_type_slug": "matching",
50
+ "feedback": {}
51
+ }
52
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "id": "6",
3
+ "position": 1,
4
+ "points_possible": 3.0,
5
+ "properties": { "required": false },
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "6",
12
+ "title": "Which of the following are prime numbers?",
13
+ "item_body": "<p>Which of the following are prime numbers? Select all that apply.</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {
16
+ "choices": [
17
+ { "id": "choice1", "position": 1, "item_body": "<p>2</p>" },
18
+ { "id": "choice2", "position": 2, "item_body": "<p>4</p>" },
19
+ { "id": "choice3", "position": 3, "item_body": "<p>7</p>" },
20
+ { "id": "choice4", "position": 4, "item_body": "<p>9</p>" },
21
+ { "id": "choice5", "position": 5, "item_body": "<p>11</p>" }
22
+ ]
23
+ },
24
+ "properties": {
25
+ "shuffle_rules": {
26
+ "choices": { "to_lock": [], "shuffled": false }
27
+ }
28
+ },
29
+ "scoring_data": { "value": ["choice1", "choice3", "choice5"] },
30
+ "answer_feedback": {},
31
+ "scoring_algorithm": "PartialScore",
32
+ "created_at": "2026-04-23T10:00:00.000Z",
33
+ "updated_at": "2026-04-23T10:00:00.000Z",
34
+ "tag_associations": [],
35
+ "interaction_type_slug": "multi-answer",
36
+ "feedback": {}
37
+ }
38
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "id": "11",
3
+ "position": 1,
4
+ "points_possible": 3.0,
5
+ "properties": { "required": false },
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "11",
12
+ "title": "What is the boiling point of water in degrees Celsius?",
13
+ "item_body": "<p>What is the boiling point of water in degrees Celsius?</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {},
16
+ "properties": {},
17
+ "scoring_data": {
18
+ "value": [
19
+ { "id": "1", "type": "exactResponse", "value": "100" }
20
+ ]
21
+ },
22
+ "answer_feedback": {},
23
+ "scoring_algorithm": "Numeric",
24
+ "created_at": "2026-04-23T10:00:00.000Z",
25
+ "updated_at": "2026-04-23T10:00:00.000Z",
26
+ "tag_associations": [],
27
+ "interaction_type_slug": "numeric",
28
+ "feedback": {}
29
+ }
30
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "id": "7",
3
+ "position": 1,
4
+ "points_possible": 4.0,
5
+ "properties": { "required": false },
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "7",
12
+ "title": "Order the planets from closest to farthest from the Sun.",
13
+ "item_body": "<p>Order the planets from closest to farthest from the Sun.</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {
16
+ "choices": {
17
+ "choice1": { "id": "choice1", "item_body": "<p>Mercury</p>" },
18
+ "choice2": { "id": "choice2", "item_body": "<p>Venus</p>" },
19
+ "choice3": { "id": "choice3", "item_body": "<p>Earth</p>" },
20
+ "choice4": { "id": "choice4", "item_body": "<p>Mars</p>" }
21
+ },
22
+ "item_body": ""
23
+ },
24
+ "properties": {
25
+ "top_label": "",
26
+ "bottom_label": "",
27
+ "shuffle_rules": null,
28
+ "include_labels": true,
29
+ "display_answers_paragraph": false
30
+ },
31
+ "scoring_data": { "value": ["choice1", "choice2", "choice3", "choice4"] },
32
+ "answer_feedback": {},
33
+ "scoring_algorithm": "DeepEquals",
34
+ "created_at": "2026-04-23T10:00:00.000Z",
35
+ "updated_at": "2026-04-23T10:00:00.000Z",
36
+ "tag_associations": [],
37
+ "interaction_type_slug": "ordering",
38
+ "feedback": {}
39
+ }
40
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "id": "8",
3
+ "position": 1,
4
+ "points_possible": 2.0,
5
+ "properties": {},
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "8",
12
+ "title": "What process do plants use to convert sunlight into food?",
13
+ "item_body": "<p>What process do plants use to convert sunlight into food?</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {
16
+ "answers": [
17
+ { "id": "ans1", "item_body": "photosynthesis" },
18
+ { "id": "ans2", "item_body": "Photosynthesis" }
19
+ ]
20
+ },
21
+ "properties": {},
22
+ "scoring_data": { "value": ["ans1", "ans2"] },
23
+ "answer_feedback": {},
24
+ "scoring_algorithm": "Equivalence",
25
+ "created_at": "2026-04-23T10:00:00.000Z",
26
+ "updated_at": "2026-04-23T10:00:00.000Z",
27
+ "tag_associations": [],
28
+ "interaction_type_slug": "short_answer",
29
+ "feedback": {}
30
+ }
31
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "id": "14",
3
+ "position": 1,
4
+ "points_possible": 0.0,
5
+ "properties": {},
6
+ "entry_type": "Stimulus",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "14",
12
+ "title": "Reading Passage: The Water Cycle",
13
+ "item_body": "<p>The water cycle describes the continuous movement of water on, above, and below Earth's surface. Water evaporates from oceans and lakes, rises into the atmosphere, condenses into clouds, and falls back to the ground as precipitation.</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {},
16
+ "properties": {},
17
+ "scoring_data": {},
18
+ "answer_feedback": {},
19
+ "scoring_algorithm": "None",
20
+ "created_at": "2026-04-23T10:00:00.000Z",
21
+ "updated_at": "2026-04-23T10:00:00.000Z",
22
+ "tag_associations": [],
23
+ "interaction_type_slug": "stimulus",
24
+ "feedback": {}
25
+ }
26
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "id": "2",
3
+ "position": 1,
4
+ "points_possible": 1.0,
5
+ "properties": {},
6
+ "entry_type": "Item",
7
+ "entry_editable": true,
8
+ "stimulus_quiz_entry_id": "",
9
+ "status": "mutable",
10
+ "entry": {
11
+ "id": "2",
12
+ "title": "The Earth orbits the Sun.",
13
+ "item_body": "<p>The Earth orbits the Sun.</p>",
14
+ "calculator_type": "none",
15
+ "interaction_data": {
16
+ "true_choice": "True",
17
+ "false_choice": "False"
18
+ },
19
+ "properties": {},
20
+ "scoring_data": { "value": true },
21
+ "answer_feedback": {},
22
+ "scoring_algorithm": "Equivalence",
23
+ "created_at": "2026-04-23T10:00:00.000Z",
24
+ "updated_at": "2026-04-23T10:00:00.000Z",
25
+ "tag_associations": [],
26
+ "interaction_type_slug": "true-false",
27
+ "feedback": {}
28
+ }
29
+ }
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
File without changes
File without changes
File without changes
data/spec/helper.rb CHANGED
@@ -8,6 +8,13 @@ require 'csv'
8
8
 
9
9
  WebMock.disable_net_connect!
10
10
 
11
+ RSpec.configure do |config|
12
+ # The suite mixes the older `should`/`stub` syntax with newer `expect`;
13
+ # enable both explicitly so RSpec 3 runs them without deprecation noise.
14
+ config.expect_with(:rspec) { |c| c.syntax = %i[should expect] }
15
+ config.mock_with(:rspec) { |c| c.syntax = %i[should expect] }
16
+ end
17
+
11
18
  def fixture(*file)
12
19
  File.new(File.join(File.expand_path("../fixtures", __FILE__), *file))
13
20
  end