clever-ruby 0.14.0 → 1.0.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 (297) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/Gemfile +4 -1
  4. data/Makefile +10 -0
  5. data/README.md +175 -68
  6. data/Rakefile +6 -36
  7. data/circle.yml +1 -1
  8. data/clever-ruby.gemspec +43 -33
  9. data/docs/BadRequest.md +8 -0
  10. data/docs/DataApi.md +2144 -0
  11. data/docs/District.md +10 -0
  12. data/docs/DistrictAdmin.md +12 -0
  13. data/docs/DistrictAdminResponse.md +8 -0
  14. data/docs/DistrictAdminsResponse.md +8 -0
  15. data/docs/DistrictObject.md +8 -0
  16. data/docs/DistrictResponse.md +8 -0
  17. data/docs/DistrictStatus.md +15 -0
  18. data/docs/DistrictStatusResponse.md +8 -0
  19. data/docs/DistrictsCreated.md +10 -0
  20. data/docs/DistrictsDeleted.md +10 -0
  21. data/docs/DistrictsResponse.md +8 -0
  22. data/docs/DistrictsUpdated.md +10 -0
  23. data/docs/Event.md +9 -0
  24. data/docs/EventResponse.md +8 -0
  25. data/docs/EventsApi.md +424 -0
  26. data/docs/EventsResponse.md +8 -0
  27. data/docs/GradeLevelsResponse.md +8 -0
  28. data/docs/InternalError.md +8 -0
  29. data/docs/Location.md +13 -0
  30. data/docs/Name.md +10 -0
  31. data/docs/NotFound.md +8 -0
  32. data/docs/Principal.md +9 -0
  33. data/docs/School.md +22 -0
  34. data/docs/SchoolAdmin.md +14 -0
  35. data/docs/SchoolAdminObject.md +8 -0
  36. data/docs/SchoolAdminResponse.md +8 -0
  37. data/docs/SchoolAdminsResponse.md +8 -0
  38. data/docs/SchoolObject.md +8 -0
  39. data/docs/SchoolResponse.md +8 -0
  40. data/docs/SchooladminsCreated.md +10 -0
  41. data/docs/SchooladminsDeleted.md +10 -0
  42. data/docs/SchooladminsUpdated.md +10 -0
  43. data/docs/SchoolsCreated.md +10 -0
  44. data/docs/SchoolsDeleted.md +10 -0
  45. data/docs/SchoolsResponse.md +8 -0
  46. data/docs/SchoolsUpdated.md +10 -0
  47. data/docs/Section.md +25 -0
  48. data/docs/SectionObject.md +8 -0
  49. data/docs/SectionResponse.md +8 -0
  50. data/docs/SectionsCreated.md +10 -0
  51. data/docs/SectionsDeleted.md +10 -0
  52. data/docs/SectionsResponse.md +8 -0
  53. data/docs/SectionsUpdated.md +10 -0
  54. data/docs/Student.md +27 -0
  55. data/docs/StudentContact.md +16 -0
  56. data/docs/StudentContactObject.md +8 -0
  57. data/docs/StudentContactResponse.md +8 -0
  58. data/docs/StudentContactsResponse.md +8 -0
  59. data/docs/StudentObject.md +8 -0
  60. data/docs/StudentResponse.md +8 -0
  61. data/docs/StudentcontactsCreated.md +10 -0
  62. data/docs/StudentcontactsDeleted.md +10 -0
  63. data/docs/StudentcontactsUpdated.md +10 -0
  64. data/docs/StudentsCreated.md +10 -0
  65. data/docs/StudentsDeleted.md +10 -0
  66. data/docs/StudentsResponse.md +8 -0
  67. data/docs/StudentsUpdated.md +10 -0
  68. data/docs/Teacher.md +19 -0
  69. data/docs/TeacherObject.md +8 -0
  70. data/docs/TeacherResponse.md +8 -0
  71. data/docs/TeachersCreated.md +10 -0
  72. data/docs/TeachersDeleted.md +10 -0
  73. data/docs/TeachersResponse.md +8 -0
  74. data/docs/TeachersUpdated.md +10 -0
  75. data/docs/Term.md +10 -0
  76. data/git_push.sh +55 -0
  77. data/instructions.md +12 -0
  78. data/lib/clever-ruby.rb +89 -318
  79. data/lib/clever-ruby/api/data_api.rb +2090 -0
  80. data/lib/clever-ruby/api/events_api.rb +429 -0
  81. data/lib/clever-ruby/api_client.rb +401 -0
  82. data/lib/clever-ruby/api_error.rb +37 -0
  83. data/lib/clever-ruby/configuration.rb +187 -25
  84. data/lib/clever-ruby/models/bad_request.rb +187 -0
  85. data/lib/clever-ruby/models/district.rb +205 -0
  86. data/lib/clever-ruby/models/district_admin.rb +223 -0
  87. data/lib/clever-ruby/models/district_admin_response.rb +187 -0
  88. data/lib/clever-ruby/models/district_admins_response.rb +189 -0
  89. data/lib/clever-ruby/models/district_object.rb +187 -0
  90. data/lib/clever-ruby/models/district_response.rb +187 -0
  91. data/lib/clever-ruby/models/district_status.rb +250 -0
  92. data/lib/clever-ruby/models/district_status_response.rb +187 -0
  93. data/lib/clever-ruby/models/districts_created.rb +206 -0
  94. data/lib/clever-ruby/models/districts_deleted.rb +207 -0
  95. data/lib/clever-ruby/models/districts_response.rb +189 -0
  96. data/lib/clever-ruby/models/districts_updated.rb +207 -0
  97. data/lib/clever-ruby/models/event.rb +201 -0
  98. data/lib/clever-ruby/models/event_response.rb +187 -0
  99. data/lib/clever-ruby/models/events_response.rb +189 -0
  100. data/lib/clever-ruby/models/grade_levels_response.rb +189 -0
  101. data/lib/clever-ruby/models/internal_error.rb +187 -0
  102. data/lib/clever-ruby/models/location.rb +232 -0
  103. data/lib/clever-ruby/models/name.rb +205 -0
  104. data/lib/clever-ruby/models/not_found.rb +187 -0
  105. data/lib/clever-ruby/models/principal.rb +196 -0
  106. data/lib/clever-ruby/models/school.rb +313 -0
  107. data/lib/clever-ruby/models/school_admin.rb +243 -0
  108. data/lib/clever-ruby/models/school_admin_object.rb +187 -0
  109. data/lib/clever-ruby/models/school_admin_response.rb +187 -0
  110. data/lib/clever-ruby/models/school_admins_response.rb +189 -0
  111. data/lib/clever-ruby/models/school_object.rb +187 -0
  112. data/lib/clever-ruby/models/school_response.rb +187 -0
  113. data/lib/clever-ruby/models/schooladmins_created.rb +207 -0
  114. data/lib/clever-ruby/models/schooladmins_deleted.rb +207 -0
  115. data/lib/clever-ruby/models/schooladmins_updated.rb +207 -0
  116. data/lib/clever-ruby/models/schools_created.rb +207 -0
  117. data/lib/clever-ruby/models/schools_deleted.rb +207 -0
  118. data/lib/clever-ruby/models/schools_response.rb +189 -0
  119. data/lib/clever-ruby/models/schools_updated.rb +207 -0
  120. data/lib/clever-ruby/models/section.rb +344 -0
  121. data/lib/clever-ruby/models/section_object.rb +187 -0
  122. data/lib/clever-ruby/models/section_response.rb +187 -0
  123. data/lib/clever-ruby/models/sections_created.rb +207 -0
  124. data/lib/clever-ruby/models/sections_deleted.rb +207 -0
  125. data/lib/clever-ruby/models/sections_response.rb +189 -0
  126. data/lib/clever-ruby/models/sections_updated.rb +207 -0
  127. data/lib/clever-ruby/models/student.rb +360 -0
  128. data/lib/clever-ruby/models/student_contact.rb +259 -0
  129. data/lib/clever-ruby/models/student_contact_object.rb +187 -0
  130. data/lib/clever-ruby/models/student_contact_response.rb +187 -0
  131. data/lib/clever-ruby/models/student_contacts_response.rb +189 -0
  132. data/lib/clever-ruby/models/student_object.rb +187 -0
  133. data/lib/clever-ruby/models/student_response.rb +187 -0
  134. data/lib/clever-ruby/models/studentcontacts_created.rb +207 -0
  135. data/lib/clever-ruby/models/studentcontacts_deleted.rb +207 -0
  136. data/lib/clever-ruby/models/studentcontacts_updated.rb +207 -0
  137. data/lib/clever-ruby/models/students_created.rb +196 -0
  138. data/lib/clever-ruby/models/students_deleted.rb +206 -0
  139. data/lib/clever-ruby/models/students_response.rb +189 -0
  140. data/lib/clever-ruby/models/students_updated.rb +207 -0
  141. data/lib/clever-ruby/models/teacher.rb +288 -0
  142. data/lib/clever-ruby/models/teacher_object.rb +187 -0
  143. data/lib/clever-ruby/models/teacher_response.rb +187 -0
  144. data/lib/clever-ruby/models/teachers_created.rb +207 -0
  145. data/lib/clever-ruby/models/teachers_deleted.rb +207 -0
  146. data/lib/clever-ruby/models/teachers_response.rb +189 -0
  147. data/lib/clever-ruby/models/teachers_updated.rb +207 -0
  148. data/lib/clever-ruby/models/term.rb +205 -0
  149. data/lib/clever-ruby/version.rb +12 -4
  150. data/override/api_client.rb +401 -0
  151. data/override/config.json +5 -0
  152. data/override/models/districts_created.rb +206 -0
  153. data/override/models/districts_deleted.rb +207 -0
  154. data/override/models/districts_updated.rb +207 -0
  155. data/override/models/schooladmins_created.rb +207 -0
  156. data/override/models/schooladmins_deleted.rb +207 -0
  157. data/override/models/schooladmins_updated.rb +207 -0
  158. data/override/models/schools_created.rb +207 -0
  159. data/override/models/schools_deleted.rb +207 -0
  160. data/override/models/schools_updated.rb +207 -0
  161. data/override/models/sections_created.rb +207 -0
  162. data/override/models/sections_deleted.rb +207 -0
  163. data/override/models/sections_updated.rb +207 -0
  164. data/override/models/studentcontacts_created.rb +207 -0
  165. data/override/models/studentcontacts_deleted.rb +207 -0
  166. data/override/models/studentcontacts_updated.rb +207 -0
  167. data/override/models/students_created.rb +196 -0
  168. data/override/models/students_deleted.rb +206 -0
  169. data/override/models/students_updated.rb +207 -0
  170. data/override/models/teachers_created.rb +207 -0
  171. data/override/models/teachers_deleted.rb +207 -0
  172. data/override/models/teachers_updated.rb +207 -0
  173. data/override/override.sh +9 -0
  174. data/sample/sample.rb +16 -0
  175. metadata +252 -293
  176. data/.document +0 -5
  177. data/.gitignore +0 -22
  178. data/.rubocop.yml +0 -4
  179. data/.yardopts +0 -2
  180. data/LICENSE.txt +0 -20
  181. data/lib/clever-ruby/api_operations/list.rb +0 -130
  182. data/lib/clever-ruby/api_operations/nested_list.rb +0 -95
  183. data/lib/clever-ruby/api_operations/page.rb +0 -71
  184. data/lib/clever-ruby/api_operations/pagelist.rb +0 -43
  185. data/lib/clever-ruby/api_operations/results_list.rb +0 -31
  186. data/lib/clever-ruby/api_resource.rb +0 -174
  187. data/lib/clever-ruby/clever_object.rb +0 -246
  188. data/lib/clever-ruby/district.rb +0 -75
  189. data/lib/clever-ruby/district_admin.rb +0 -45
  190. data/lib/clever-ruby/errors/api_connection_error.rb +0 -5
  191. data/lib/clever-ruby/errors/api_error.rb +0 -5
  192. data/lib/clever-ruby/errors/authentication_error.rb +0 -5
  193. data/lib/clever-ruby/errors/clever_error.rb +0 -52
  194. data/lib/clever-ruby/errors/invalid_request_error.rb +0 -17
  195. data/lib/clever-ruby/event.rb +0 -61
  196. data/lib/clever-ruby/json.rb +0 -34
  197. data/lib/clever-ruby/nested_resource.rb +0 -41
  198. data/lib/clever-ruby/school.rb +0 -17
  199. data/lib/clever-ruby/school_admin.rb +0 -19
  200. data/lib/clever-ruby/section.rb +0 -17
  201. data/lib/clever-ruby/student.rb +0 -30
  202. data/lib/clever-ruby/teacher.rb +0 -17
  203. data/lib/clever-ruby/util.rb +0 -108
  204. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_district_properly.yml +0 -52
  205. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_event_properly.yml +0 -52
  206. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_admin_properly.yml +0 -52
  207. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_properly.yml +0 -52
  208. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_section_properly.yml +0 -52
  209. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml +0 -52
  210. data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml +0 -52
  211. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml +0 -101
  212. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml +0 -90
  213. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml +0 -124
  214. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml +0 -113
  215. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml +0 -101
  216. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_section.yml +0 -368
  217. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_student.yml +0 -176
  218. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_teacher.yml +0 -191
  219. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_by_page.yml +0 -101
  220. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_with_multiple_ids.yml +0 -101
  221. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_by_page.yml +0 -122
  222. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_with_multiple_ids.yml +0 -131
  223. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_by_page.yml +0 -101
  224. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_with_multiple_ids.yml +0 -101
  225. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_by_page.yml +0 -110
  226. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_with_multiple_ids.yml +0 -116
  227. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_by_page.yml +0 -1168
  228. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_with_multiple_ids.yml +0 -163
  229. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_by_page.yml +0 -1207
  230. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_with_multiple_ids.yml +0 -127
  231. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_by_page.yml +0 -190
  232. data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml +0 -131
  233. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_district.yml +0 -101
  234. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_event.yml +0 -122
  235. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school.yml +0 -110
  236. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school_admin.yml +0 -101
  237. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_section.yml +0 -1168
  238. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_student.yml +0 -1207
  239. data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_teacher.yml +0 -190
  240. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_events.yml +0 -526
  241. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_schools.yml +0 -240
  242. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_sections.yml +0 -3674
  243. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_students.yml +0 -2387
  244. data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_teachers.yml +0 -717
  245. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_events.yml +0 -152
  246. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_schools.yml +0 -211
  247. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_sections.yml +0 -3649
  248. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_students.yml +0 -2362
  249. data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_teachers.yml +0 -688
  250. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_events.yml +0 -89
  251. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_school_admins.yml +0 -101
  252. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_schools.yml +0 -164
  253. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_sections.yml +0 -1168
  254. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_students.yml +0 -1207
  255. data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_teachers.yml +0 -324
  256. data/test/data/vcr_cassettes/Clever_NestedResource/must_include_auth_token_in_linked_resources.yml +0 -197
  257. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_events.yml +0 -237
  258. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_schools.yml +0 -217
  259. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_sections.yml +0 -2333
  260. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_students.yml +0 -2411
  261. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_teachers.yml +0 -377
  262. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_admin_s_schools.yml +0 -205
  263. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_district.yml +0 -162
  264. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_events.yml +0 -215
  265. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_sections.yml +0 -1153
  266. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_students.yml +0 -1081
  267. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_teachers.yml +0 -283
  268. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_district.yml +0 -417
  269. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_events.yml +0 -470
  270. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_school.yml +0 -420
  271. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_students.yml +0 -482
  272. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_teacher.yml +0 -418
  273. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_district.yml +0 -226
  274. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_events.yml +0 -279
  275. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_school.yml +0 -229
  276. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_sections.yml +0 -301
  277. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_teachers.yml +0 -277
  278. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_district.yml +0 -240
  279. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_events.yml +0 -293
  280. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_school.yml +0 -243
  281. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_sections.yml +0 -321
  282. data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_students.yml +0 -323
  283. data/test/data/vcr_cassettes/Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml +0 -151
  284. data/test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml +0 -55
  285. data/test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml +0 -800
  286. data/test/integration/api_operations/list_test.rb +0 -117
  287. data/test/integration/district_test.rb +0 -53
  288. data/test/integration/district_with_non_global_token_test.rb +0 -88
  289. data/test/integration/error_handling_test.rb +0 -17
  290. data/test/integration/last_test.rb +0 -56
  291. data/test/integration/nested_resource_test.rb +0 -31
  292. data/test/test_helper.rb +0 -18
  293. data/test/unit/api_resource_test.rb +0 -48
  294. data/test/unit/clever_test.rb +0 -65
  295. data/test/unit/configuration_test.rb +0 -37
  296. data/test/unit/event_test.rb +0 -57
  297. data/test/unit/optional_attributes_test.rb +0 -27
