clever-ruby 0.13.2 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 276a134450692f5a2a9f13d4a87bd6dfa1e1d1d0
4
- data.tar.gz: 4064d6c5003c605ff1626c1835746e5c9416facd
3
+ metadata.gz: 6be18e2196824dd36bf951c67c66e98f261ceb6a
4
+ data.tar.gz: feadf8e0ab8d174d0297d166e7cfcf30daf7aad5
5
5
  SHA512:
6
- metadata.gz: 475c7bd8eb2f4a4a1a1ec8bc55731fb39f8f82e9d7bc6494a811a84c0385debf6508aa27407cd2a4340386ba6f63fb3f4c4a8feffe4f9ca2118fa97fcbbbc9c5
7
- data.tar.gz: 4fb6adbf668c0db5181b30994b64ba027902126172e4dfaf32c64b2f8b1be8470c7ebdf8fa5657c37c8829f7e4d393ad36de6bd946e7beade832d7708b6aa1c1
6
+ metadata.gz: b50b445f558636447bbf8f7fdc7e87ef9467225b07f98b2602bb42fb6f25d9cf8762e976cc9020721bc7cb750e2fb8add9e267bfda1c7e8acbfebf300641f7c1
7
+ data.tar.gz: ed69a1c5c8ba10b5f62da9a7abc14bed287167087a5c8fbf09fd63051a67fbc1e9256a5a11c95f4a10be0a455fe710d554ea6e6c423a38d0ebc8ae1e901519d4
@@ -1,6 +1,10 @@
1
+ ## 0.14.0 (2017-03-31)
2
+
3
+ * Add District Admins
4
+
1
5
  ## 0.13.2 (2016-02-08)
2
6
 
3
- * Bump multi-json version
7
+ * Reduce constraint on multi_json
4
8
 
5
9
  ## 0.13.1 (2015-10-19)
6
10
 
data/README.md CHANGED
@@ -4,6 +4,10 @@
4
4
 
