clever-ruby 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +4 -0
  3. data/clever-ruby.gemspec +2 -1
  4. data/lib/clever-ruby/api_operations/list.rb +71 -0
  5. data/lib/clever-ruby/api_operations/nested_list.rb +49 -0
  6. data/lib/clever-ruby/api_operations/page.rb +16 -8
  7. data/lib/clever-ruby/version.rb +1 -1
  8. data/test/data/vcr_cassettes/{district_count.yml → Clever_APIOperations_List/counts_district_properly.yml} +6 -4
  9. data/test/data/vcr_cassettes/{event_count.yml → Clever_APIOperations_List/counts_event_properly.yml} +6 -4
  10. data/test/data/vcr_cassettes/{school_count.yml → Clever_APIOperations_List/counts_school_properly.yml} +6 -4
  11. data/test/data/vcr_cassettes/{section_count.yml → Clever_APIOperations_List/counts_section_properly.yml} +6 -4
  12. data/test/data/vcr_cassettes/{student_count.yml → Clever_APIOperations_List/counts_student_properly.yml} +6 -4
  13. data/test/data/vcr_cassettes/{teacher_count.yml → Clever_APIOperations_List/counts_teacher_properly.yml} +6 -4
  14. data/test/data/vcr_cassettes/{district_find_one.yml → Clever_APIOperations_List/finds_a_single_district.yml} +11 -7
  15. data/test/data/vcr_cassettes/{event_find_one.yml → Clever_APIOperations_List/finds_a_single_event.yml} +11 -7
  16. data/test/data/vcr_cassettes/{school_find_one.yml → Clever_APIOperations_List/finds_a_single_school.yml} +11 -7
  17. data/test/data/vcr_cassettes/{section_find_one.yml → Clever_APIOperations_List/finds_a_single_section.yml} +11 -7
  18. data/test/data/vcr_cassettes/{student_find_one.yml → Clever_APIOperations_List/finds_a_single_student.yml} +11 -7
  19. data/test/data/vcr_cassettes/{teacher_find_one.yml → Clever_APIOperations_List/finds_a_single_teacher.yml} +11 -7
  20. data/test/data/vcr_cassettes/{districts.yml → Clever_APIOperations_List/finds_districts_by_page.yml} +11 -7
  21. data/test/data/vcr_cassettes/{district_find_multiple.yml → Clever_APIOperations_List/finds_districts_with_multiple_ids.yml} +11 -7
  22. data/test/data/vcr_cassettes/{events.yml → Clever_APIOperations_List/finds_events_by_page.yml} +11 -7
  23. data/test/data/vcr_cassettes/{event_find_multiple.yml → Clever_APIOperations_List/finds_events_with_multiple_ids.yml} +11 -7
  24. data/test/data/vcr_cassettes/{schools.yml → Clever_APIOperations_List/finds_schools_by_page.yml} +11 -7
  25. data/test/data/vcr_cassettes/{school_find_multiple.yml → Clever_APIOperations_List/finds_schools_with_multiple_ids.yml} +11 -7
  26. data/test/data/vcr_cassettes/{section_find_by_page.yml → Clever_APIOperations_List/finds_sections_by_page.yml} +26 -16
  27. data/test/data/vcr_cassettes/{section_find_multiple.yml → Clever_APIOperations_List/finds_sections_with_multiple_ids.yml} +11 -7
  28. data/test/data/vcr_cassettes/{students.yml → Clever_APIOperations_List/finds_students_by_page.yml} +61 -37
  29. data/test/data/vcr_cassettes/{student_find_multiple.yml → Clever_APIOperations_List/finds_students_with_multiple_ids.yml} +11 -7
  30. data/test/data/vcr_cassettes/{teachers.yml → Clever_APIOperations_List/finds_teachers_by_page.yml} +11 -7
  31. data/test/data/vcr_cassettes/{teacher_find_multiple.yml → Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml} +11 -7
  32. data/test/data/vcr_cassettes/{district_find_by_page.yml → Clever_APIOperations_List/retrieves_all_district.yml} +11 -7
  33. data/test/data/vcr_cassettes/{event_find_by_page.yml → Clever_APIOperations_List/retrieves_all_event.yml} +11 -7
  34. data/test/data/vcr_cassettes/{school_find_by_page.yml → Clever_APIOperations_List/retrieves_all_school.yml} +11 -7
  35. data/test/data/vcr_cassettes/{sections.yml → Clever_APIOperations_List/retrieves_all_section.yml} +26 -16
  36. data/test/data/vcr_cassettes/{student_find_by_page.yml → Clever_APIOperations_List/retrieves_all_student.yml} +61 -37
  37. data/test/data/vcr_cassettes/{teacher_find_by_page.yml → Clever_APIOperations_List/retrieves_all_teacher.yml} +11 -7
  38. data/test/data/vcr_cassettes/{districts_event_pages.yml → Clever_District/pages_methods/pages_a_district_s_events.yml} +56 -34
  39. data/test/data/vcr_cassettes/{districts_school_pages.yml → Clever_District/pages_methods/pages_a_district_s_schools.yml} +26 -16
  40. data/test/data/vcr_cassettes/{districts_section_pages.yml → Clever_District/pages_methods/pages_a_district_s_sections.yml} +206 -124
  41. data/test/data/vcr_cassettes/{districts_student_pages.yml → Clever_District/pages_methods/pages_a_district_s_students.yml} +121 -73
  42. data/test/data/vcr_cassettes/{districts_teacher_pages.yml → Clever_District/pages_methods/pages_a_district_s_teachers.yml} +61 -37
  43. data/test/data/vcr_cassettes/{district_events.yml → Clever_NestedResource/retrieves_a_district_s_events.yml} +21 -13
  44. data/test/data/vcr_cassettes/{district_schools.yml → Clever_NestedResource/retrieves_a_district_s_schools.yml} +21 -13
  45. data/test/data/vcr_cassettes/{district_sections.yml → Clever_NestedResource/retrieves_a_district_s_sections.yml} +51 -31
  46. data/test/data/vcr_cassettes/{district_students.yml → Clever_NestedResource/retrieves_a_district_s_students.yml} +121 -73
  47. data/test/data/vcr_cassettes/{district_teachers.yml → Clever_NestedResource/retrieves_a_district_s_teachers.yml} +21 -13
  48. data/test/data/vcr_cassettes/{school_district.yml → Clever_NestedResource/retrieves_a_school_s_district.yml} +16 -10
  49. data/test/data/vcr_cassettes/{school_events.yml → Clever_NestedResource/retrieves_a_school_s_events.yml} +21 -13
  50. data/test/data/vcr_cassettes/{school_sections.yml → Clever_NestedResource/retrieves_a_school_s_sections.yml} +31 -19
  51. data/test/data/vcr_cassettes/{school_students.yml → Clever_NestedResource/retrieves_a_school_s_students.yml} +61 -37
  52. data/test/data/vcr_cassettes/{school_teachers.yml → Clever_NestedResource/retrieves_a_school_s_teachers.yml} +21 -13
  53. data/test/data/vcr_cassettes/{section_district.yml → Clever_NestedResource/retrieves_a_section_s_district.yml} +16 -10
  54. data/test/data/vcr_cassettes/{section_events.yml → Clever_NestedResource/retrieves_a_section_s_events.yml} +21 -13
  55. data/test/data/vcr_cassettes/{section_school.yml → Clever_NestedResource/retrieves_a_section_s_school.yml} +16 -10
  56. data/test/data/vcr_cassettes/{section_students.yml → Clever_NestedResource/retrieves_a_section_s_students.yml} +21 -13
  57. data/test/data/vcr_cassettes/{section_teacher.yml → Clever_NestedResource/retrieves_a_section_s_teacher.yml} +16 -10
  58. data/test/data/vcr_cassettes/{student_district.yml → Clever_NestedResource/retrieves_a_student_s_district.yml} +16 -10
  59. data/test/data/vcr_cassettes/{student_events.yml → Clever_NestedResource/retrieves_a_student_s_events.yml} +21 -13
  60. data/test/data/vcr_cassettes/{student_school.yml → Clever_NestedResource/retrieves_a_student_s_school.yml} +16 -10
  61. data/test/data/vcr_cassettes/{student_sections.yml → Clever_NestedResource/retrieves_a_student_s_sections.yml} +21 -13
  62. data/test/data/vcr_cassettes/{student_teachers.yml → Clever_NestedResource/retrieves_a_student_s_teachers.yml} +21 -13
  63. data/test/data/vcr_cassettes/{teacher_district.yml → Clever_NestedResource/retrieves_a_teacher_s_district.yml} +16 -10
  64. data/test/data/vcr_cassettes/{teacher_events.yml → Clever_NestedResource/retrieves_a_teacher_s_events.yml} +21 -13
  65. data/test/data/vcr_cassettes/{teacher_school.yml → Clever_NestedResource/retrieves_a_teacher_s_school.yml} +16 -10
  66. data/test/data/vcr_cassettes/{teacher_sections.yml → Clever_NestedResource/retrieves_a_teacher_s_sections.yml} +21 -13
  67. data/test/data/vcr_cassettes/{teacher_students.yml → Clever_NestedResource/retrieves_a_teacher_s_students.yml} +21 -13
  68. data/test/data/vcr_cassettes/{error_handling.yml → Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml} +16 -10
  69. data/test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml +49 -0
  70. data/test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml +719 -0
  71. data/test/data/vcr_cassettes/last_method/resource/has_working_first_and_last_methods.yml +648 -0
  72. data/test/integration/api_operations/list_test.rb +40 -50
  73. data/test/integration/district_test.rb +13 -15
  74. data/test/integration/error_handling_test.rb +6 -8
  75. data/test/integration/last_test.rb +70 -0
  76. data/test/integration/nested_resource_test.rb +7 -9
  77. data/test/test_helper.rb +3 -0
  78. data/test/unit/clever_test.rb +1 -1
  79. data/test/unit/configuration_test.rb +6 -0
  80. data/test/unit/optional_attributes_test.rb +4 -10
  81. metadata +147 -129
  82. data/test/data/vcr_cassettes/schools_optional_attributes.yml +0 -55
  83. data/test/data/vcr_cassettes/student_teacher.yml +0 -161
