clever-ruby 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +13 -5
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +1 -1
  4. data/lib/clever-ruby.rb +1 -0
  5. data/lib/clever-ruby/api_operations/list.rb +24 -0
  6. data/lib/clever-ruby/api_operations/pagelist.rb +6 -2
  7. data/lib/clever-ruby/api_operations/results_list.rb +20 -0
  8. data/lib/clever-ruby/util.rb +4 -0
  9. data/lib/clever-ruby/version.rb +1 -1
  10. data/test/data/vcr_cassettes/district_count.yml +44 -0
  11. data/test/data/vcr_cassettes/district_find_by_page.yml +85 -0
  12. data/test/data/vcr_cassettes/district_find_multiple.yml +85 -0
  13. data/test/data/vcr_cassettes/district_find_one.yml +85 -0
  14. data/test/data/vcr_cassettes/districts.yml +46 -5
  15. data/test/data/vcr_cassettes/districts_event_pages.yml +134 -134
  16. data/test/data/vcr_cassettes/districts_events.yml +44 -44
  17. data/test/data/vcr_cassettes/districts_school_pages.yml +50 -50
  18. data/test/data/vcr_cassettes/districts_schools.yml +44 -44
  19. data/test/data/vcr_cassettes/districts_section_pages.yml +303 -303
  20. data/test/data/vcr_cassettes/districts_sections.yml +44 -44
  21. data/test/data/vcr_cassettes/districts_student_pages.yml +184 -184
  22. data/test/data/vcr_cassettes/districts_students.yml +44 -44
  23. data/test/data/vcr_cassettes/districts_students_filtered.yml +25 -25
  24. data/test/data/vcr_cassettes/districts_teacher_pages.yml +100 -100
  25. data/test/data/vcr_cassettes/districts_teachers.yml +44 -44
  26. data/test/data/vcr_cassettes/error_handling.yml +24 -24
  27. data/test/data/vcr_cassettes/event_count.yml +44 -0
  28. data/test/data/vcr_cassettes/event_find_by_page.yml +110 -0
  29. data/test/data/vcr_cassettes/event_find_multiple.yml +124 -0
  30. data/test/data/vcr_cassettes/event_find_one.yml +114 -0
  31. data/test/data/vcr_cassettes/events.yml +110 -0
  32. data/test/data/vcr_cassettes/school_count.yml +44 -0
  33. data/test/data/vcr_cassettes/school_find_by_page.yml +96 -0
  34. data/test/data/vcr_cassettes/school_find_multiple.yml +104 -0
  35. data/test/data/vcr_cassettes/school_find_one.yml +99 -0
  36. data/test/data/vcr_cassettes/schools.yml +48 -7
  37. data/test/data/vcr_cassettes/schools_optional_attributes.yml +7 -7
  38. data/test/data/vcr_cassettes/section_count.yml +44 -0
  39. data/test/data/vcr_cassettes/section_find_by_page.yml +1146 -0
  40. data/test/data/vcr_cassettes/section_find_multiple.yml +147 -0
  41. data/test/data/vcr_cassettes/section_find_one.yml +352 -0
  42. data/test/data/vcr_cassettes/sections.yml +69 -28
  43. data/test/data/vcr_cassettes/student_count.yml +44 -0
  44. data/test/data/vcr_cassettes/student_find_by_page.yml +1171 -0
  45. data/test/data/vcr_cassettes/student_find_multiple.yml +111 -0
  46. data/test/data/vcr_cassettes/student_find_one.yml +160 -0
  47. data/test/data/vcr_cassettes/students.yml +118 -77
  48. data/test/data/vcr_cassettes/teacher_count.yml +44 -0
  49. data/test/data/vcr_cassettes/teacher_find_by_page.yml +176 -0
  50. data/test/data/vcr_cassettes/teacher_find_multiple.yml +119 -0
  51. data/test/data/vcr_cassettes/teacher_find_one.yml +177 -0
  52. data/test/data/vcr_cassettes/teachers.yml +15 -3712
  53. data/test/integration/api_operations/list_test.rb +84 -28
  54. metadata +82 -30
@@ -8,47 +8,103 @@ class ListTest < Test::Unit::TestCase
8
8
  end
9
9
  end
10
10
 
11
- should 'retrieve districts' do
12
- VCR.use_cassette('districts') do
13
- @districts = Clever::District.all
14
- end
11
+ def assert_type(resource, elem)
12
+ assert_instance_of resource, elem, "All elems of #{resource.url} should be of "\
13
+ "type #{resource.name}, instead got #{elem.class.name}. elem: #{elem.inspect}"
14
+ end
15
15
 