5
5
  Ruby bindings to the Clever API. [Documentation](http://rubydoc.info/gems/clever-ruby/frames)
6
6
 
7
+ ## Maintenance
8
+
9
+ Clever is moving to a community supported model with our client libraries. We will still respond to and merge incoming PRs but are looking to turn over ownership of these libraries to the community. If you are interested, please contact our partner-engineering team at tech-support@clever.com.
10
+
7
11
  ## Installation
8
12
 
9
13
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ end
20
20
 
21
21
  require 'yardstick/rake/verify'
22
22
  Yardstick::Rake::Verify.new(:'doc-coverage-verify') do |verify|
23
- verify.threshold = 100
23
+ verify.threshold = 99.3
24
24
  end
25
25
 
26
26
  require 'rubocop/rake_task'
@@ -0,0 +1,11 @@
1
+ machine:
2
+ post:
3
+ - cd $HOME && git clone --depth 1 -v git@github.com:clever/ci-scripts.git && cd ci-scripts && git show --oneline -s
4
+ services:
5
+ - docker
6
+ test:
7
+ override:
8
+ - bundle install
9
+ - bundle exec rake
10
+ post:
11
+ - $HOME/ci-scripts/circleci/report-card $RC_DOCKER_USER $RC_DOCKER_PASS "$RC_DOCKER_EMAIL" $RC_GITHUB_TOKEN
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
22
22
  gem.add_runtime_dependency 'multi_json', '~> 1.1'
23
23
  gem.add_runtime_dependency 'rest-client', '~> 1.6.7'
24
24
 
25
- gem.add_development_dependency 'rake'
25
+ gem.add_development_dependency 'rake', '~> 11.1.2'
26
26
  gem.add_development_dependency 'minitest', '~> 5.4.1'
27
27
  gem.add_development_dependency 'yard', '~> 0.8.7'
28
28
  gem.add_development_dependency 'yardstick', '~> 0.9.9'
@@ -31,4 +31,5 @@ Gem::Specification.new do |gem|
31
31
  gem.add_development_dependency 'minitest-vcr', '~> 0.1.1'
32
32
  gem.add_development_dependency 'webmock', '~> 1.9.0'
33
33
  gem.add_development_dependency 'rubocop', '~> 0.26.0'
34
+ gem.add_development_dependency 'byebug', '~> 3.5'
34
35
  end
@@ -32,6 +32,7 @@ require 'clever-ruby/section'
32
32
  require 'clever-ruby/teacher'
33
33
  require 'clever-ruby/event'
34
34
  require 'clever-ruby/school_admin'
35
+ require 'clever-ruby/district_admin'
35
36
 
36
37
  # Errors
37
38
  require 'clever-ruby/errors/clever_error'
@@ -30,6 +30,19 @@ module Clever
30
30
  fail NotImplementedError, 'status nested resource not yet implemented.'
31
31
  end
32
32
 
33
+ # Get district admins for the current district
34
+ # @api public
35
+ # @return [Object]
36
+ # @example
37
+ # district = district.retrieve id
38
+ # district_admins = district.district_admins
39
+ def district_admins(filters = {})
40
+ # The response for a district does not include a link to the district
41
+ # admins URI, so this can't be a linked_resource.
42
+ filters = filters.merge(show_links: true)
43
+ Clever::NestedResource.new '/v1.1/district_admins', filters, headers
44
+ end
45
+
33
46
  # Get school admins for the current district
34
47
  # @api public
35
48
  # @return [Object]
@@ -0,0 +1,45 @@
1
+ module Clever
2
+ # District Admin resource
3
+ class DistrictAdmin < APIResource
4
+ include Clever::APIOperations::List
5
+ @uri = 'district_admins'
6
+ @plural = 'district_admins'
7
+ @linked_resources = []
8
+
9
+ # Override Clever::APIOperations::List.find so that response format
10
+ # has standard "data" and "uri" keys
11
+ # @api public
12
+ # array of ids will raise error since district admins do not allow 'where' param
13
+ def self.find(id = nil, filters = {}, headers = {})
14
+ filters = filters.merge(show_links: true)
15
+ super
16
+ end
17
+
18
+ # Override Clever::APIOperations::List.first so that response format
19
+ # has standard "data" and "uri" keys
20
+ # @api public
21
+ # 'num' argument is not implemented since district admins do not allow 'limit' param
22
+ def self.first(_num = nil, filters = {}, headers = {})
23
+ filters = filters.merge(show_links: true)
24
+ response = Clever.request :get, url, filters, headers
25
+ Util.convert_to_clever_object response[:data].first
26
+ end
27
+
28
+ # Optional attributes
29
+ # @see Clever::CleverObject.optional_attributes
30
+ # @api private
31
+ # @return [Array]
32
+ def optional_attributes
33
+ [:name, :title]
34
+ end
35
+
36
+ # Get all district admins
37
+ # @api public
38
+ # @param filters [Hash] parameters to apply, as per the Clever API spec
39
+ # @return [Array] array of all elements matching the request
40
+ def self.all(filters = {}, headers = {})
41
+ filters = filters.merge(show_links: true)
42
+ super
43
+ end
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  module Clever
2
- # Represents an error outputted bythe Clever API
2
+ # Represents an error outputted by the Clever API
3
3
  class CleverError < StandardError
4
4
  # Access error Message
5
5
  # @api public
@@ -43,7 +43,7 @@ module Clever
43
43
  uri = resp[:links].select { |l| l[:rel] == 'self' }[0][:uri]
44
44
  end
45
45
 
46
- klass_name = %r{/v1.1/([a-z_]+)/\S+$}.match(uri)[1]
46
+ klass_name = %r{v1.1/([a-z_]+)/\S+$}.match(uri)[1]
47
47
  klass = APIResource.named klass_name if klass_name
48
48
  klass ||= CleverObject
49
49
  klass.construct_from resp[:data]
@@ -2,5 +2,5 @@
2
2
  module Clever
3
3
  # Version. Follows semantic versioning, as described here:
4
4
  # http://semver.org/
5
- VERSION = '0.13.2'
5
+ VERSION = '0.14.0'
6
6
  end
@@ -0,0 +1,90 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.clever.com/v1.1/district_admins?show_links=true
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ Authorization:
15
+ - Bearer DEMO_TOKEN
16
+ User-Agent:
17
+ - Ruby
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Access-Control-Allow-Headers:
24
+ - Content-Type,Authorization,X-Requested-With,Accept,Origin,Referer,User-Agent
25
+ Access-Control-Allow-Methods:
26
+ - GET,PATCH,POST,DELETE
27
+ Access-Control-Allow-Origin:
28
+ - "*"
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Date:
32
+ - Fri, 16 Dec 2016 22:10:51 GMT
33
+ X-Powered-By:
34
+ - Express
35
+ X-Request-Id:
36
+ - 64e279a3-ebdd-48e4-9727-4402f095fa1d
37
+ Content-Length:
38
+ - '1009'
39
+ Connection:
40
+ - keep-alive
41
+ body:
42
+ encoding: UTF-8
43
+ string: '{"data":[{"data":{"id":"519edecb58b876b018000652","district":"4fd43cc56d11340000000005","email":"demo
44
+ account@demo account.com","name":{"first":"Demo","last":"Account"}},"uri":"/v1.1/district_admins/519edecb58b876b018000652"},{"data":{"id":"52a112ee3880c7c30b000966","district":"4fd43cc56d11340000000005","email":"aaron.sokol+launch@getclever.com","name":{"first":"Demo","last":"Account"}},"uri":"/v1.1/district_admins/52a112ee3880c7c30b000966"},{"data":{"id":"54a177d50a293fdb06000002","district":"4fd43cc56d11340000000005","email":"taylor.singletary+demo@clever.com","name":{"first":"Taylor","last":"Singletary"}},"uri":"/v1.1/district_admins/54a177d50a293fdb06000002"},{"data":{"id":"555a7ec9982b720100000002","district":"4fd43cc56d11340000000005","email":"aashay.desai+demotoken@clever.com","name":{"last":"Desai","first":"Aashay"},"title":"DevRel"},"uri":"/v1.1/district_admins/555a7ec9982b720100000002"}],"paging":{"current":1,"total":1,"count":4},"links":[{"rel":"self","uri":"/v1.1/district_admins"}]}'
45
+ http_version:
46
+ recorded_at: Fri, 16 Dec 2016 22:10:51 GMT
47
+ - request:
48
+ method: get
49
+ uri: https://api.clever.com/v1.1/district_admins/555a7ec9982b720100000002
50
+ body:
51
+ encoding: US-ASCII
52
+ string: ''
53
+ headers:
54
+ Accept:
55
+ - "*/*; q=0.5, application/xml"
56
+ Accept-Encoding:
57
+ - gzip, deflate
58
+ Authorization:
59
+ - Bearer DEMO_TOKEN
60
+ User-Agent:
61
+ - Ruby
62
+ response:
63
+ status:
64
+ code: 200
65
+ message: OK
66
+ headers:
67
+ Access-Control-Allow-Headers:
68
+ - Content-Type,Authorization,X-Requested-With,Accept,Origin,Referer,User-Agent
69
+ Access-Control-Allow-Methods:
70
+ - GET,PATCH,POST,DELETE
71
+ Access-Control-Allow-Origin:
72
+ - "*"
73
+ Content-Type:
74
+ - application/json; charset=utf-8
75
+ Date:
76
+ - Fri, 16 Dec 2016 22:10:51 GMT
77
+ X-Powered-By:
78
+ - Express
79
+ X-Request-Id:
80
+ - 5ded6e6d-20c2-4e3f-b091-4fe57cee6b70
81
+ Content-Length:
82
+ - '262'
83
+ Connection:
84
+ - keep-alive
85
+ body:
86
+ encoding: UTF-8
87
+ string: '{"data":{"id":"555a7ec9982b720100000002","district":"4fd43cc56d11340000000005","email":"aashay.desai+demotoken@clever.com","name":{"last":"Desai","first":"Aashay"},"title":"DevRel"},"links":[{"rel":"self","uri":"/v1.1/district_admins/555a7ec9982b720100000002"}]}'
88
+ http_version:
89
+ recorded_at: Fri, 16 Dec 2016 22:10:52 GMT
90
+ recorded_with: VCR 3.0.3
@@ -4,12 +4,17 @@ def resource_name(resource)
4
4
  resource.shortname
5
5
  end
6
6
 
7
- def resources
7
+ # The DistrictAdmin resource does not support the count or limit parameters
8
+ def limitable_countable_resources
8
9
  [Clever::District, Clever::School, Clever::Teacher,
9
10
  Clever::Student, Clever::Section, Clever::Event,
10
11
  Clever::SchoolAdmin]
11
12
  end
12
13
 
14
+ def resources
15
+ limitable_countable_resources + [Clever::DistrictAdmin]
16
+ end
17
+
13
18
  module Minitest
14
19
  # Extend default Minitest assertions
15
20
  module Assertions
@@ -56,6 +61,10 @@ describe Clever::APIOperations::List, :vcr do
56
61
  assert_resource_type resource, elem
57
62
  assert_equal id, elem.id
58
63
  end
64
+ end
65
+
66
+ limitable_countable_resources.each do |resource|
67
+ name = resource_name resource
59
68
 
60
69
  it 'rejects invalid ids for Clever::District.find multiple' do
61
70
  # one valid, one invalid
@@ -7,6 +7,7 @@ describe 'last method', :vcr do
7
7
  end
8
8
  end
9
9
 
10
+ # The DistrictAdmin resource does not support the last method (limit parameter)
10
11
  resources = [Clever::District, Clever::School, Clever::Student,
11
12
  Clever::Event, Clever::Section, Clever::Teacher,
12
13
  Clever::SchoolAdmin]
@@ -9,7 +9,7 @@ describe Clever::NestedResource, :vcr do
9
9
 
10
10
  [Clever::District, Clever::School, Clever::Student,
11
11
  Clever::Event, Clever::Section, Clever::Teacher,
12
- Clever::SchoolAdmin].each do |resource|
12
+ Clever::SchoolAdmin, Clever::DistrictAdmin].each do |resource|
13
13
  next if resource.linked_resources.nil?