@@ -20,10 +20,10 @@ module Minitest
20
20
  end
21
21
 
22
22
  # Test api_operations/List
23
- describe Clever::APIOperations::List do
23
+ describe Clever::APIOperations::List, :vcr do
24
24
  before do
25
25
  Clever.configure do |config|
26
- config.api_key = 'DEMO_KEY'
26
+ config.token = 'DEMO_TOKEN'
27
27
  end
28
28
  end
29
29
 
@@ -33,12 +33,10 @@ describe Clever::APIOperations::List do
33
33
  name = resource_name resource
34
34
 
35
35
  it "counts #{name} properly" do
36
- VCR.use_cassette "#{name}_count" do
37
- count = resource.count
38
- assert count.is_a?(Integer), "count should return an Integer. count: #{count}"
39
- assert_equal expected, count, "Expected #{expected} #{name}s to exist, "\
40
- "but only #{count} were found. Perhaps the test data has changed?"
41
- end
36
+ count = resource.count
37
+ assert count.is_a?(Integer), "count should return an Integer. count: #{count}"
38
+ assert_equal expected, count, "Expected #{expected} #{name}s to exist, "\
39
+ "but only #{count} were found. Perhaps the test data has changed?"
42
40
  end
43
41
  end
44
42
 
@@ -51,12 +49,10 @@ describe Clever::APIOperations::List do
51
49
  end
52
50
 
53
51
  it "finds a single #{name}" do
54
- VCR.use_cassette "#{name}_find_one" do
55
- id = resource.find.take(20).last.id
56
- elem = resource.find id
57
- assert_resource_type resource, elem
58
- assert_equal id, elem.id
59
- end
52
+ id = resource.find.take(20).last.id
53
+ elem = resource.find id
54
+ assert_resource_type resource, elem
55
+ assert_equal id, elem.id
60
56
  end
61
57
 
62
58
  it 'rejects invalid ids for Clever::District.find multiple' do
@@ -66,51 +62,45 @@ describe Clever::APIOperations::List do
66
62
  end
67
63
 
68
64
  it "finds #{name}s with multiple ids" do
69
- VCR.use_cassette "#{name}_find_multiple" do
70
- to_query = []
71
- count = 0
72
- limit = 20
73
- resource.find(nil, limit: limit).take(limit).each do |elem|
74
- to_query << elem.id if count.even?
75
- count += 1
76
- end
77
-
78
- return if to_query.count == 0
79
- found = resource.find(to_query).map(&:id)
80
- assert_equal to_query.sort, found.sort, 'Elements found by querying by array of ids '\
81
- "should match the query itself. Expected: #{to_query.inspect}, found: #{found.inspect}"
65
+ to_query = []
66
+ count = 0
67
+ limit = 20
68
+ resource.find(nil, limit: limit).take(limit).each do |elem|
69
+ to_query << elem.id if count.even?
70
+ count += 1
82
71
  end
72
+
73
+ return if to_query.count == 0
74
+ found = resource.find(to_query).map(&:id)
75
+ assert_equal to_query.sort, found.sort, 'Elements found by querying by array of ids '\
76
+ "should match the query itself. Expected: #{to_query.inspect}, found: #{found.inspect}"
83
77
  end
84
78
 
85
79
  it "finds #{name}s by page" do
86
- VCR.use_cassette "#{name}_find_by_page" do
87
- result = resource.find
88
- assert_instance_of Clever::APIOperations::ResultsList, result, 'Result should be '\
89
- "a Clever::APIOperations::ResultsList, received #{result.inspect}"
90
- count = 0
91
- result.each do |elem|
92
- count += 1
93
- assert_resource_type resource, elem
94
- end
95
-
96
- expected = resource.count
97
- count.must_equal expected, "Expected #{expected} #{name}s to be "\
98
- "retrieved but only #{count} were found. Perhaps the test data has changed?"
80
+ result = resource.find
81
+ assert_instance_of Clever::APIOperations::ResultsList, result, 'Result should be '\
82
+ "a Clever::APIOperations::ResultsList, received #{result.inspect}"
83
+ count = 0
84
+ result.each do |elem|
85
+ count += 1
86
+ assert_resource_type resource, elem
99
87
  end
88
+
89
+ expected = resource.count
90
+ count.must_equal expected, "Expected #{expected} #{name}s to be "\
91
+ "retrieved but only #{count} were found. Perhaps the test data has changed?"
100
92
  end
101
93
 
102
94
  it "retrieves all #{name}" do
103
- VCR.use_cassette("#{name}s") do
104
- elems = resource.all
105
- elems.each do |elem|
106
- assert_instance_of resource, elem, "All elems of #{resource.url} should be of "\
107
- "type #{resource.name}, instead got #{elem.class.name}. elem: #{elem.inspect}"
108
- end
109
-
110
- expected = resource.count
111
- elems.length.must_equal expected, "Expected #{expected} #{name}s to be "\
112
- "retrieved but only #{elems.length} were found. Perhaps the test data has changed?"
95
+ elems = resource.all
96
+ elems.each do |elem|
97
+ assert_instance_of resource, elem, "All elems of #{resource.url} should be of "\
98
+ "type #{resource.name}, instead got #{elem.class.name}. elem: #{elem.inspect}"
113
99
  end
100
+
101
+ expected = resource.count
102
+ elems.length.must_equal expected, "Expected #{expected} #{name}s to be "\
103
+ "retrieved but only #{elems.length} were found. Perhaps the test data has changed?"
114
104
  end
115
105
  end
116
106
  end
@@ -4,26 +4,24 @@ module Minitest
4
4
  # Add assertions to Minitest
5
5
  module Assertions
6
6
  def assert_valid_object_pages(object_name, limit, page_count)
7
- VCR.use_cassette("districts_#{object_name}_pages", allow_playback_repeats: true) do
8
- district = Clever::District.all.first
9
- object_count_from_list = district.send("#{object_name}s", limit: 100_000).size
10
-
11
- object_count_from_paging = 0
12
- pages = 0
13
- district.send("#{object_name}_pages", limit: limit).each do |object_page|
14
- pages += 1
15
- objects = object_page.all
16
- object_count_from_paging += objects.size
17
- end
18
-
19
- object_count_from_paging.must_equal object_count_from_list
20
- pages.must_equal 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
21
16
  end
17
+
18
+ object_count_from_paging.must_equal object_count_from_list
19
+ pages.must_equal page_count
22
20
  end
23
21
  end
24
22
  end
25
23
 
26
- describe Clever::District do
24
+ describe Clever::District, :vcr do
27
25
  before do
28
26
  Clever.configure do |config|
29
27
  config.token = 'DEMO_TOKEN'
@@ -1,19 +1,17 @@
1
1
  require 'test_helper'
2
2
 
3
3
  # Test error handling
4
- describe 'Error handling' do
4
+ describe 'Error handling', :vcr do
5
5
  before do
6
6
  Clever.configure do |config|
7
- config.api_key = 'DEMO_KEY'
7
+ config.token = 'DEMO_TOKEN'
8
8
  end
9
9
  end
10
10
 
11
11
  it 'raises an InvalidRequestError when given a bad created_since' do
12
- VCR.use_cassette('error_handling') do
13
- @district = Clever::District.all.first
14
- lambda do
15
- @district.events(created_since: '2013-02-15T 2:30:42 0000').first
16
- end.must_raise Clever::InvalidRequestError
17
- end
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
18
16
  end
19
17
  end
