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.
- 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
|