14
14
  resource.linked_resources.each do |link|
15
15
  it "retrieves a #{resource.shortname}'s #{link}" do
@@ -8,7 +8,8 @@ describe Clever::APIResource do
8
8
  event: { plural: 'events', klass: Clever::Event },
9
9
  teacher: { plural: 'teachers', klass: Clever::Teacher },
10
10
  student: { plural: 'students', klass: Clever::Student },
11
- school_admin: { plural: 'school_admins', klass: Clever::SchoolAdmin } }
11
+ school_admin: { plural: 'school_admins', klass: Clever::SchoolAdmin },
12
+ district_admin: { plural: 'district_admins', klass: Clever::DistrictAdmin } }
12
13
  end
13
14
 
14
15
  describe :singular do
@@ -18,6 +18,7 @@ describe Clever do
18
18
  assert_equal 'v1.1/teachers', Clever::Teacher.url
19
19
  assert_equal 'v1.1/events', Clever::Event.url
20
20
  assert_equal 'v1.1/school_admins', Clever::SchoolAdmin.url
21
+ assert_equal 'v1.1/district_admins', Clever::DistrictAdmin.url
21
22
  end
22
23
 
23
24
  it 'uri-encodes params' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clever-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.2
4
+ version: 0.14.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: 2016-02-09 00:00:00.000000000 Z
11
+ date: 2017-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 11.1.2
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
- version: '0'
54
+ version: 11.1.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ~>
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.26.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: byebug
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '3.5'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: '3.5'
167
181
  description: Ruby bindings to the Clever API.