16
- @districts.count.must_equal 1
16
+ def self.resource_name(resource)
17
+ resource.name.split('::')[-1].downcase
17
18
  end
18
19
 
19
- should 'retrieve schools' do
20
- VCR.use_cassette('schools') do
21
- @schools = Clever::School.all
22
- end
20
+ [[Clever::District, 1], [Clever::School, 3], [Clever::Teacher, 89],
21
+ [Clever::Student, 1004], [Clever::Section, 379], [Clever::Event, 13]].each do |test_data|
22
+ resource, expected = test_data
23
+ name = resource_name resource
23
24
 
24
- @schools.count.must_equal 3
25
+ should "count #{name} properly" do
26
+ VCR.use_cassette "#{name}_count" do
27
+ count = resource.count
28
+ assert count.is_a?(Integer), "count should return an Integer. count: #{count}"
29
+ assert_equal expected, count, "Expected #{expected} #{name}s to exist, "\
30
+ "but only #{count} were found. Perhaps the test data has changed?"
31
+ end
32
+ end
25
33
  end
26
34
 
27
- should 'retrieve students' do
28
- VCR.use_cassette('students') do
29
- @students = Clever::Student.all
35
+ [Clever::District, Clever::School, Clever::Teacher,
36
+ Clever::Student, Clever::Section, Clever::Event].each do |resource|
37
+ name = resource_name resource
38
+
39
+ should "reject invalid id for #{resource}.find one" do
40
+ id = 'invalid_id'
41
+ assert_raises ArgumentError do
42
+ resource.find id
43
+ end
30
44
  end
31
45
 
32
- @students.count.must_equal 1004
33
- end
46
+ should "reject invalid ids for #{resource}.find multiple" do
47
+ # one valid, one invalid
48
+ ids = %w(123412341234123412341234 invalid_id)
49
+ assert_raises ArgumentError do
50
+ resource.find ids
51
+ end
52
+ end
34
53
 
35
- should 'retrieve sections' do
36
- VCR.use_cassette('sections') do
37
- @sections = Clever::Section.all
54
+ should "find #{name}s by page" do
55
+ VCR.use_cassette "#{name}_find_by_page" do
56
+ result = resource.find
57
+ assert_instance_of Clever::APIOperations::ResultsList, result, 'Result should be '\
58
+ "a Clever::APIOperations::ResultsList, received #{result.inspect}"
59
+ count = 0
60
+ result.each do |elem|
61
+ count += 1
62
+ assert_type resource, elem
63
+ end
64
+
65
+ expected = resource.count
66
+ count.must_equal expected, "Expected #{expected} #{name}s to be "\
67
+ "retrieved but only #{count} were found. Perhaps the test data has changed?"
68
+ end
38
69
  end
39
70
 
40
- @sections.count.must_equal 379
41
- end
71
+ should "find #{name}s with multiple ids" do
72
+ VCR.use_cassette "#{name}_find_multiple" do
73
+ to_query = []
74
+ count = 0
75
+ limit = 20
76
+ resource.find(nil, limit: limit).take(limit).each do |elem|
77
+ to_query << elem.id if count.even?
78
+ count += 1
79
+ end
80
+
81
+ return if to_query.count == 0
82
+ found = resource.find(to_query).map(&:id)
83
+ assert_equal to_query.sort, found.sort, 'Elements found by querying by array of ids '\
84
+ "should match the query itself. Expected: #{to_query.inspect}, found: #{found.inspect}"
85
+ end
86
+ end
87
+
88
+ should "find a single #{name}" do
89
+ VCR.use_cassette "#{name}_find_one" do
90
+ id = resource.find.take(20).last.id
91
+ elem = resource.find id
92
+ assert_type resource, elem
93
+ assert_equal id, elem.id
94
+ end
95
+ end
42
96
 
43
- should 'retrieve teachers' do
44
- VCR.use_cassette('teachers') do
45
- @teachers = Clever::Teacher.all
97
+ should "retrieve all #{name}" do
98
+ VCR.use_cassette("#{name}s") do
99
+ elems = resource.all
100
+ elems.each do |elem|
101
+ assert_instance_of resource, elem, "All elems of #{resource.url} should be of "\
102
+ "type #{resource.name}, instead got #{elem.class.name}. elem: #{elem.inspect}"
103
+ end
46
104
 