@@ -1,117 +0,0 @@
1
- require 'test_helper'
2
-
3
- def resource_name(resource)
4
- resource.shortname
5
- end
6
-
7
- # The DistrictAdmin resource does not support the count or limit parameters
8
- def limitable_countable_resources
9
- [Clever::District, Clever::School, Clever::Teacher,
10
- Clever::Student, Clever::Section, Clever::Event,
11
- Clever::SchoolAdmin]
12
- end
13
-
14
- def resources
15
- limitable_countable_resources + [Clever::DistrictAdmin]
16
- end
17
-
18
- module Minitest
19
- # Extend default Minitest assertions
20
- module Assertions
21
- def assert_resource_type(resource, elem)
22
- assert_instance_of resource, elem, "All elems of #{resource.url} should be of "\
23
- "type #{resource.name}, instead got #{elem.class.name}. elem: #{elem.inspect}"
24
- end
25
- end
26
- end
27
-
28
- # Test api_operations/List
29
- describe Clever::APIOperations::List, :vcr do
30
- before do
31
- Clever.configure do |config|
32
- config.token = 'DEMO_TOKEN'
33
- end
34
- end
35
-
36
- [[Clever::District, 1], [Clever::School, 3], [Clever::Teacher, 89],
37
- [Clever::Student, 1004], [Clever::Section, 379], [Clever::Event, 7],
38
- [Clever::SchoolAdmin, 1]].each do |test_data|
39
- resource, expected = test_data
40
- name = resource_name resource
41
-
42
- it "counts #{name} properly" do
43
- count = resource.count
44
- assert count.is_a?(Integer), "count should return an Integer. count: #{count}"
45
- assert_equal expected, count, "Expected #{expected} #{name}s to exist, "\
46
- "but only #{count} were found. Perhaps the test data has changed?"
47
- end
48
- end
49
-
50
- resources.each do |resource|
51
- name = resource_name resource
52
-
53
- it "rejects invalid id for #{resource}.find one" do
54
- id = 'invalid_id'
55
- assert_raises(ArgumentError) { resource.find id }
56
- end
57
-
58
- it "finds a single #{name}" do
59
- id = resource.find.take(20).last.id
60
- elem = resource.find id
61
- assert_resource_type resource, elem
62
- assert_equal id, elem.id
63
- end
64
- end
65
-
66
- limitable_countable_resources.each do |resource|
67
- name = resource_name resource
68
-
69
- it 'rejects invalid ids for Clever::District.find multiple' do
70
- # one valid, one invalid
71
- ids = %w(123412341234123412341234 invalid_id)
72
- assert_raises(ArgumentError) { Clever::District.find ids }
73
- end
74
-
75
- it "finds #{name}s with multiple ids" do
76
- to_query = []
77
- count = 0
78
- limit = 20
79
- resource.find(nil, limit: limit).take(limit).each do |elem|
80
- to_query << elem.id if count.even?
81
- count += 1
82
- end
83
-
84
- return if to_query.count == 0
85
- found = resource.find(to_query).map(&:id)
86
- assert_equal to_query.sort, found.sort, 'Elements found by querying by array of ids '\
87
- "should match the query itself. Expected: #{to_query.inspect}, found: #{found.inspect}"
88
- end
89
-
90
- it "finds #{name}s by page" do
91
- result = resource.find
92
- assert_instance_of Clever::APIOperations::ResultsList, result, 'Result should be '\
93
- "a Clever::APIOperations::ResultsList, received #{result.inspect}"
94
- count = 0
95
- result.each do |elem|
96
- count += 1
97
- assert_resource_type resource, elem
98
- end
99
-
100
- expected = resource.count
101
- count.must_equal expected, "Expected #{expected} #{name}s to be "\
102
- "retrieved but only #{count} were found. Perhaps the test data has changed?"
103
- end
104
-
105
- it "retrieves all #{name}" do
106
- elems = resource.all
107
- elems.each do |elem|
108
- assert_instance_of resource, elem, "All elems of #{resource.url} should be of "\
109
- "type #{resource.name}, instead got #{elem.class.name}. elem: #{elem.inspect}"
110
- end
111
-
112
- expected = resource.count
113
- elems.length.must_equal expected, "Expected #{expected} #{name}s to be "\
114
- "retrieved but only #{elems.length} were found. Perhaps the test data has changed?"
115
- end
116
- end
117
- end
@@ -1,53 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Minitest
4
- # Add assertions to Minitest
5
- module Assertions
6
- def assert_valid_object_pages(object_name, limit, page_count)
7
- district = Clever::District.all.first
8
- object_count_from_list = district.send("#{object_name}s", limit: 100_000).size
9
-
10
- object_count_from_paging = 0
11
- pages = 0
12
- district.send("#{object_name}_pages", limit: limit).each do |object_page|
13
- pages += 1
14
- objects = object_page.all
15
- object_count_from_paging += objects.size
16
- end
17
-
18
- object_count_from_paging.must_equal object_count_from_list
19
- pages.must_equal page_count
20
- end
21
- end
22
- end
23
-
24
- describe Clever::District, :vcr do
25
- before do
26
- Clever.configure do |config|
27
- config.token = 'DEMO_TOKEN'
28
- end
29
- end
30
-
31
- # TODO: this is outdated and should be removed!
32
- describe 'pages methods' do
33
- it "pages a district's schools" do
34
- assert_valid_object_pages 'school', 2, 2
35
- end
36
-
37
- it "pages a district's teachers" do
38
- assert_valid_object_pages 'teacher', 10, 9
39
- end
40
-
41
- it "pages a district's sections" do
42
- assert_valid_object_pages 'section', 10, 38
43
- end
44
-
45
- it "pages a district's students" do
46
- assert_valid_object_pages 'student', 50, 21
47
- end
48
-
49
- it "pages a district's events" do
50
- assert_valid_object_pages 'event', 1, 8
51
- end
52
- end
53
- end
@@ -1,88 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Minitest
4
- # Add assertions to Minitest
5
- module Assertions
6
- def assert_valid_object_list(plural_object_name, object_count, instance_name)
7
- district = Clever::District.retrieve('4fd43cc56d11340000000005', 'DEMO_TOKEN')
8
- district.send(plural_object_name).size.must_equal object_count
9
- district.send(plural_object_name).first.must_be_instance_of instance_name
10
- end
11
-
12
- def assert_valid_object_pages(object_name, limit, page_count)
13
- district = Clever::District.retrieve('4fd43cc56d11340000000005', 'DEMO_TOKEN')
14
- object_count_from_list = district.send("#{object_name}s", limit: 100_000).size
15
-
16
- object_count_from_paging = 0
17
- pages = 0
18
- district.send("#{object_name}_pages", limit: limit).each do |object_page|
19
- pages += 1
20
- objects = object_page.all
21
- object_count_from_paging += objects.size
22
- end
23
-
24
- object_count_from_paging.must_equal object_count_from_list
25
- pages.must_equal page_count
26
- end
27
- end
28
- end
29
-
30
- describe 'Clever::District without global token', :vcr do
31
- before do
32
- Clever.configure do |config|
33
- config.token = nil
34
- end
35
- end
36
-
37
- it "retrieves a district's schools" do
38
- assert_valid_object_list 'schools', 3, Clever::School
39
- end
40
-
41
- it "retrieves a district's teachers" do
42
- assert_valid_object_list 'teachers', 89, Clever::Teacher
43
- end
44
-
45
- it "retrieves a district's sections" do
46
- VCR.use_cassette('Clever_District_without_global_token/retrieves_a_district_s_sections',
47
- allow_playback_repeats: true) do
48
- assert_valid_object_list 'sections', 379, Clever::Section
49
- end
50
- end
51
-
52
- it "retrieves a district's students" do
53
- VCR.use_cassette('Clever_District_without_global_token/retrieves_a_district_s_students',
54
- allow_playback_repeats: true) do
55
- assert_valid_object_list 'students', 1004, Clever::Student
56
- end
57
- end
58
-
59
- it "retrieves a district's school admins" do
60
- VCR.use_cassette('Clever_District_without_global_token/retrieves_a_district_s_school_admins',
61
- allow_playback_repeats: true) do
62
- assert_valid_object_list 'school_admins', 1, Clever::SchoolAdmin
63
- end
64
- end
65
-
66
- # TODO: this is outdated and should be removed!
67
- describe 'pages methods' do
68
- it "pages a district's schools" do
69
- assert_valid_object_pages 'school', 2, 2
70
- end
71
-
72
- it "pages a district's teachers" do
73
- assert_valid_object_pages 'teacher', 10, 9
74
- end
75
-
76
- it "pages a district's sections" do
77
- assert_valid_object_pages 'section', 10, 38
78
- end
79
-
80
- it "pages a district's students" do
81
- assert_valid_object_pages 'student', 50, 21
82
- end
83
-
84
- it "pages a district's events" do
85
- assert_valid_object_pages 'event', 2, 1
86
- end
87
- end
88
- end
@@ -1,17 +0,0 @@
1
- require 'test_helper'
2
-
3
- # Test error handling
4
- describe 'Error handling', :vcr do
5
- before do
6
- Clever.configure do |config|
7
- config.token = 'DEMO_TOKEN'
8
- end
9
- end
10
-
11
- it 'raises an InvalidRequestError when given a bad created_since' do
12
- @district = Clever::District.find.first
13
- lambda do
14
- @district.events(created_since: '2013-02-15T 2:30:42 0000').first
15
- end.must_raise Clever::InvalidRequestError
16
- end
17
- end
@@ -1,56 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe 'last method', :vcr do
4
- before do
5
- Clever.configure do |config|
6
- config.token = 'DEMO_TOKEN'
7
- end
8
- end
9
-
10
- # The DistrictAdmin resource does not support the last method (limit parameter)
11
- resources = [Clever::District, Clever::School, Clever::Student,
12
- Clever::Event, Clever::Section, Clever::Teacher,
13
- Clever::SchoolAdmin]
14
-
15
- describe 'page' do
16
- it 'has working first and last methods' do
17
- resources.each do |resource|
18
- page = Clever::APIOperations::Page.new resource.url
19
- list = page.all
20
-
21
- page.first.must_equal list.first
22
- page.last.must_equal list.last
23
- page.first(10).must_equal list.first(10)
24
- page.last(10).must_equal list.last(10)
25
- end
26
- end
27
- end
28
-
29
- describe 'nested resource' do
30
- it 'has working first and last methods' do
31
- resources.each do |resource|
32
- resource.linked_resources do |l|
33
- nested = resource.first.send l
34
- nested_resource = Clever::APIResource.named l
35
- if Clever::APIResource.singular? l
36
- nested.first.must_be_instance_of nested_resource
37
- else
38
- nested.first.must_be_instance_of nested_resource
39
- nested.first(10).each do |e|
40
- e.must_be_intsance_of nested_resource
41
- end
42
-
43
- last = nested.last
44
- last.must_be_instance_of nested_resource
45
- count = 0
46
- nested.last(10).each do |e|
47
- e.must_be_intsance_of nested_resource
48
- e.must_equal last if count == 19
49
- count += 1
50
- end
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,31 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe Clever::NestedResource, :vcr do
4
- before do
5
- Clever.configure do |config|
6
- config.token = 'DEMO_TOKEN'
7
- end
8
- end
9
-
10
- [Clever::District, Clever::School, Clever::Student,
11
- Clever::Event, Clever::Section, Clever::Teacher,
12
- Clever::SchoolAdmin, Clever::DistrictAdmin].each do |resource|
13
- next if resource.linked_resources.nil?
14
- resource.linked_resources.each do |link|
15
- it "retrieves a #{resource.shortname}'s #{link}" do
16
- result = resource.find.first.send link
17
- if Clever::APIResource.singular?(link.to_s)
18
- result.must_be_instance_of Clever::APIResource.named(link.to_s)
19
- else
20
- result.must_be_instance_of Clever::NestedResource
21
- result.size.must_equal result.count # check count request measures actual data size
22
- end
23
- end
24
- end
25
- end
26
-
27
- it 'must include auth_token in linked_resources' do
28
- school = Clever::District.find.first.send(:schools).first
29
- school.auth_token.must_equal 'DEMO_TOKEN'
30
- end
31
- end
@@ -1,18 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
-
3
- require 'minitest/autorun'
4
- require 'minispec-metadata'
5
- require 'vcr'
6
- require 'minitest-vcr'
7
- require 'clever-ruby'
8
-
9
- questionmark_agnostic_matcher = lambda do |request1, request2|
10
- request1.uri.sub(/\?\z/, '') == request2.uri.sub(/\?\z/, '')
11
- end
12
-
13
- VCR.configure do |c|
14
- c.default_cassette_options = { match_requests_on: [:method, questionmark_agnostic_matcher] }
15
- c.cassette_library_dir = 'test/data/vcr_cassettes'
16
- c.hook_into :webmock
17
- end
18
- MinitestVcr::Spec.configure!
@@ -1,48 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe Clever::APIResource do
4
- let :resources do
5
- { district: { plural: 'districts', klass: Clever::District },
6
- school: { plural: 'schools', klass: Clever::School },
7
- section: { plural: 'sections', klass: Clever::Section },
8
- event: { plural: 'events', klass: Clever::Event },
9
- teacher: { plural: 'teachers', klass: Clever::Teacher },
10
- student: { plural: 'students', klass: Clever::Student },
11
- school_admin: { plural: 'school_admins', klass: Clever::SchoolAdmin },
12
- district_admin: { plural: 'district_admins', klass: Clever::DistrictAdmin } }
13
- end
14
-
15
- describe :singular do
16
- it 'identifies singular and plural resource names' do
17
- resources.each do |singular, klass_info|
18
- Clever::APIResource.singular?(singular).must_equal true
19
- Clever::APIResource.singular?(klass_info[:plural]).must_equal false
20
- end
21
- end
22
-
23
- it 'fails on non-resource names' do
24
- -> { Clever::APIResource.singular?('thing') }.must_raise RuntimeError
25
- end
26
- end
27
-
28
- describe :named do
29
- it 'returns nil on nonexistent resources' do
30
- Clever::APIResource.named('fake_resource').must_equal nil
31
- end
32
-
33
- it 'returns valid responses for both symbol and string inputs' do
34
- resources.each do |res_name, klass_info|
35
- Clever::APIResource.named(res_name.to_s).must_equal klass_info[:klass]
36
- Clever::APIResource.named(res_name.to_sym).must_equal klass_info[:klass]
37
- end
38
- end
39
-
40
- it 'returns valid responses for both singular and plural words' do
41
- resources.each do |res_name, klass_info|
42
- Clever::APIResource.named(res_name.to_s).must_equal klass_info[:klass]
43
- Clever::APIResource.named(
44
- klass_info[:plural]).must_equal klass_info[:klass]
45
- end
46
- end
47
- end
48
- end
@@ -1,65 +0,0 @@
1
- require 'test_helper'
2
- require 'json'
3
-
4
- # basic clever-ruby tests
5
- # TODO: organize better
6
- describe Clever do
7
- before do
8
- Clever.configure do |config|
9
- config.token = 'DEMO_TOKEN'
10
- end
11
- end
12
-
13
- it 'returns correct urls for Resources' do
14
- assert_equal 'v1.1/districts', Clever::District.url
15
- assert_equal 'v1.1/schools', Clever::School.url
16
- assert_equal 'v1.1/students', Clever::Student.url
17
- assert_equal 'v1.1/sections', Clever::Section.url
18
- assert_equal 'v1.1/teachers', Clever::Teacher.url
19
- assert_equal 'v1.1/events', Clever::Event.url
20
- assert_equal 'v1.1/school_admins', Clever::SchoolAdmin.url
21
- assert_equal 'v1.1/district_admins', Clever::DistrictAdmin.url
22
- end
23
-
24
- it 'uri-encodes params' do
25
- query_string = Clever.convert_to_query_string created_at: '2013-02-15T 2:30:42Z'
26
- query_string.must_equal 'created_at=2013-02-15T%202:30:42Z'
27
- end
28
-
29
- describe '.create_request_opts' do
30
- before do
31
- method, url = 'get', 'quotes'
32
- params = { education: 'powerful weapon' }
33
- headers = { author: 'Nelson Mandela' }
34
- @options = Clever.create_request_opts method, url, params, headers
35
- end
36
- it 'sets method and url' do
37
- assert_equal 'get', @options[:method], 'Method not set properly'
38
- assert_equal(
39
- 'https://api.clever.com/quotes?education=powerful%20weapon',
40
- @options[:url],
41
- 'URL not formed properly with params')
42
- end
43
- it 'adds tracking headers' do
44
- headers = @options[:headers]
45
- assert headers.key?(:Authorization), 'Did not set authorization header'
46
- assert_match(/Bearer/, headers[:Authorization])
47
- assert headers.key?(:user_agent), 'Did not set User Agent header'
48
- assert_match %r{Clever/RubyBindings/}, headers[:user_agent]
49
- assert(
50
- headers.key?(:x_clever_client_user_agent),
51
- 'Did not set Clever Client User Agent header')
52
- assert headers.key?(:author), 'Did not keep original header'
53
-
54
- custom_ua = JSON.parse(headers[:x_clever_client_user_agent], symbolize_names: true)
55
- assert custom_ua.key?(:lang), 'Did not set lang in custom user agent header'
56
- assert_equal custom_ua[:lang], 'ruby', 'Lang is not set to ruby'
57
- assert custom_ua.key?(:lang_version), 'Did not set lang_version in custom user agent header'
58
- assert custom_ua.key?(:platform), 'Did not set platform in custom user agent header'
59
- assert custom_ua.key?(:uname), 'Did not set uname in custom user agent header'
60
- assert custom_ua.key?(:publisher), 'Did not set publisher in custom user agent header'
61
- assert_equal custom_ua[:publisher], 'clever', 'Did not set publisher to clever'
62
- assert custom_ua.key?(:bindings_version), 'Did not set bindings_version'
63
- end
64
- end
65
- end