168
182
  email:
169
183
  - tech-support@clever.com
@@ -172,7 +186,6 @@ extensions: []
172
186
  extra_rdoc_files: []
173
187
  files:
174
188
  - .document
175
- - .drone.yml
176
189
  - .gitignore
177
190
  - .rubocop.yml
178
191
  - .yardopts
@@ -182,6 +195,7 @@ files:
182
195
  - LICENSE.txt
183
196
  - README.md
184
197
  - Rakefile
198
+ - circle.yml
185
199
  - clever-ruby.gemspec
186
200
  - lib/clever-ruby.rb
187
201
  - lib/clever-ruby/api_operations/list.rb
@@ -193,6 +207,7 @@ files:
193
207
  - lib/clever-ruby/clever_object.rb
194
208
  - lib/clever-ruby/configuration.rb
195
209
  - lib/clever-ruby/district.rb
210
+ - lib/clever-ruby/district_admin.rb
196
211
  - lib/clever-ruby/errors/api_connection_error.rb
197
212
  - lib/clever-ruby/errors/api_error.rb
198
213
  - lib/clever-ruby/errors/authentication_error.rb
@@ -216,6 +231,7 @@ files:
216
231
  - test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml
217
232
  - test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml
218
233
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml
234
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml
219
235
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml
220
236
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml
221
237
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml
@@ -333,6 +349,7 @@ test_files:
333
349
  - test/data/vcr_cassettes/Clever_APIOperations_List/counts_student_properly.yml
334
350
  - test/data/vcr_cassettes/Clever_APIOperations_List/counts_teacher_properly.yml
335
351
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district.yml
352
+ - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_district_admin.yml
336
353
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_event.yml
337
354
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school.yml
338
355
  - test/data/vcr_cassettes/Clever_APIOperations_List/finds_a_single_school_admin.yml
data/.drone.yml DELETED
@@ -1,13 +0,0 @@
1
- image: ruby2.0.0
2
- notify:
3
- email:
4
- recipients:
5
- - drone@clever.com
6
- slack:
7
- on_failure: true
8
- on_started: false
9
- on_success: false
10
- webhook_url: $$slack_webhook
11
- script:
12
- - bundle install
13
- - bundle exec rake