@@ -0,0 +1,70 @@
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
+ resources = [Clever::District, Clever::School, Clever::Student,
11
+ Clever::Event, Clever::Section, Clever::Teacher]
12
+
13
+ describe 'page' do
14
+ it 'has working first and last methods' do
15
+ resources.each do |resource|
16
+ page = Clever::APIOperations::Page.new resource.url
17
+ list = page.all
18
+
19
+ page.first.must_equal list.first
20
+ page.last.must_equal list.last
21
+ page.first(10).must_equal list.first(10)
22
+ page.last(10).must_equal list.last(10)
23
+ end
24
+ end
25
+ end
26
+
27
+ describe 'resource' do
28
+ it 'has working first and last methods' do
29
+ resources.each do |resource|
30
+ last = resource.last
31
+ last.must_be_instance_of resource
32
+
33
+ count = 0
34
+ resource.last(20).each do |e|
35
+ e.must_be_instance_of resource
36
+ e.must_equal last if count == 19
37
+ count += 1
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ describe 'nested resource' do
44
+ it 'has working first and last methods' do
45
+ resources.each do |resource|
46
+ resource.linked_resources do |l|
47
+ nested = resource.first.send l
48
+ nested_resource = Clever::APIResource.named l
49
+ if Clever::Util.singular? l
50
+ nested.first.must_be_instance_of nested_resource
51
+ else
52
+ nested.first.must_be_instance_of nested_resource
53
+ nested.first(10).each do |e|
54
+ e.must_be_intsance_of nested_resource
55
+ end
56
+
57
+ last = nested.last
58
+ last.must_be_instance_of nested_resource
59
+ count = 0
60
+ nested.last(10).each do |e|
61
+ e.must_be_intsance_of nested_resource
62
+ e.must_equal last if count == 19
63
+ count += 1
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- describe Clever::NestedResource do
3
+ describe Clever::NestedResource, :vcr do
4
4
  before do
5
5
  Clever.configure do |config|
6
6
  config.token = 'DEMO_TOKEN'
@@ -12,14 +12,12 @@ describe Clever::NestedResource do
12
12
  next if resource.linked_resources.nil?
13
13
  resource.linked_resources.each do |link|
14
14
  it "retrieves a #{resource.shortname}'s #{link}" do
15
- VCR.use_cassette("#{resource.shortname}_#{link}") do
16
- result = resource.find.first.send link
17
- if Clever::Util.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
15
+ result = resource.find.first.send link
16
+ if Clever::Util.singular?(link.to_s)
17
+ result.must_be_instance_of Clever::APIResource.named(link.to_s)
18
+ else
19
+ result.must_be_instance_of Clever::NestedResource
20
+ result.size.must_equal result.count # check count request measures actual data size
23
21
  end
24
22
  end
25
23
  end
data/test/test_helper.rb CHANGED
@@ -1,10 +1,13 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
 
3
3
  require 'minitest/autorun'
4
+ require 'minispec-metadata'
4
5
  require 'vcr'
6
+ require 'minitest-vcr'
5
7
  require 'clever-ruby'
6
8
 
7
9
  VCR.configure do |c|
8
10
  c.cassette_library_dir = 'test/data/vcr_cassettes'
9
11
  c.hook_into :webmock
10
12
  end
13
+ MinitestVcr::Spec.configure!
@@ -5,7 +5,7 @@ require 'test_helper'
5
5
  describe Clever do
6
6
  before do
7
7
  Clever.configure do |config|
8
- config.api_key = 'DEMO_KEY'
8
+ config.token = 'DEMO_TOKEN'
9
9
  end
10
10
  end
11
11
 
@@ -16,6 +16,9 @@ describe Clever::Configuration do
16
16
  config.api_key = 'DEMO_KEY'
17
17
  end
18
18
  assert_equal 'DEMO_KEY', Clever.api_key
19
+ Clever.configure do |config|
20
+ config.api_key = nil
21
+ end
19
22
  end
20
23
 
21
24
  it 'sets the api token' do
@@ -23,6 +26,9 @@ describe Clever::Configuration do
23
26
  config.token = 'DEMO_TOKEN'
24
27
  end
25
28
  assert_equal 'DEMO_TOKEN', Clever.token
29
+ Clever.configure do |config|
30
+ config.token = nil
31
+ end
26
32
  end
27
33
 
28
34
  it 'sets a default for the api base' do
@@ -1,14 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
3
  # Test optional attributes functionality
4
- describe 'Optional attributes' do
4
+ describe 'Optional attributes', :vcr do
5
5
  before do
6
6
  Clever.configure do |config|
7
- config.api_key = 'DEMO_KEY'
8
- end
9
-
10
- VCR.use_cassette('schools_optional_attributes') do
11
- @schools = Clever::School.all
7
+ config.token = 'DEMO_TOKEN'
12
8
  end
13
9
  end
14
10
 
@@ -20,10 +16,8 @@ describe 'Optional attributes' do
20
16
  end
21
17
 
22
18
  it 'has the expected value for an optional attribute that is present' do
23
- VCR.use_cassette('optional_present') do
24
- school = @schools.find { |s| s.id == '530e595026403103360ff9fd' }
25
- school.state_id.must_equal '712345'
26
- end
19
+ school = Clever::School.find '530e595026403103360ff9fd'
20
+ school.state_id.must_equal '712345'
27
21
  end
