clever-ruby 0.14.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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