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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +4 -1
- data/Makefile +10 -0
- data/README.md +175 -68
- data/Rakefile +6 -36
- data/circle.yml +1 -1
- data/clever-ruby.gemspec +43 -33
- data/docs/BadRequest.md +8 -0
- data/docs/DataApi.md +2144 -0
- data/docs/District.md +10 -0
- data/docs/DistrictAdmin.md +12 -0
- data/docs/DistrictAdminResponse.md +8 -0
- data/docs/DistrictAdminsResponse.md +8 -0
- data/docs/DistrictObject.md +8 -0
- data/docs/DistrictResponse.md +8 -0
- data/docs/DistrictStatus.md +15 -0
- data/docs/DistrictStatusResponse.md +8 -0
- data/docs/DistrictsCreated.md +10 -0
- data/docs/DistrictsDeleted.md +10 -0
- data/docs/DistrictsResponse.md +8 -0
- data/docs/DistrictsUpdated.md +10 -0
- data/docs/Event.md +9 -0
- data/docs/EventResponse.md +8 -0
- data/docs/EventsApi.md +424 -0
- data/docs/EventsResponse.md +8 -0
- data/docs/GradeLevelsResponse.md +8 -0
- data/docs/InternalError.md +8 -0
- data/docs/Location.md +13 -0
- data/docs/Name.md +10 -0
- data/docs/NotFound.md +8 -0
- data/docs/Principal.md +9 -0
- data/docs/School.md +22 -0
- data/docs/SchoolAdmin.md +14 -0
- data/docs/SchoolAdminObject.md +8 -0
- data/docs/SchoolAdminResponse.md +8 -0
- data/docs/SchoolAdminsResponse.md +8 -0
- data/docs/SchoolObject.md +8 -0
- data/docs/SchoolResponse.md +8 -0
- data/docs/SchooladminsCreated.md +10 -0
- data/docs/SchooladminsDeleted.md +10 -0
- data/docs/SchooladminsUpdated.md +10 -0
- data/docs/SchoolsCreated.md +10 -0
- data/docs/SchoolsDeleted.md +10 -0
- data/docs/SchoolsResponse.md +8 -0
- data/docs/SchoolsUpdated.md +10 -0
- data/docs/Section.md +25 -0
- data/docs/SectionObject.md +8 -0
- data/docs/SectionResponse.md +8 -0
- data/docs/SectionsCreated.md +10 -0
- data/docs/SectionsDeleted.md +10 -0
- data/docs/SectionsResponse.md +8 -0
- data/docs/SectionsUpdated.md +10 -0
- data/docs/Student.md +27 -0
- data/docs/StudentContact.md +16 -0
- data/docs/StudentContactObject.md +8 -0
- data/docs/StudentContactResponse.md +8 -0
- data/docs/StudentContactsResponse.md +8 -0
- data/docs/StudentObject.md +8 -0
- data/docs/StudentResponse.md +8 -0
- data/docs/StudentcontactsCreated.md +10 -0
- data/docs/StudentcontactsDeleted.md +10 -0
- data/docs/StudentcontactsUpdated.md +10 -0
- data/docs/StudentsCreated.md +10 -0
- data/docs/StudentsDeleted.md +10 -0
- data/docs/StudentsResponse.md +8 -0
- data/docs/StudentsUpdated.md +10 -0
- data/docs/Teacher.md +19 -0
- data/docs/TeacherObject.md +8 -0
- data/docs/TeacherResponse.md +8 -0
- data/docs/TeachersCreated.md +10 -0
- data/docs/TeachersDeleted.md +10 -0
- data/docs/TeachersResponse.md +8 -0
- data/docs/TeachersUpdated.md +10 -0
- data/docs/Term.md +10 -0
- data/git_push.sh +55 -0
- data/instructions.md +12 -0
- data/lib/clever-ruby.rb +89 -318
- data/lib/clever-ruby/api/data_api.rb +2090 -0
- data/lib/clever-ruby/api/events_api.rb +429 -0
- data/lib/clever-ruby/api_client.rb +401 -0
- data/lib/clever-ruby/api_error.rb +37 -0
- data/lib/clever-ruby/configuration.rb +187 -25
- data/lib/clever-ruby/models/bad_request.rb +187 -0
- data/lib/clever-ruby/models/district.rb +205 -0
- data/lib/clever-ruby/models/district_admin.rb +223 -0
- data/lib/clever-ruby/models/district_admin_response.rb +187 -0
- data/lib/clever-ruby/models/district_admins_response.rb +189 -0
- data/lib/clever-ruby/models/district_object.rb +187 -0
- data/lib/clever-ruby/models/district_response.rb +187 -0
- data/lib/clever-ruby/models/district_status.rb +250 -0
- data/lib/clever-ruby/models/district_status_response.rb +187 -0
- data/lib/clever-ruby/models/districts_created.rb +206 -0
- data/lib/clever-ruby/models/districts_deleted.rb +207 -0
- data/lib/clever-ruby/models/districts_response.rb +189 -0
- data/lib/clever-ruby/models/districts_updated.rb +207 -0
- data/lib/clever-ruby/models/event.rb +201 -0
- data/lib/clever-ruby/models/event_response.rb +187 -0
- data/lib/clever-ruby/models/events_response.rb +189 -0
- data/lib/clever-ruby/models/grade_levels_response.rb +189 -0
- data/lib/clever-ruby/models/internal_error.rb +187 -0
- data/lib/clever-ruby/models/location.rb +232 -0
- data/lib/clever-ruby/models/name.rb +205 -0
- data/lib/clever-ruby/models/not_found.rb +187 -0
- data/lib/clever-ruby/models/principal.rb +196 -0
- data/lib/clever-ruby/models/school.rb +313 -0
- data/lib/clever-ruby/models/school_admin.rb +243 -0
- data/lib/clever-ruby/models/school_admin_object.rb +187 -0
- data/lib/clever-ruby/models/school_admin_response.rb +187 -0
- data/lib/clever-ruby/models/school_admins_response.rb +189 -0
- data/lib/clever-ruby/models/school_object.rb +187 -0
- data/lib/clever-ruby/models/school_response.rb +187 -0
- data/lib/clever-ruby/models/schooladmins_created.rb +207 -0
- data/lib/clever-ruby/models/schooladmins_deleted.rb +207 -0
- data/lib/clever-ruby/models/schooladmins_updated.rb +207 -0
- data/lib/clever-ruby/models/schools_created.rb +207 -0
- data/lib/clever-ruby/models/schools_deleted.rb +207 -0
- data/lib/clever-ruby/models/schools_response.rb +189 -0
- data/lib/clever-ruby/models/schools_updated.rb +207 -0
- data/lib/clever-ruby/models/section.rb +344 -0
- data/lib/clever-ruby/models/section_object.rb +187 -0
- data/lib/clever-ruby/models/section_response.rb +187 -0
- data/lib/clever-ruby/models/sections_created.rb +207 -0
- data/lib/clever-ruby/models/sections_deleted.rb +207 -0
- data/lib/clever-ruby/models/sections_response.rb +189 -0
- data/lib/clever-ruby/models/sections_updated.rb +207 -0
- data/lib/clever-ruby/models/student.rb +360 -0
- data/lib/clever-ruby/models/student_contact.rb +259 -0
- data/lib/clever-ruby/models/student_contact_object.rb +187 -0
- data/lib/clever-ruby/models/student_contact_response.rb +187 -0
- data/lib/clever-ruby/models/student_contacts_response.rb +189 -0
- data/lib/clever-ruby/models/student_object.rb +187 -0
- data/lib/clever-ruby/models/student_response.rb +187 -0
- data/lib/clever-ruby/models/studentcontacts_created.rb +207 -0
- data/lib/clever-ruby/models/studentcontacts_deleted.rb +207 -0
- data/lib/clever-ruby/models/studentcontacts_updated.rb +207 -0
- data/lib/clever-ruby/models/students_created.rb +196 -0
- data/lib/clever-ruby/models/students_deleted.rb +206 -0
- data/lib/clever-ruby/models/students_response.rb +189 -0
- data/lib/clever-ruby/models/students_updated.rb +207 -0
- data/lib/clever-ruby/models/teacher.rb +288 -0
- data/lib/clever-ruby/models/teacher_object.rb +187 -0
- data/lib/clever-ruby/models/teacher_response.rb +187 -0
- data/lib/clever-ruby/models/teachers_created.rb +207 -0
- data/lib/clever-ruby/models/teachers_deleted.rb +207 -0
- data/lib/clever-ruby/models/teachers_response.rb +189 -0
- data/lib/clever-ruby/models/teachers_updated.rb +207 -0
- data/lib/clever-ruby/models/term.rb +205 -0
- data/lib/clever-ruby/version.rb +12 -4
- data/override/api_client.rb +401 -0
- data/override/config.json +5 -0
- data/override/models/districts_created.rb +206 -0
- data/override/models/districts_deleted.rb +207 -0
- data/override/models/districts_updated.rb +207 -0
- data/override/models/schooladmins_created.rb +207 -0
- data/override/models/schooladmins_deleted.rb +207 -0
- data/override/models/schooladmins_updated.rb +207 -0
- data/override/models/schools_created.rb +207 -0
- data/override/models/schools_deleted.rb +207 -0
- data/override/models/schools_updated.rb +207 -0
- data/override/models/sections_created.rb +207 -0
- data/override/models/sections_deleted.rb +207 -0
- data/override/models/sections_updated.rb +207 -0
- data/override/models/studentcontacts_created.rb +207 -0
- data/override/models/studentcontacts_deleted.rb +207 -0
- data/override/models/studentcontacts_updated.rb +207 -0
- data/override/models/students_created.rb +196 -0
- data/override/models/students_deleted.rb +206 -0
- data/override/models/students_updated.rb +207 -0
- data/override/models/teachers_created.rb +207 -0
- data/override/models/teachers_deleted.rb +207 -0
- data/override/models/teachers_updated.rb +207 -0
- data/override/override.sh +9 -0
- data/sample/sample.rb +16 -0
- metadata +252 -293
- data/.document +0 -5
- data/.gitignore +0 -22
- data/.rubocop.yml +0 -4
- data/.yardopts +0 -2
- data/LICENSE.txt +0 -20
- data/lib/clever-ruby/api_operations/list.rb +0 -130
- data/lib/clever-ruby/api_operations/nested_list.rb +0 -95
- data/lib/clever-ruby/api_operations/page.rb +0 -71
- data/lib/clever-ruby/api_operations/pagelist.rb +0 -43
- data/lib/clever-ruby/api_operations/results_list.rb +0 -31
- data/lib/clever-ruby/api_resource.rb +0 -174
- data/lib/clever-ruby/clever_object.rb +0 -246
- data/lib/clever-ruby/district.rb +0 -75
- data/lib/clever-ruby/district_admin.rb +0 -45
- data/lib/clever-ruby/errors/api_connection_error.rb +0 -5
- data/lib/clever-ruby/errors/api_error.rb +0 -5
- data/lib/clever-ruby/errors/authentication_error.rb +0 -5
- data/lib/clever-ruby/errors/clever_error.rb +0 -52
- data/lib/clever-ruby/errors/invalid_request_error.rb +0 -17
- data/lib/clever-ruby/event.rb +0 -61
- data/lib/clever-ruby/json.rb +0 -34
- data/lib/clever-ruby/nested_resource.rb +0 -41
- data/lib/clever-ruby/school.rb +0 -17
- data/lib/clever-ruby/school_admin.rb +0 -19
- data/lib/clever-ruby/section.rb +0 -17
- data/lib/clever-ruby/student.rb +0 -30
- data/lib/clever-ruby/teacher.rb +0 -17
- data/lib/clever-ruby/util.rb +0 -108
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_district_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_event_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_admin_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_section_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml +0 -52
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml +0 -90
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml +0 -124
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml +0 -113
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_section.yml +0 -368
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_student.yml +0 -176
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_teacher.yml +0 -191
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_by_page.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_with_multiple_ids.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_by_page.yml +0 -122
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_with_multiple_ids.yml +0 -131
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_by_page.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_school_admins_with_multiple_ids.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_by_page.yml +0 -110
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_with_multiple_ids.yml +0 -116
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_by_page.yml +0 -1168
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_with_multiple_ids.yml +0 -163
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_by_page.yml +0 -1207
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_with_multiple_ids.yml +0 -127
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_by_page.yml +0 -190
- data/test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml +0 -131
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_district.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_event.yml +0 -122
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school.yml +0 -110
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school_admin.yml +0 -101
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_section.yml +0 -1168
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_student.yml +0 -1207
- data/test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_teacher.yml +0 -190
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_events.yml +0 -526
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_schools.yml +0 -240
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_sections.yml +0 -3674
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_students.yml +0 -2387
- data/test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_teachers.yml +0 -717
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_events.yml +0 -152
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_schools.yml +0 -211
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_sections.yml +0 -3649
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_students.yml +0 -2362
- data/test/data/vcr_cassettes/Clever_District_without_global_token/pages_methods/pages_a_district_s_teachers.yml +0 -688
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_events.yml +0 -89
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_school_admins.yml +0 -101
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_schools.yml +0 -164
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_sections.yml +0 -1168
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_students.yml +0 -1207
- data/test/data/vcr_cassettes/Clever_District_without_global_token/retrieves_a_district_s_teachers.yml +0 -324
- data/test/data/vcr_cassettes/Clever_NestedResource/must_include_auth_token_in_linked_resources.yml +0 -197
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_events.yml +0 -237
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_schools.yml +0 -217
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_sections.yml +0 -2333
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_students.yml +0 -2411
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_teachers.yml +0 -377
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_admin_s_schools.yml +0 -205
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_district.yml +0 -162
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_events.yml +0 -215
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_sections.yml +0 -1153
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_students.yml +0 -1081
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_teachers.yml +0 -283
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_district.yml +0 -417
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_events.yml +0 -470
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_school.yml +0 -420
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_students.yml +0 -482
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_teacher.yml +0 -418
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_district.yml +0 -226
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_events.yml +0 -279
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_school.yml +0 -229
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_sections.yml +0 -301
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_teachers.yml +0 -277
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_district.yml +0 -240
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_events.yml +0 -293
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_school.yml +0 -243
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_sections.yml +0 -321
- data/test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_students.yml +0 -323
- data/test/data/vcr_cassettes/Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml +0 -151
- data/test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml +0 -55
- data/test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml +0 -800
- data/test/integration/api_operations/list_test.rb +0 -117
- data/test/integration/district_test.rb +0 -53
- data/test/integration/district_with_non_global_token_test.rb +0 -88
- data/test/integration/error_handling_test.rb +0 -17
- data/test/integration/last_test.rb +0 -56
- data/test/integration/nested_resource_test.rb +0 -31
- data/test/test_helper.rb +0 -18
- data/test/unit/api_resource_test.rb +0 -48
- data/test/unit/clever_test.rb +0 -65
- data/test/unit/configuration_test.rb +0 -37
- data/test/unit/event_test.rb +0 -57
- 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
|
data/test/test_helper.rb
DELETED
|
@@ -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
|
data/test/unit/clever_test.rb
DELETED
|
@@ -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
|