scorm_engine 0.7.2 → 0.8.3

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 (182) hide show
  1. checksums.yaml +4 -4
  2. data/lib/scorm_engine/api/endpoints.rb +4 -0
  3. data/lib/scorm_engine/api/endpoints/configuration.rb +94 -0
  4. data/lib/scorm_engine/api/endpoints/courses/configuration.rb +1 -1
  5. data/lib/scorm_engine/api/endpoints/registrations/configuration.rb +1 -1
  6. data/lib/scorm_engine/api/endpoints/tenants/configuration.rb +108 -0
  7. data/lib/scorm_engine/configuration.rb +4 -2
  8. data/lib/scorm_engine/faraday/connection.rb +10 -4
  9. data/lib/scorm_engine/faraday/request.rb +19 -4
  10. data/lib/scorm_engine/models.rb +1 -0
  11. data/lib/scorm_engine/models/tenant_configuration.rb +34 -0
  12. data/lib/scorm_engine/version.rb +1 -1
  13. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/is_successful.yml +24 -15
  14. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/knows_the_platform.yml +24 -15
  15. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/knows_the_version.yml +24 -15
  16. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/accepts_before_option.yml +23 -15
  17. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/accepts_since_option.yml +23 -15
  18. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/is_successful.yml +23 -15
  19. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_combined_counts.yml +23 -15
  20. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_per_tenantcounts.yml +23 -15
  21. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/fails_when_settings_are_invalid.yml +46 -0
  22. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/is_successful.yml +42 -0
  23. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/is_successful.yml +931 -0
  24. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/returns_metadata_in_raw_response_when_included_in_options.yml +931 -0
  25. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/is_successful.yml +64 -0
  26. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/returns_settings_and_values.yml +64 -0
  27. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/fails_when_settings_are_invalid.yml +48 -0
  28. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/is_successful.yml +44 -0
  29. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/persists_the_settings.yml +207 -0
  30. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/fails_when_id_is_invalid.yml +23 -15
  31. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/works.yml +19 -9
  32. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/fails_when_id_is_invalid.yml +23 -15
  33. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/is_successful.yml +24 -16
  34. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/results/sucessfully_creates_the_Course_attributes.yml +24 -16
  35. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/fails_when_id_is_invalid.yml +23 -15
  36. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/is_successful.yml +23 -15
  37. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/results/returns_a_URL_string.yml +23 -15
  38. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_course_id_option/fetches_a_single_course_but_perhaps_multiple_versions.yml +23 -15
  39. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_course_id_option/returns_404_when_ID_is_invalid.yml +23 -15
  40. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_more_option_pagination_/returns_all_the_courses.yml +65 -45
  41. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +32 -24
  42. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_since_option/fails_when_passed_an_invalid_value.yml +20 -10
  43. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_since_option/works.yml +42 -19
  44. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/is_successful.yml +32 -19
  45. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/results/is_an_enumerator_of_Course_models.yml +32 -19
  46. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/results/sucessfully_creates_the_Course_attributes.yml +32 -19
  47. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/fails_when_id_is_invalid.yml +23 -15
  48. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/is_successful.yml +23 -15
  49. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/results/makes_settings_available_as_key/value_pairs.yml +23 -15
  50. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/fails_when_course_id_is_invalid.yml +23 -15
  51. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  52. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/is_successful.yml +41 -19
  53. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/results/returns_the_value_as_a_string.yml +41 -19
  54. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/fails_when_id_is_invalid.yml +25 -15
  55. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/fails_when_settings_are_invalid.yml +24 -12
  56. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/is_successful.yml +21 -9
  57. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/persists_the_settings.yml +88 -48
  58. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/fails_when_course_id_is_invalid.yml +25 -15
  59. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  60. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/is_successful.yml +41 -19
  61. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/results/persists_the_changes.yml +61 -29
  62. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/successful_imports/works.yml +102 -95
  63. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/unsuccessful_imports/fails_to_import_given_an_invalid_url.yml +73 -294
  64. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/unsuccessful_imports/fails_to_import_a_previously_existing_course.yml +21 -9
  65. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/returns_success_even_when_id_is_invalid.yml +19 -9
  66. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/works.yml +19 -9
  67. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/fails_when_id_is_invalid.yml +22 -14
  68. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/is_successful.yml +22 -14
  69. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/results/sucessfully_creates_the_destination_attributes.yml +22 -14
  70. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination_dispatches_registration_count/fails_when_invalid.yml +22 -14
  71. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination_dispatches_registration_count/works.yml +20 -10
  72. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_more_option_pagination_/returns_all_the_destinations.yml +48 -31
  73. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +23 -15
  74. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_since_option/fails_when_passed_an_invalid_value.yml +22 -13
  75. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_since_option/works.yml +24 -15
  76. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/is_successful.yml +23 -15
  77. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/results/is_an_enumerator_of_Destination_models.yml +23 -15
  78. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/results/sucessfully_creates_the_Destination_attributes.yml +65 -13
  79. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination/is_successful.yml +40 -18
  80. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination/is_successful_even_if_the_destination_id_is_not_unique.yml +21 -9
  81. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/fails_when_invalid.yml +24 -12
  82. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/works_when_false.yml +21 -9
  83. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/works_when_true.yml +21 -9
  84. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/fails_when_invalid.yml +24 -12
  85. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/works_when_false.yml +21 -9
  86. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/works_when_true.yml +21 -9
  87. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_put_destination/is_successful.yml +21 -9
  88. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_put_destination/results/sucessfully_creates_the_destination_attributes.yml +43 -23
  89. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch/returns_success_even_when_id_is_invalid.yml +19 -7
  90. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch/works.yml +19 -7
  91. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch_registration_count/is_successful.yml +19 -7
  92. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch_registration_count/succeeds_even_when_id_is_invalid.yml +19 -7
  93. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/fails_when_id_is_invalid.yml +22 -12
  94. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/is_successful.yml +23 -13
  95. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/results/sucessfully_creates_the_dispatch_attributes.yml +23 -13
  96. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_enabled/is_false_when_disabled.yml +39 -15
  97. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_enabled/is_true_when_enabled.yml +39 -15
  98. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/fails_when_id_is_invalid.yml +41 -19
  99. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/is_successful.yml +42 -20
  100. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/results/sucessfully_creates_the_dispatch_attributes.yml +42 -20
  101. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_id.yml +22 -12
  102. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_type.yml +20 -8
  103. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works.yml +24 -12
  104. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_AICC.yml +24 -12
  105. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_SCORM12.yml +24 -12
  106. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_SCORM2004-3RD.yml +23 -11
  107. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_more_option_pagination_/returns_all_the_dispatches.yml +47 -27
  108. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +23 -13
  109. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_since_option/fails_when_passed_an_invalid_value.yml +20 -8
  110. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_since_option/works.yml +23 -13
  111. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/is_successful.yml +23 -13
  112. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/results/is_an_enumerator_of_dispatch_models.yml +23 -13
  113. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/results/sucessfully_creates_the_dispatch_attributes.yml +21 -44
  114. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_post_dispatch/is_successful.yml +38 -14
  115. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_post_dispatch/updates_if_same_dispatch_id.yml +65 -33
  116. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch/is_successful.yml +19 -7
  117. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch/results/sucessfully_creates_the_dispatch_attributes.yml +42 -20
  118. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/fails_when_invalid.yml +22 -10
  119. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/works_when_false.yml +19 -7
  120. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/works_when_true.yml +19 -7
  121. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/is_successful.yml +23 -15
  122. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/reports_the_api_is_up.yml +23 -15
  123. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/with_invalid_password/is_unsuccessful.yml +25 -17
  124. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/with_invalid_password/returns_status_403.yml +25 -17
  125. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_delete_registration/is_failure_when_registration_does_not_exist.yml +23 -13
  126. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_delete_registration/is_successful_when_registration_exists.yml +19 -7
  127. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_exists/is_false_when_registration_does_not_exist.yml +23 -13
  128. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_exists/is_true_when_registration_exists.yml +20 -8
  129. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/includes_results_we_expect.yml +26 -14
  130. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/is_successful.yml +26 -14
  131. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/returns_an_array_of_registrations.yml +26 -14
  132. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/fails_when_id_is_invalid.yml +23 -13
  133. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/is_successful.yml +23 -13
  134. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/results/returns_a_URL_string.yml +23 -13
  135. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/detail/does_not_return_activity_details_by_default.yml +24 -14
  136. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/detail/returns_activity_details_if_requested.yml +24 -14
  137. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/fails_when_registration_does_not_exist.yml +23 -13
  138. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/returns_a_registration_when_it_exists.yml +24 -14
  139. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_course_id/excludes_results.yml +22 -12
  140. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_course_id/includes_results.yml +26 -14
  141. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_learner_id/excludes_results.yml +22 -12
  142. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_learner_id/includes_results.yml +26 -14
  143. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/includes_results_we_expect.yml +26 -14
  144. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/is_successful.yml +26 -14
  145. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/returns_an_array_of_registrations.yml +26 -14
  146. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/fails_if_course_id_is_invalid.yml +22 -10
  147. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/fails_if_registration_id_already_exists.yml +20 -8
  148. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/is_successful.yml +38 -14
  149. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/is_successful_even_when_given_a_UTF8/slashed_username.yml +38 -14
  150. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/fails_when_id_is_invalid.yml +23 -15
  151. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/is_successful.yml +23 -15
  152. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/results/makes_settings_available_as_key/value_pairs.yml +23 -15
  153. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/fails_when_registration_id_is_invalid.yml +23 -15
  154. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  155. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/is_successful.yml +41 -19
  156. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/results/returns_the_value_as_a_string.yml +41 -19
  157. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/fails_when_id_is_invalid.yml +25 -15
  158. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/fails_when_settings_are_invalid.yml +24 -12
  159. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/is_successful.yml +21 -9
  160. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/persists_the_settings.yml +88 -48
  161. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/fails_when_registration_id_is_invalid.yml +25 -15
  162. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  163. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/is_successful.yml +41 -19
  164. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/results/persists_the_changes.yml +61 -29
  165. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/fails_when_registration_does_not_exist.yml +23 -15
  166. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/is_successful.yml +23 -31
  167. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/returns_an_array_of_registration_launch_histories.yml +23 -31
  168. data/spec/scorm_engine/api/endpoints/about_spec.rb +1 -1
  169. data/spec/scorm_engine/api/endpoints/configuration_spec.rb +82 -0
  170. data/spec/scorm_engine/api/endpoints/courses/configuration_spec.rb +5 -5
  171. data/spec/scorm_engine/api/endpoints/courses_spec.rb +6 -6
  172. data/spec/scorm_engine/api/endpoints/destinations_spec.rb +2 -2
  173. data/spec/scorm_engine/api/endpoints/dispatches_spec.rb +1 -1
  174. data/spec/scorm_engine/api/endpoints/registrations/configuration_spec.rb +5 -5
  175. data/spec/scorm_engine/api/endpoints/registrations_spec.rb +2 -2
  176. data/spec/scorm_engine/api/endpoints/tenants/configuration_spec.rb +126 -0
  177. data/spec/scorm_engine/faraday/connection_spec.rb +23 -5
  178. data/spec/scorm_engine/models/tenant_configuration_spec.rb +16 -0
  179. data/spec/support/vcr.rb +1 -0
  180. metadata +28 -13
  181. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/raises_ArgumentError_when_destination_id_is_missing.yml +0 -32
  182. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/when_dispatch_has_registrations/knows_it_s_registration_count.yml +0 -63