47
- @teachers.each do |teacher|
48
- teacher_obj = Clever::Teacher.retrieve teacher.id
49
- assert_instance_of(Clever::Teacher, teacher)
50
- assert_instance_of(Clever::Teacher, teacher_obj)
51
- assert_equal(teacher, teacher_obj)
105
+ expected = resource.count
106
+ elems.length.must_equal expected, "Expected #{expected} #{name}s to be "\
107
+ "retrieved but only #{elems.length} were found. Perhaps the test data has changed?"
52
108
  end
53
109
  end
54
110
  end
metadata CHANGED
@@ -1,167 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clever-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clever Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-09 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.10.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.10.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.6.7
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.6.7
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - ! '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 4.4.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 4.4.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: shoulda
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: 3.3.2
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.3.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rdoc
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: '3.12'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.12'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: vcr
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: 2.4.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: 2.4.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: webmock
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: 1.9.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.9.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ~>
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.10.1
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
138
  version: 0.10.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: activesupport
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ~>
144
144
  - !ruby/object:Gem::Version
145
145
  version: 3.2.11
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ~>
151
151
  - !ruby/object:Gem::Version
152
152
  version: 3.2.11
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rubocop
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ~>
158
158
  - !ruby/object:Gem::Version
159
159
  version: 0.26.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ~>
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.26.0
167
167
  description: Ruby bindings to the Clever API.
@@ -171,10 +171,10 @@ executables: []
171
171
  extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
- - ".document"
175
- - ".drone.yml"
176
- - ".gitignore"
177
- - ".rubocop.yml"
174
+ - .document
175
+ - .drone.yml
176
+ - .gitignore
177
+ - .rubocop.yml
178
178
  - CHANGELOG.md
179
179
  - Gemfile
180
180
  - LICENSE
@@ -186,6 +186,7 @@ files:
186
186
  - lib/clever-ruby/api_operations/list.rb
187
187
  - lib/clever-ruby/api_operations/page.rb
188
188
  - lib/clever-ruby/api_operations/pagelist.rb
189
+ - lib/clever-ruby/api_operations/results_list.rb
189
190
  - lib/clever-ruby/api_resource.rb
190
191
  - lib/clever-ruby/clever_object.rb
191
192
  - lib/clever-ruby/configuration.rb
@@ -203,6 +204,10 @@ files:
203
204
  - lib/clever-ruby/teacher.rb
204
205
  - lib/clever-ruby/util.rb
205
206
  - lib/clever-ruby/version.rb
207
+ - test/data/vcr_cassettes/district_count.yml
208
+ - test/data/vcr_cassettes/district_find_by_page.yml
209
+ - test/data/vcr_cassettes/district_find_multiple.yml
210
+ - test/data/vcr_cassettes/district_find_one.yml
206
211
  - test/data/vcr_cassettes/districts.yml
207
212
  - test/data/vcr_cassettes/districts_event_pages.yml
208
213
  - test/data/vcr_cassettes/districts_events.yml
@@ -216,10 +221,31 @@ files:
216
221
  - test/data/vcr_cassettes/districts_teacher_pages.yml
217
222
  - test/data/vcr_cassettes/districts_teachers.yml
218
223
  - test/data/vcr_cassettes/error_handling.yml
224
+ - test/data/vcr_cassettes/event_count.yml
225
+ - test/data/vcr_cassettes/event_find_by_page.yml
226
+ - test/data/vcr_cassettes/event_find_multiple.yml
227
+ - test/data/vcr_cassettes/event_find_one.yml
228
+ - test/data/vcr_cassettes/events.yml
229
+ - test/data/vcr_cassettes/school_count.yml
230
+ - test/data/vcr_cassettes/school_find_by_page.yml
231
+ - test/data/vcr_cassettes/school_find_multiple.yml
232
+ - test/data/vcr_cassettes/school_find_one.yml
219
233
  - test/data/vcr_cassettes/schools.yml
220
234
  - test/data/vcr_cassettes/schools_optional_attributes.yml
235
+ - test/data/vcr_cassettes/section_count.yml
236
+ - test/data/vcr_cassettes/section_find_by_page.yml
237
+ - test/data/vcr_cassettes/section_find_multiple.yml
238
+ - test/data/vcr_cassettes/section_find_one.yml
221
239
  - test/data/vcr_cassettes/sections.yml