28
22
 
29
23
  it 'raises a NoMethodError for an invalid attribute' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clever-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clever Dev
@@ -128,14 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - ~>
130
130
  - !ruby/object:Gem::Version
131
- version: 2.4.0
131
+ version: 2.9.3
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ~>
137
137
  - !ruby/object:Gem::Version
138
- version: 2.4.0
138
+ version: 2.9.3
139
+ - !ruby/object:Gem::Dependency
140
+ name: minitest-vcr
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: 0.1.1
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: 0.1.1
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: webmock
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -207,72 +221,74 @@ files:
207
221
  - lib/clever-ruby/teacher.rb
208
222
  - lib/clever-ruby/util.rb
209
223
  - lib/clever-ruby/version.rb
210
- - test/data/vcr_cassettes/district_count.yml
211
- - test/data/vcr_cassettes/district_events.yml
212
- - test/data/vcr_cassettes/district_find_by_page.yml
213
- - test/data/vcr_cassettes/district_find_multiple.yml
214
- - test/data/vcr_cassettes/district_find_one.yml
215
- - test/data/vcr_cassettes/district_schools.yml
216
- - test/data/vcr_cassettes/district_sections.yml
217
- - test/data/vcr_cassettes/district_students.yml
218
- - test/data/vcr_cassettes/district_teachers.yml
219
- - test/data/vcr_cassettes/districts.yml
220
- - test/data/vcr_cassettes/districts_event_pages.yml
221
- - test/data/vcr_cassettes/districts_school_pages.yml
222
- - test/data/vcr_cassettes/districts_section_pages.yml
223
- - test/data/vcr_cassettes/districts_student_pages.yml
224
- - test/data/vcr_cassettes/districts_teacher_pages.yml
225
- - test/data/vcr_cassettes/error_handling.yml
226
- - test/data/vcr_cassettes/event_count.yml
227
- - test/data/vcr_cassettes/event_find_by_page.yml
228
- - test/data/vcr_cassettes/event_find_multiple.yml
229
- - test/data/vcr_cassettes/event_find_one.yml
230
- - test/data/vcr_cassettes/events.yml
231
- - test/data/vcr_cassettes/school_count.yml
232
- - test/data/vcr_cassettes/school_district.yml
233
- - test/data/vcr_cassettes/school_events.yml
234
- - test/data/vcr_cassettes/school_find_by_page.yml
235
- - test/data/vcr_cassettes/school_find_multiple.yml
236
- - test/data/vcr_cassettes/school_find_one.yml
237
- - test/data/vcr_cassettes/school_sections.yml
238
- - test/data/vcr_cassettes/school_students.yml
239
- - test/data/vcr_cassettes/school_teachers.yml
240
- - test/data/vcr_cassettes/schools.yml
241
- - test/data/vcr_cassettes/schools_optional_attributes.yml
242
- - test/data/vcr_cassettes/section_count.yml
243
- - test/data/vcr_cassettes/section_district.yml
244
- - test/data/vcr_cassettes/section_events.yml
245
- - test/data/vcr_cassettes/section_find_by_page.yml
246
- - test/data/vcr_cassettes/section_find_multiple.yml
247
- - test/data/vcr_cassettes/section_find_one.yml
248
- - test/data/vcr_cassettes/section_school.yml
249
- - test/data/vcr_cassettes/section_students.yml
250
- - test/data/vcr_cassettes/section_teacher.yml
251
- - test/data/vcr_cassettes/sections.yml
252
- - test/data/vcr_cassettes/student_count.yml
253
- - test/data/vcr_cassettes/student_district.yml
254
- - test/data/vcr_cassettes/student_events.yml
255
- - test/data/vcr_cassettes/student_find_by_page.yml
256
- - test/data/vcr_cassettes/student_find_multiple.yml
257
- - test/data/vcr_cassettes/student_find_one.yml
258
- - test/data/vcr_cassettes/student_school.yml
259
- - test/data/vcr_cassettes/student_sections.yml
260
- - test/data/vcr_cassettes/student_teacher.yml
261
- - test/data/vcr_cassettes/student_teachers.yml
262
- - test/data/vcr_cassettes/students.yml
263
- - test/data/vcr_cassettes/teacher_count.yml
264
- - test/data/vcr_cassettes/teacher_district.yml
265
- - test/data/vcr_cassettes/teacher_events.yml
266
- - test/data/vcr_cassettes/teacher_find_by_page.yml
267
- - test/data/vcr_cassettes/teacher_find_multiple.yml
268
- - test/data/vcr_cassettes/teacher_find_one.yml
269
- - test/data/vcr_cassettes/teacher_school.yml
270
- - test/data/vcr_cassettes/teacher_sections.yml
271
- - test/data/vcr_cassettes/teacher_students.yml
272
- - test/data/vcr_cassettes/teachers.yml
224
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_district_properly.yml
225
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_event_properly.yml
226
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_properly.yml
227
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_section_properly.yml
228
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml
229
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml
230
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml
231
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml
232
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml
233
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_section.yml
234
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_student.yml
235
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_teacher.yml
236
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_by_page.yml
237
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_with_multiple_ids.yml
238
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_by_page.yml
239
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_with_multiple_ids.yml
240
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_by_page.yml
241
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_with_multiple_ids.yml
242
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_by_page.yml
243
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_with_multiple_ids.yml
244
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_by_page.yml
245
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_with_multiple_ids.yml
246
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_by_page.yml
247
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml
248
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_district.yml
249
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_event.yml
250
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school.yml
251
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_section.yml
252
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_student.yml
253
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_teacher.yml
254
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_events.yml
255
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_schools.yml
256
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_sections.yml
257
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_students.yml
258
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_teachers.yml
259
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_events.yml
260
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_schools.yml
261
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_sections.yml
262
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_students.yml
263
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_teachers.yml
264
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_district.yml
265
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_events.yml
266
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_sections.yml
267
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_students.yml
268
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_teachers.yml
269
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_district.yml
270
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_events.yml
271
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_school.yml
272
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_students.yml
273
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_teacher.yml
274
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_district.yml
275
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_events.yml
276
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_school.yml
277
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_sections.yml
278
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_teachers.yml
279
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_district.yml
280
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_events.yml
281
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_school.yml
282
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_sections.yml
283
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_students.yml
284
+ - test/data/vcr_cassettes/Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml
285
+ - test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml
286
+ - test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml
287
+ - test/data/vcr_cassettes/last_method/resource/has_working_first_and_last_methods.yml
273
288
  - test/integration/api_operations/list_test.rb
274
289
  - test/integration/district_test.rb
275
290
  - test/integration/error_handling_test.rb
291
+ - test/integration/last_test.rb
276
292
  - test/integration/nested_resource_test.rb
277
293
  - test/test_helper.rb
278
294
  - test/unit/api_resource_test.rb
@@ -304,72 +320,74 @@ signing_key:
304
320
  specification_version: 4
305
321
  summary: Ruby bindings to the Clever API.
306
322
  test_files:
307
- - test/data/vcr_cassettes/district_count.yml
308
- - test/data/vcr_cassettes/district_events.yml
309
- - test/data/vcr_cassettes/district_find_by_page.yml
310
- - test/data/vcr_cassettes/district_find_multiple.yml
311
- - test/data/vcr_cassettes/district_find_one.yml
312
- - test/data/vcr_cassettes/district_schools.yml
313
- - test/data/vcr_cassettes/district_sections.yml
314
- - test/data/vcr_cassettes/district_students.yml
315
- - test/data/vcr_cassettes/district_teachers.yml
316
- - test/data/vcr_cassettes/districts.yml
317
- - test/data/vcr_cassettes/districts_event_pages.yml
318
- - test/data/vcr_cassettes/districts_school_pages.yml
319
- - test/data/vcr_cassettes/districts_section_pages.yml
320
- - test/data/vcr_cassettes/districts_student_pages.yml
321
- - test/data/vcr_cassettes/districts_teacher_pages.yml
322
- - test/data/vcr_cassettes/error_handling.yml
323
- - test/data/vcr_cassettes/event_count.yml
324
- - test/data/vcr_cassettes/event_find_by_page.yml
325
- - test/data/vcr_cassettes/event_find_multiple.yml
326
- - test/data/vcr_cassettes/event_find_one.yml
327
- - test/data/vcr_cassettes/events.yml
328
- - test/data/vcr_cassettes/school_count.yml
329
- - test/data/vcr_cassettes/school_district.yml
330
- - test/data/vcr_cassettes/school_events.yml
331
- - test/data/vcr_cassettes/school_find_by_page.yml
332
- - test/data/vcr_cassettes/school_find_multiple.yml
333
- - test/data/vcr_cassettes/school_find_one.yml
334
- - test/data/vcr_cassettes/school_sections.yml
335
- - test/data/vcr_cassettes/school_students.yml
336
- - test/data/vcr_cassettes/school_teachers.yml
337
- - test/data/vcr_cassettes/schools.yml
338
- - test/data/vcr_cassettes/schools_optional_attributes.yml
339
- - test/data/vcr_cassettes/section_count.yml
340
- - test/data/vcr_cassettes/section_district.yml
341
- - test/data/vcr_cassettes/section_events.yml
342
- - test/data/vcr_cassettes/section_find_by_page.yml
343
- - test/data/vcr_cassettes/section_find_multiple.yml
344
- - test/data/vcr_cassettes/section_find_one.yml
345
- - test/data/vcr_cassettes/section_school.yml
346
- - test/data/vcr_cassettes/section_students.yml
347
- - test/data/vcr_cassettes/section_teacher.yml
348
- - test/data/vcr_cassettes/sections.yml
349
- - test/data/vcr_cassettes/student_count.yml
350
- - test/data/vcr_cassettes/student_district.yml
351
- - test/data/vcr_cassettes/student_events.yml
352
- - test/data/vcr_cassettes/student_find_by_page.yml
353
- - test/data/vcr_cassettes/student_find_multiple.yml
354
- - test/data/vcr_cassettes/student_find_one.yml
355
- - test/data/vcr_cassettes/student_school.yml
356
- - test/data/vcr_cassettes/student_sections.yml
357
- - test/data/vcr_cassettes/student_teacher.yml
358
- - test/data/vcr_cassettes/student_teachers.yml
359
- - test/data/vcr_cassettes/students.yml
360
- - test/data/vcr_cassettes/teacher_count.yml
361
- - test/data/vcr_cassettes/teacher_district.yml
362
- - test/data/vcr_cassettes/teacher_events.yml
363
- - test/data/vcr_cassettes/teacher_find_by_page.yml
364
- - test/data/vcr_cassettes/teacher_find_multiple.yml
365
- - test/data/vcr_cassettes/teacher_find_one.yml
366
- - test/data/vcr_cassettes/teacher_school.yml
367
- - test/data/vcr_cassettes/teacher_sections.yml
368
- - test/data/vcr_cassettes/teacher_students.yml
369
- - test/data/vcr_cassettes/teachers.yml
323
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_district_properly.yml
324
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_event_properly.yml
325
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_school_properly.yml
326
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_section_properly.yml
327
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml
328
+ - test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml
329
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml
330
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml
331
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml
332
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_section.yml
333
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_student.yml
334
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_teacher.yml
335
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_by_page.yml
336
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_districts_with_multiple_ids.yml
337
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_by_page.yml
338
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_events_with_multiple_ids.yml
339
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_by_page.yml
340
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_schools_with_multiple_ids.yml
341
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_by_page.yml
342
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_sections_with_multiple_ids.yml
343
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_by_page.yml
344
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_students_with_multiple_ids.yml
345
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_by_page.yml
346
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_teachers_with_multiple_ids.yml
347
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_district.yml
348
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_event.yml
349
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_school.yml
350
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_section.yml
351
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_student.yml
352
+ - test/data/vcr_cassettes/Clever_APIOperations_List/retrieves_all_teacher.yml
353
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_events.yml
354
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_schools.yml
355
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_sections.yml
356
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_students.yml
357
+ - test/data/vcr_cassettes/Clever_District/pages_methods/pages_a_district_s_teachers.yml
358
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_events.yml
359
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_schools.yml
360
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_sections.yml
361
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_students.yml
362
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_district_s_teachers.yml
363
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_district.yml
364
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_events.yml
365
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_sections.yml
366
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_students.yml
367
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_school_s_teachers.yml
368
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_district.yml
369
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_events.yml
370
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_school.yml
371
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_students.yml
372
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_section_s_teacher.yml
373
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_district.yml
374
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_events.yml
375
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_school.yml
376
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_sections.yml
377
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_student_s_teachers.yml
378
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_district.yml
379
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_events.yml
380
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_school.yml
381
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_sections.yml
382
+ - test/data/vcr_cassettes/Clever_NestedResource/retrieves_a_teacher_s_students.yml
383
+ - test/data/vcr_cassettes/Error_handling/raises_an_InvalidRequestError_when_given_a_bad_created_since.yml
384
+ - test/data/vcr_cassettes/Optional_attributes/has_the_expected_value_for_an_optional_attribute_that_is_present.yml
385
+ - test/data/vcr_cassettes/last_method/page/has_working_first_and_last_methods.yml
386
+ - test/data/vcr_cassettes/last_method/resource/has_working_first_and_last_methods.yml
370
387
  - test/integration/api_operations/list_test.rb
371
388
  - test/integration/district_test.rb
372
389
  - test/integration/error_handling_test.rb
390
+ - test/integration/last_test.rb
373
391
  - test/integration/nested_resource_test.rb
374
392
  - test/test_helper.rb
375
393
  - test/unit/api_resource_test.rb