@@ -25,7 +25,6 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
25
25
  course = courses.results.detect { |c| c.id == "testing-golf-explained" }
26
26
  expect(course.version).to be >= 0
27
27
  expect(course.title).to eq "Golf Explained - Run-time Basic Calls"
28
- expect(course.registration_count).to eq 0
29
28
  expect(course.updated).to be_a Time
30
29
  expect(course.description).to eq nil
31
30
  end
@@ -42,7 +41,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
42
41
  response = subject.get_courses(course_id: "invalid-bogus")
43
42
  expect(response.success?).to eq false
44
43
  expect(response.status).to eq 404
45
- expect(response.message).to match(/External Package ID 'invalid-bogus'/)
44
+ expect(response.message).to match(/'invalid-bogus'/)
46
45
  end
47
46
  end
48
47
 
@@ -76,7 +75,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
76
75
  end
77
76
 
78
77
  it "returns the :more key in the raw response" do
79
- expect(subject.get_courses.raw_response.body["more"]).to match(%r{https?://.*&more=.+})
78
+ expect(subject.get_courses.raw_response.body["more"]).to match(%r{(https?://)?.*&more=.+})
80
79
  end
81
80
 
82
81
  it "returns all the courses" do
@@ -106,7 +105,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
106
105
  response = subject.delete_course(course_id: "nonexistent-course")
107
106
  expect(response.success?).to eq false
108
107
  expect(response.status).to eq 404
109
- expect(response.message).to match(/External Package ID 'nonexistent-course'/)
108
+ expect(response.message).to match(/'nonexistent-course'/)
110
109
  end
111
110
  end
112
111
 
@@ -136,7 +135,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
136
135
  response = subject.get_course_preview(course_id: "nonexistent-course")
137
136
  expect(response.success?).to eq false
138
137
  expect(response.status).to eq 404
139
- expect(response.message).to match(/External Package ID 'nonexistent-course'/)
138
+ expect(response.message).to match(/'nonexistent-course'/)
140
139
  expect(response.result).to eq nil
141
140
  end
142
141
  end
@@ -151,6 +150,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
151
150
  describe "results" do
152
151
  it "returns a URL string" do
153
152
  url = response.result
153
+ # expect(url).to match(%r{/ScormEngineInterface/defaultui/launch.jsp\?jwt=.*})
154
154
  expect(url).to match(%r{/defaultui/launch.jsp\?.*testing-golf-explained.*RedirectOnExitUrl=https%3A%2F%2Fexample.com})
155
155
  end
156
156
  end
@@ -159,7 +159,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
159
159
  response = subject.get_course_preview(course_id: "nonexistent-course")
160
160
  expect(response.success?).to eq false
161
161
  expect(response.status).to eq 404
162
- expect(response.message).to match(/External Package ID 'nonexistent-course'/)
162
+ expect(response.message).to match(/'nonexistent-course'/)
163
163
  expect(response.result).to eq nil
164
164
  end
165
165
  end
@@ -48,7 +48,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Destinations do
48
48
  expect(destinations.success?).to eq false
49
49
  expect(destinations.status).to eq 400
50
50
  expect(destinations.results.to_a).to eq []
51
- expect(destinations.message).to match(/'invalid' is either not a timestamp or seems to be not formatted according to ISO 8601/)
51
+ expect(destinations.message).to match(/'invalid'/)
52
52
  end
53
53
  end
54
54
  end
@@ -63,7 +63,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Destinations do
63
63
  end
64
64
 
65
65
  it "returns the :more key in the raw response" do
66
- expect(subject.get_destinations.raw_response.body["more"]).to match(%r{https?://.*&more=.+})
66
+ expect(subject.get_destinations.raw_response.body["more"]).to match(%r{(https?://)?.*&more=.+})
67
67
  end
68
68
 
69
69
  it "returns all the destinations" do
@@ -85,7 +85,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Dispatches do
85
85
  end
86
86
 
87
87
  it "returns the :more key in the raw response" do
88
- expect(subject.get_dispatches.raw_response.body["more"]).to match(%r{https?://.*&more=.+})
88
+ expect(subject.get_dispatches.raw_response.body["more"]).to match(%r{(https?://)?.*&more=.+})
89
89
  end
90
90
 
91
91
  it "returns all the dispatches" do
@@ -40,7 +40,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
40
40
  response = subject.get_registration_configuration(registration_id: "nonexistent-registration", settings: {})
41
41
  expect(response.success?).to eq false
42
42
  expect(response.status).to eq 404
43
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
43
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
44
44
  expect(response.result).to eq nil
45
45
  end
46
46
  end
@@ -79,7 +79,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
79
79
  response = subject.post_registration_configuration(registration_id: "nonexistent-registration", settings: {})
80
80
  expect(response.success?).to eq false
81
81
  expect(response.status).to eq 404
82
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
82
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
83
83
  expect(response.result).to eq nil
84
84
  end
85
85
 
@@ -87,7 +87,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
87
87
  response = subject.post_registration_configuration(registration_id: registration_options[:registration_id], settings: { "NonExistentSettingTotesBogus" => "YES" })
88
88
  expect(response.success?).to eq false
89
89
  expect(response.status).to eq 400
90
- expect(response.message).to match(/No configuration setting found with id.*NonExistentSettingTotesBogus/)
90
+ expect(response.message).to match(/NonExistentSettingTotesBogus/)
91
91
  end
92
92
  end
93
93
 
@@ -111,7 +111,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
111
111
  response = subject.get_registration_configuration_setting(registration_id: "nonexistent-registration", setting_id: "PlayerStatusRollupModeThresholdScore")
112
112
  expect(response.success?).to eq false
113
113
  expect(response.status).to eq 404
114
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
114
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
115
115
  expect(response.result).to eq nil
116
116
  end
117
117
 
@@ -144,7 +144,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
144
144
  response = subject.put_registration_configuration_setting(registration_id: "nonexistent-registration", setting_id: "PlayerStatusRollupModeThresholdScore", value: "42")
145
145
  expect(response.success?).to eq false
146
146
  expect(response.status).to eq 404
147
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
147
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
148
148
  expect(response.result).to eq nil
149
149
  end
150
150
 
@@ -183,7 +183,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations do
183
183
  aggregate_failures do
184
184
  expect(response.success?).to eq false
185
185
  expect(response.status).to eq 400
186
- expect(response.message).to match(/External Package ID 'invalid-bogus'/)
186
+ expect(response.message).to match(/'invalid-bogus'/)
187
187
  end
188
188
  end
189
189
 
@@ -215,7 +215,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations do
215
215
  response = subject.get_registration_launch_link(registration_id: "nonexistent-registration")
216
216
  expect(response.success?).to eq false
217
217
  expect(response.status).to eq 404
218
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
218
+ expect(response.message).to match(/'nonexistent-registration'/)
219
219
  expect(response.result).to eq nil
220
220
  end
221
221
  end
@@ -0,0 +1,126 @@
1
+ #
2
+ # NOTE: This spec will only run if a real scorm engine is available!
3
+ # This is because the results returned expose sensitive information
4
+ # and we'd rather they not get cached to VCR fixtures.
5
+ #
6
+ RSpec.describe ScormEngine::Api::Endpoints::Tenants::Configuration do
7
+ around do |example|
8
+ if scorm_engine_is_available?
9
+ VCR.turned_off do
10
+ example.run
11
+ end
12
+ else
13
+ warn "Not running because SCORM engine is not truly available."
14
+ end
15
+ end
16
+
17
+ let(:subject) { scorm_engine_client }
18
+
19
+ describe "#get_tenant_configuration" do
20
+ let(:response) { subject.get_tenant_configuration }
21
+
22
+ it "is successful" do
23
+ expect(response.success?).to eq true
24
+ end
25
+
26
+ describe "results" do
27
+ it "makes settings available as key/value pairs" do
28
+ settings = response.result.settings
29
+ aggregate_failures do
30
+ # just a sampling
31
+ expect(settings.key?("ApiPostbackTimeoutSeconds")).to be_truthy
32
+ expect(settings.key?("ApiUseSignedLaunchLinks")).to be_truthy
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "#post_tenant_configuration" do
39
+ let(:response) {
40
+ subject.post_tenant_configuration(
41
+ settings: { "ApiPostbackTimeoutSeconds" => "15",
42
+ "ApiUseSignedLaunchLinks" => "true" }
43
+ )
44
+ }
45
+
46
+ it "is successful" do
47
+ expect(response.success?).to eq true
48
+ end
49
+
50
+ it "persists the settings" do
51
+ response # trigger the api
52
+ sleep 30
53
+
54
+ configuration = subject.get_tenant_configuration.result
55
+ expect(configuration.settings["ApiPostbackTimeoutSeconds"]).to eq "15"
56
+ expect(configuration.settings["ApiUseSignedLaunchLinks"]).to eq "true"
57
+
58
+ subject.post_tenant_configuration(
59
+ settings: { "ApiPostbackTimeoutSeconds" => "20",
60
+ "ApiUseSignedLaunchLinks" => "false" }
61
+ )
62
+ sleep 30
63
+
64
+ configuration = subject.get_tenant_configuration.result
65
+ expect(configuration.settings["ApiPostbackTimeoutSeconds"]).to eq "20"
66
+ expect(configuration.settings["ApiUseSignedLaunchLinks"]).to eq "false"
67
+ end
68
+
69
+ it "fails when settings are invalid" do
70
+ response = subject.post_tenant_configuration(settings: { "NonExistentSettingTotesBogus" => "YES" })
71
+ expect(response.success?).to eq false
72
+ expect(response.status).to eq 400
73
+ expect(response.message).to match(/NonExistentSettingTotesBogus/)
74
+ end
75
+ end
76
+
77
+ describe "#get_tenant_configuration_setting" do
78
+ let(:response) {
79
+ subject.put_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds", value: 42)
80
+ sleep 30
81
+ subject.get_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds")
82
+ }
83
+
84
+ it "is successful" do
85
+ expect(response.success?).to eq true
86
+ end
87
+
88
+ describe "results" do
89
+ it "returns the value as a string" do
90
+ expect(response.result).to eq "42"
91
+ end
92
+ end
93
+
94
+ it "fails when setting_id is invalid" do
95
+ response = subject.get_tenant_configuration_setting(setting_id: "NonExistentSettingTotesBogus")
96
+ expect(response.success?).to eq false
97
+ expect(response.status).to eq 400
98
+ expect(response.message).to match(/No configuration setting found with id.*NonExistentSettingTotesBogus/)
99
+ expect(response.result).to eq nil
100
+ end
101
+ end
102
+
103
+ describe "#put_tenant_configuration_setting" do
104
+ let(:response) { subject.put_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds", value: 99) }
105
+
106
+ it "is successful" do
107
+ expect(response.success?).to eq true
108
+ end
109
+
110
+ describe "results" do
111
+ it "persists the changes" do
112
+ response # trigger the api
113
+ subject.put_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds", value: 100)
114
+ new_response = subject.get_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds")
115
+ expect(new_response.result).to eq "100"
116
+ end
117
+ end
118
+
119
+ it "fails when setting_id is invalid" do
120
+ response = subject.get_tenant_configuration_setting(setting_id: "NonExistentSettingTotesBogus", value: "42")
121
+ expect(response.success?).to eq false
122
+ expect(response.status).to eq 400
123
+ expect(response.message).to match(/No configuration setting found with id.*NonExistentSettingTotesBogus/)
124
+ end
125
+ end
126
+ end
@@ -8,14 +8,32 @@ RSpec.describe ScormEngine::Faraday::Connection do
8
8
  end
9
9
 
10
10
  describe "#base_uri" do
11
- let(:uri) { scorm_engine_client.base_uri }
11
+ {
12
+ 1 => "https://scorm.engine/ScormEngineInterface/api/v1/",
13
+ 2 => "https://scorm.engine/ScormEngineInterface/api/v2/",
14
+ }.each do |version, expected_url|
15
+ context "with version #{version}" do
16
+ let(:uri) { scorm_engine_client.base_uri(version: version) }
12
17
 
13
- it "returns a URI::HTTPS instance" do
14
- expect(uri).to be_a(URI::HTTPS)
18
+ it "returns a URI::HTTPS instance" do
19
+ expect(uri).to be_a(URI::HTTPS)
20
+ end
21
+
22
+ it "is correct given the configuration" do
23
+ expect(uri.to_s).to eq expected_url
24
+ end
25
+ end
15
26
  end
27
+ end
28
+
29
+ describe "#connection" do
30
+ describe "version" do
31
+ it "passes on to #base_uri" do
32
+ client = ScormEngine::Client.new(tenant: "test")
16
33
 
17
- it "is correct given the configuration" do
18
- expect(uri.to_s).to eq "https://scorm.engine/ScormEngineInterface/api/v1/"
34
+ expect(client).to receive(:base_uri).with(version: 2).and_call_original
35
+ client.send(:connection, { version: 2 })
36
+ end
19
37
  end
20
38
  end
21
39
  end
@@ -0,0 +1,16 @@
1
+ RSpec.describe ScormEngine::Models::TenantConfiguration do
2
+ describe ".new_from_api" do
3
+ describe ":settings" do
4
+ it "a hash built from configurationItems" do
5
+ config = described_class.new_from_api(
6
+ "configurationItems" => [
7
+ { "id" => "Foo", "value" => "YES" },
8
+ { "id" => "Bar", "value" => "123" },
9
+ ]
10
+ )
11
+ expect(config.settings["Foo"]).to eq "YES"
12
+ expect(config.settings["Bar"]).to eq "123"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -18,6 +18,7 @@ end
18
18
  INSERTED_CASSETTES = Set.new
19
19
  module CassetteReporter
20
20
  def insert_cassette(name, options = {})
21
+ return unless VCR.turned_on?
21
22
  INSERTED_CASSETTES << VCR::Cassette.new(name, options).file
22
23
  super
23
24
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scorm_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hallstrom
8
+ - Mel Green
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2019-02-15 00:00:00.000000000 Z
12
+ date: 2020-11-13 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
@@ -16,14 +17,14 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 0.12.2
20
+ version: '0.12'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: 0.12.2
27
+ version: '0.12'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: faraday_middleware
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +87,14 @@ dependencies:
86
87
  requirements:
87
88
  - - "~>"
88
89
  - !ruby/object:Gem::Version
89
- version: '10.0'
90
+ version: '13.0'
90
91
  type: :development
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - "~>"
95
96
  - !ruby/object:Gem::Version
96
- version: '10.0'
97
+ version: '13.0'
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: rspec
99
100
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +129,14 @@ dependencies:
128
129
  requirements:
129
130
  - - "~>"
130
131
  - !ruby/object:Gem::Version
131
- version: '1.2'
132
+ version: '2.3'
132
133
  type: :development
133
134
  prerelease: false
134
135
  version_requirements: !ruby/object:Gem::Requirement
135
136
  requirements:
136
137
  - - "~>"
137
138
  - !ruby/object:Gem::Version
138
- version: '1.2'
139
+ version: '2.3'
139
140
  - !ruby/object:Gem::Dependency
140
141
  name: vcr
141
142
  requirement: !ruby/object:Gem::Requirement
@@ -164,9 +165,10 @@ dependencies:
164
165
  - - "~>"
165
166
  - !ruby/object:Gem::Version
166
167
  version: '0.9'
167
- description: Ruby Client for Rustici's SCORM Engine 2017.1 API
168
+ description: Ruby Client for Rustici's SCORM Engine 2017.1 & 20.1 API
168
169
  email:
169
170
  - phallstrom@instructure.com
171
+ - mgreen@instructure.com
170
172
  executables: []
171
173
  extensions: []
172
174
  extra_rdoc_files: []
@@ -176,6 +178,7 @@ files:
176
178
  - lib/scorm_engine.rb
177
179
  - lib/scorm_engine/api/endpoints.rb
178
180
  - lib/scorm_engine/api/endpoints/about.rb
181
+ - lib/scorm_engine/api/endpoints/configuration.rb
179
182
  - lib/scorm_engine/api/endpoints/courses.rb
180
183
  - lib/scorm_engine/api/endpoints/courses/configuration.rb
181
184
  - lib/scorm_engine/api/endpoints/courses/import.rb
@@ -185,6 +188,7 @@ files:
185
188
  - lib/scorm_engine/api/endpoints/registrations.rb
186
189
  - lib/scorm_engine/api/endpoints/registrations/configuration.rb
187
190
  - lib/scorm_engine/api/endpoints/registrations/launch_history.rb
191
+ - lib/scorm_engine/api/endpoints/tenants/configuration.rb
188
192
  - lib/scorm_engine/client.rb
189
193
  - lib/scorm_engine/configuration.rb
190
194
  - lib/scorm_engine/faraday/connection.rb
@@ -204,6 +208,7 @@ files:
204
208
  - lib/scorm_engine/models/registration_configuration.rb
205
209
  - lib/scorm_engine/models/registration_launch_history.rb
206
210
  - lib/scorm_engine/models/registration_runtime_interaction.rb
211
+ - lib/scorm_engine/models/tenant_configuration.rb
207
212
  - lib/scorm_engine/response.rb
208
213
  - lib/scorm_engine/utils.rb
209
214
  - lib/scorm_engine/version.rb
@@ -215,6 +220,15 @@ files:
215
220
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/is_successful.yml
216
221
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_combined_counts.yml
217
222
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_per_tenantcounts.yml
223
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/fails_when_settings_are_invalid.yml
224
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/is_successful.yml
225
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/is_successful.yml
226
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/returns_metadata_in_raw_response_when_included_in_options.yml
227
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/is_successful.yml
228
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/returns_settings_and_values.yml
229
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/fails_when_settings_are_invalid.yml
230
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/is_successful.yml
231
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/persists_the_settings.yml
218
232
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/fails_when_id_is_invalid.yml
219
233
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/works.yml
220
234
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/fails_when_id_is_invalid.yml
@@ -250,7 +264,6 @@ files:
250
264
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/successful_imports/works.yml
251
265
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/unsuccessful_imports/fails_to_import_given_an_invalid_url.yml
252
266
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/unsuccessful_imports/fails_to_import_a_previously_existing_course.yml
253
- - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/raises_ArgumentError_when_destination_id_is_missing.yml
254
267
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/returns_success_even_when_id_is_invalid.yml
255
268
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/works.yml
256
269
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/fails_when_id_is_invalid.yml
@@ -287,7 +300,6 @@ files:
287
300
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/fails_when_id_is_invalid.yml
288
301
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/is_successful.yml
289
302
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/results/sucessfully_creates_the_dispatch_attributes.yml
290
- - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/when_dispatch_has_registrations/knows_it_s_registration_count.yml
291
303
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_id.yml
292
304
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_type.yml
293
305
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works.yml
@@ -358,6 +370,7 @@ files:
358
370
  - spec/fixtures/zip/Non-working SCORM.zip
359
371
  - spec/fixtures/zip/RuntimeBasicCalls_SCORM20043rdEdition.zip
360
372
  - spec/scorm_engine/api/endpoints/about_spec.rb
373
+ - spec/scorm_engine/api/endpoints/configuration_spec.rb
361
374
  - spec/scorm_engine/api/endpoints/courses/configuration_spec.rb
362
375
  - spec/scorm_engine/api/endpoints/courses/import_spec.rb
363
376
  - spec/scorm_engine/api/endpoints/courses_spec.rb
@@ -367,6 +380,7 @@ files:
367
380
  - spec/scorm_engine/api/endpoints/registrations/configuration_spec.rb
368
381
  - spec/scorm_engine/api/endpoints/registrations/launch_history_spec.rb
369
382
  - spec/scorm_engine/api/endpoints/registrations_spec.rb
383
+ - spec/scorm_engine/api/endpoints/tenants/configuration_spec.rb
370
384
  - spec/scorm_engine/configuration_spec.rb
371
385
  - spec/scorm_engine/faraday/connection_spec.rb
372
386
  - spec/scorm_engine/models/base_spec.rb
@@ -382,6 +396,7 @@ files:
382
396
  - spec/scorm_engine/models/registration_launch_history_spec.rb
383
397
  - spec/scorm_engine/models/registration_runtime_interaction_spec.rb
384
398
  - spec/scorm_engine/models/registration_spec.rb
399
+ - spec/scorm_engine/models/tenant_configuration_spec.rb
385
400
  - spec/scorm_engine/utils_spec.rb
386
401
  - spec/scorm_engine/version_spec.rb
387
402
  - spec/scorm_engine_spec.rb
@@ -410,8 +425,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
410
425
  version: '0'
411
426
  requirements: []
412
427
  rubyforge_project:
413
- rubygems_version: 2.7.6
428
+ rubygems_version: 2.7.6.2
414
429
  signing_key:
415
430
  specification_version: 4
416
- summary: Ruby Client for Rustici's SCORM Engine 2017.1 API
431
+ summary: Ruby Client for Rustici's SCORM Engine API
417
432
  test_files: []