240
+ - test/data/vcr_cassettes/student_count.yml
241
+ - test/data/vcr_cassettes/student_find_by_page.yml
242
+ - test/data/vcr_cassettes/student_find_multiple.yml
243
+ - test/data/vcr_cassettes/student_find_one.yml
222
244
  - test/data/vcr_cassettes/students.yml
245
+ - test/data/vcr_cassettes/teacher_count.yml
246
+ - test/data/vcr_cassettes/teacher_find_by_page.yml
247
+ - test/data/vcr_cassettes/teacher_find_multiple.yml
248
+ - test/data/vcr_cassettes/teacher_find_one.yml
223
249
  - test/data/vcr_cassettes/teachers.yml
224
250
  - test/integration/api_operations/list_test.rb
225
251
  - test/integration/district_test.rb
@@ -238,12 +264,12 @@ require_paths:
238
264
  - lib
239
265
  required_ruby_version: !ruby/object:Gem::Requirement
240
266
  requirements:
241
- - - ">="
267
+ - - ! '>='
242
268
  - !ruby/object:Gem::Version
243
269
  version: 1.9.3
244
270
  required_rubygems_version: !ruby/object:Gem::Requirement
245
271
  requirements:
246
- - - ">="
272
+ - - ! '>='
247
273
  - !ruby/object:Gem::Version
248
274
  version: '0'
249
275
  requirements: []
@@ -253,6 +279,10 @@ signing_key:
253
279
  specification_version: 4
254
280
  summary: Ruby bindings to the Clever API.
255
281
  test_files:
282
+ - test/data/vcr_cassettes/district_count.yml
283
+ - test/data/vcr_cassettes/district_find_by_page.yml
284
+ - test/data/vcr_cassettes/district_find_multiple.yml
285
+ - test/data/vcr_cassettes/district_find_one.yml
256
286
  - test/data/vcr_cassettes/districts.yml
257
287
  - test/data/vcr_cassettes/districts_event_pages.yml
258
288
  - test/data/vcr_cassettes/districts_events.yml
@@ -266,10 +296,31 @@ test_files:
266
296
  - test/data/vcr_cassettes/districts_teacher_pages.yml
267
297
  - test/data/vcr_cassettes/districts_teachers.yml
268
298
  - test/data/vcr_cassettes/error_handling.yml
299
+ - test/data/vcr_cassettes/event_count.yml
300
+ - test/data/vcr_cassettes/event_find_by_page.yml
301
+ - test/data/vcr_cassettes/event_find_multiple.yml
302
+ - test/data/vcr_cassettes/event_find_one.yml
303
+ - test/data/vcr_cassettes/events.yml
304
+ - test/data/vcr_cassettes/school_count.yml
305
+ - test/data/vcr_cassettes/school_find_by_page.yml
306
+ - test/data/vcr_cassettes/school_find_multiple.yml
307
+ - test/data/vcr_cassettes/school_find_one.yml
269
308
  - test/data/vcr_cassettes/schools.yml
270
309
  - test/data/vcr_cassettes/schools_optional_attributes.yml
310
+ - test/data/vcr_cassettes/section_count.yml
311
+ - test/data/vcr_cassettes/section_find_by_page.yml
312
+ - test/data/vcr_cassettes/section_find_multiple.yml
313
+ - test/data/vcr_cassettes/section_find_one.yml
271
314
  - test/data/vcr_cassettes/sections.yml
315
+ - test/data/vcr_cassettes/student_count.yml
316
+ - test/data/vcr_cassettes/student_find_by_page.yml
317
+ - test/data/vcr_cassettes/student_find_multiple.yml
318
+ - test/data/vcr_cassettes/student_find_one.yml
272
319
  - test/data/vcr_cassettes/students.yml
320
+ - test/data/vcr_cassettes/teacher_count.yml
321
+ - test/data/vcr_cassettes/teacher_find_by_page.yml
322
+ - test/data/vcr_cassettes/teacher_find_multiple.yml
323
+ - test/data/vcr_cassettes/teacher_find_one.yml
273
324
  - test/data/vcr_cassettes/teachers.yml
274
325
  - test/integration/api_operations/list_test.rb
275
326
  - test/integration/district_test.rb
@@ -279,3 +330,4 @@ test_files:
279
330
  - test/unit/configuration_test.rb
280
331
  - test/unit/event_test.rb
281
332
  - test/unit/optional_attributes_test.rb
333
+ has_rdoc: