my_john_deere_api 2.2.4 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/my_john_deere_api/client.rb +2 -2
- data/lib/my_john_deere_api/errors/missing_contribution_definition_id_error.rb +12 -0
- data/lib/my_john_deere_api/errors.rb +1 -0
- data/lib/my_john_deere_api/request/create/asset.rb +2 -0
- data/lib/my_john_deere_api/request/create/base.rb +11 -0
- data/lib/my_john_deere_api/request/update/asset.rb +2 -0
- data/lib/my_john_deere_api/request/update/base.rb +11 -0
- data/lib/my_john_deere_api/version.rb +1 -1
- data/test/lib/my_john_deere_api/client_test.rb +10 -0
- data/test/lib/my_john_deere_api/errors/missing_contribution_definition_id_error_test.rb +14 -0
- data/test/lib/my_john_deere_api/errors_test.rb +4 -0
- data/test/lib/my_john_deere_api/request/create/asset_test.rb +10 -0
- data/test/lib/my_john_deere_api/request/create/base_test.rb +16 -0
- data/test/lib/my_john_deere_api/request/update/asset_test.rb +9 -0
- data/test/lib/my_john_deere_api/request/update/base_test.rb +16 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4770ad629b97ce42d4a5482559e26506b78b67fcec897e6e08e849d9c38e6f7
|
4
|
+
data.tar.gz: af1b02dce372ce905933242226756e298553b75b6265ebb6f44d71916b20a5cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44005e84b7c7e80ba54498e9c77f6d00e9fea447fcdc67106b55fd49e1452fc88a43d37a599506c22819e7ad4f1a166562b22a7954a966ffaba1e23d697530be
|
7
|
+
data.tar.gz: 964b2f971c765d5c115e7cf4f73372de6c69c77d15b7134c2b4d6137394ad78090c279305b300157228ee35916bf767f9c15f28d239d95a8c5242ae9d6cc8261
|
data/README.md
CHANGED
@@ -499,6 +499,9 @@ Custom errors help clearly identify problems when using the client:
|
|
499
499
|
unrecognized environment. Valid environments are `:sandbox` or `:production`.
|
500
500
|
* **InvalidRecordError** is raised when bad input has been given, in an attempt to create or update
|
501
501
|
a record on the John Deere platform.
|
502
|
+
* **MissingContributionDefinitionIdError** is raised when the optional contribution\_definition\_id
|
503
|
+
has not been set in the client, but an operation has been attempted that requires it - like
|
504
|
+
creating an asset in the John Deere platform.
|
502
505
|
* **TypeMismatchError** is raised when a model is instantiated, typically when a record is received
|
503
506
|
from John Deere and is being converted into a Ruby object. Model instantiation is normally handled
|
504
507
|
by request objects, but this error is helpful if you're instantiating your own models for advanced
|
@@ -3,8 +3,8 @@ module MyJohnDeereApi
|
|
3
3
|
include Helpers::EnvironmentHelper
|
4
4
|
include Helpers::CaseConversion
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
attr_accessor :contribution_definition_id
|
7
|
+
attr_reader :api_key, :api_secret, :access_token, :access_secret
|
8
8
|
|
9
9
|
DEFAULTS = {
|
10
10
|
environment: :live
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module MyJohnDeereApi
|
2
|
+
##
|
3
|
+
# This error is used in a context that will fail in the absence of
|
4
|
+
# a valid oAuth access token. We have classes that may only need
|
5
|
+
# access tokens for some use cases.
|
6
|
+
|
7
|
+
class MissingContributionDefinitionIdError < StandardError
|
8
|
+
def initialize(message = "Contribution Definition ID must be set in the client to use this feature.")
|
9
|
+
super
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module MyJohnDeereApi::Errors
|
2
2
|
require 'my_john_deere_api/errors/invalid_record_error'
|
3
|
+
require 'my_john_deere_api/errors/missing_contribution_definition_id_error'
|
3
4
|
require 'my_john_deere_api/errors/not_yet_implemented_error'
|
4
5
|
require 'my_john_deere_api/errors/type_mismatch_error'
|
5
6
|
require 'my_john_deere_api/errors/unsupported_environment_error'
|
@@ -54,6 +54,17 @@ module MyJohnDeereApi
|
|
54
54
|
def process_attributes
|
55
55
|
end
|
56
56
|
|
57
|
+
##
|
58
|
+
# Raise an error if contribution_definition_id is missing
|
59
|
+
|
60
|
+
def validate_contribution_definition
|
61
|
+
unless client.contribution_definition_id
|
62
|
+
raise MissingContributionDefinitionIdError
|
63
|
+
end
|
64
|
+
|
65
|
+
true
|
66
|
+
end
|
67
|
+
|
57
68
|
##
|
58
69
|
# Headers for POST request
|
59
70
|
|
@@ -54,6 +54,17 @@ module MyJohnDeereApi
|
|
54
54
|
def process_attributes
|
55
55
|
end
|
56
56
|
|
57
|
+
##
|
58
|
+
# Raise an error if contribution_definition_id is missing
|
59
|
+
|
60
|
+
def validate_contribution_definition
|
61
|
+
unless client.contribution_definition_id
|
62
|
+
raise MissingContributionDefinitionIdError
|
63
|
+
end
|
64
|
+
|
65
|
+
true
|
66
|
+
end
|
67
|
+
|
57
68
|
##
|
58
69
|
# Headers for PUT request
|
59
70
|
|
@@ -37,6 +37,16 @@ describe 'MyJohnDeereApi::Client' do
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
describe '#contribution_definition_id' do
|
41
|
+
it 'can be set after instantiation' do
|
42
|
+
client = JD::Client.new(api_key, api_secret)
|
43
|
+
assert_nil client.contribution_definition_id
|
44
|
+
|
45
|
+
client.contribution_definition_id = '123'
|
46
|
+
assert_equal '123', client.contribution_definition_id
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
40
50
|
describe '#get' do
|
41
51
|
it 'returns the response as a Hash' do
|
42
52
|
response = VCR.use_cassette('get_organizations') { client.get('/organizations') }
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'support/helper'
|
2
|
+
|
3
|
+
describe 'MyJohnDeereApi::MissingContributionDefinitionIdError' do
|
4
|
+
let(:klass) { MyJohnDeereApi::MissingContributionDefinitionIdError }
|
5
|
+
let(:error) { klass.new }
|
6
|
+
|
7
|
+
it 'inherits from StandardError' do
|
8
|
+
assert_kind_of StandardError, error
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'has a default message' do
|
12
|
+
assert_includes error.message, 'Contribution Definition ID must be set in the client to use this feature.'
|
13
|
+
end
|
14
|
+
end
|
@@ -6,6 +6,10 @@ describe 'MyJohnDeereApi Errors' do
|
|
6
6
|
assert JD::InvalidRecordError
|
7
7
|
end
|
8
8
|
|
9
|
+
it 'loads MissingContributionDefinitionIdError' do
|
10
|
+
assert JD::MissingContributionDefinitionIdError
|
11
|
+
end
|
12
|
+
|
9
13
|
it 'loads NotYetImplementedError' do
|
10
14
|
assert JD::NotYetImplementedError
|
11
15
|
end
|
@@ -129,6 +129,7 @@ describe 'MyJohnDeereApi::Request::Create::Asset' do
|
|
129
129
|
it 'properly forms the request body' do
|
130
130
|
object = klass.new(client, attributes)
|
131
131
|
body = object.send(:request_body)
|
132
|
+
|
132
133
|
assert_equal attributes[:title], body[:title]
|
133
134
|
assert_equal attributes[:asset_category], body[:assetCategory]
|
134
135
|
assert_equal attributes[:asset_type], body[:assetType]
|
@@ -143,6 +144,15 @@ describe 'MyJohnDeereApi::Request::Create::Asset' do
|
|
143
144
|
assert_equal "#{base_url}/contributionDefinitions/#{contribution_definition_id}",
|
144
145
|
body[:links].first['uri']
|
145
146
|
end
|
147
|
+
|
148
|
+
it 'raises an exception when contribution_definition_id is not set' do
|
149
|
+
client.contribution_definition_id = nil
|
150
|
+
object = klass.new(client, attributes)
|
151
|
+
|
152
|
+
assert_raises(JD::MissingContributionDefinitionIdError) do
|
153
|
+
object.send(:request_body)
|
154
|
+
end
|
155
|
+
end
|
146
156
|
end
|
147
157
|
|
148
158
|
describe '#request' do
|
@@ -26,4 +26,20 @@ describe 'MyJohnDeereApi::Request::Create::Base' do
|
|
26
26
|
assert_equal expected, headers['Content-Type']
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
describe '#validate_contribution_definition' do
|
31
|
+
it 'does nothing when contribution_definition_id is present' do
|
32
|
+
object = klass.new(client, attributes)
|
33
|
+
assert object.send(:validate_contribution_definition)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'raises an error when contribution_definition_id is missing' do
|
37
|
+
client.contribution_definition_id = nil
|
38
|
+
object = klass.new(client, attributes)
|
39
|
+
|
40
|
+
assert_raises(JD::MissingContributionDefinitionIdError) do
|
41
|
+
object.send(:validate_contribution_definition)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
29
45
|
end
|
@@ -78,6 +78,15 @@ describe 'MyJohnDeereApi::Request::Update::Asset' do
|
|
78
78
|
assert_equal "#{base_url}/contributionDefinitions/#{contribution_definition_id}",
|
79
79
|
body[:links].first['uri']
|
80
80
|
end
|
81
|
+
|
82
|
+
it 'raises an exception when contribution_definition_id is not set' do
|
83
|
+
client.contribution_definition_id = nil
|
84
|
+
object = klass.new(client, item, attributes)
|
85
|
+
|
86
|
+
assert_raises(JD::MissingContributionDefinitionIdError) do
|
87
|
+
object.send(:request_body)
|
88
|
+
end
|
89
|
+
end
|
81
90
|
end
|
82
91
|
|
83
92
|
describe '#request' do
|
@@ -57,4 +57,20 @@ describe 'MyJohnDeereApi::Request::Update::Base' do
|
|
57
57
|
assert_equal expected, headers['Content-Type']
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
describe '#validate_contribution_definition' do
|
62
|
+
it 'does nothing when contribution_definition_id is present' do
|
63
|
+
object = klass.new(client, item, attributes)
|
64
|
+
assert object.send(:validate_contribution_definition)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'raises an error when contribution_definition_id is missing' do
|
68
|
+
client.contribution_definition_id = nil
|
69
|
+
object = klass.new(client, item, attributes)
|
70
|
+
|
71
|
+
assert_raises(JD::MissingContributionDefinitionIdError) do
|
72
|
+
object.send(:validate_contribution_definition)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
60
76
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: my_john_deere_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaime Bellmyer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-02-
|
12
|
+
date: 2020-02-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: vcr
|
@@ -108,6 +108,7 @@ files:
|
|
108
108
|
- lib/my_john_deere_api/consumer.rb
|
109
109
|
- lib/my_john_deere_api/errors.rb
|
110
110
|
- lib/my_john_deere_api/errors/invalid_record_error.rb
|
111
|
+
- lib/my_john_deere_api/errors/missing_contribution_definition_id_error.rb
|
111
112
|
- lib/my_john_deere_api/errors/not_yet_implemented_error.rb
|
112
113
|
- lib/my_john_deere_api/errors/type_mismatch_error.rb
|
113
114
|
- lib/my_john_deere_api/errors/unsupported_environment_error.rb
|
@@ -157,6 +158,7 @@ files:
|
|
157
158
|
- test/lib/my_john_deere_api/client_test.rb
|
158
159
|
- test/lib/my_john_deere_api/consumer_test.rb
|
159
160
|
- test/lib/my_john_deere_api/errors/invalid_record_error_test.rb
|
161
|
+
- test/lib/my_john_deere_api/errors/missing_contribution_definition_id_error_test.rb
|
160
162
|
- test/lib/my_john_deere_api/errors/not_yet_implemented_error_test.rb
|
161
163
|
- test/lib/my_john_deere_api/errors/type_mismatch_error_test.rb
|
162
164
|
- test/lib/my_john_deere_api/errors/unsupported_environment_error_test.rb
|