my_john_deere_api 1.3.7 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/my_john_deere_api/client.rb +7 -2
- data/lib/my_john_deere_api/request/create/asset.rb +1 -1
- data/lib/my_john_deere_api/request/update/asset.rb +1 -1
- data/lib/my_john_deere_api/validators/asset.rb +1 -1
- data/lib/my_john_deere_api/version.rb +1 -1
- data/test/lib/my_john_deere_api/client_test.rb +9 -4
- data/test/lib/my_john_deere_api/request/collection/assets_test.rb +1 -1
- data/test/lib/my_john_deere_api/request/create/asset_test.rb +1 -10
- data/test/lib/my_john_deere_api/request/update/asset_test.rb +0 -1
- data/test/lib/my_john_deere_api/validators/asset_test.rb +1 -2
- data/test/support/vcr_setup.rb +8 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12dd779b0061a90ac8b9d20b3a5111fe1b8f76ebf4153817480abe886a4d45f0
|
4
|
+
data.tar.gz: 8d4bf6db2d2dd9a720c500c0300ff9409766ed639f3191154de6319bae5d171e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5af6c3d0843479c8c05cdc36f3cbb1645b26a76e41de187ff513ba78089586c1a890c229918a39ffc3599b4f989b718a288a78f208f72fcd8027dccb2381861b
|
7
|
+
data.tar.gz: 59e8a16606a6b002b91970745894759af3e69d0a674dd1e01f2099acf4836ed61afabcaba9ffbe298f40ac71ca078a5d614923a095864db6ecc9998a1ad2a669
|
@@ -3,14 +3,15 @@ module MyJohnDeereApi
|
|
3
3
|
include Helpers::EnvironmentHelper
|
4
4
|
include Helpers::CaseConversion
|
5
5
|
|
6
|
-
attr_reader :api_key, :api_secret, :access_token, :access_secret,
|
6
|
+
attr_reader :api_key, :api_secret, :access_token, :access_secret,
|
7
|
+
:contribution_definition_id
|
7
8
|
|
8
9
|
DEFAULTS = {
|
9
10
|
environment: :live
|
10
11
|
}
|
11
12
|
|
12
13
|
##
|
13
|
-
# Creates the client with
|
14
|
+
# Creates the client with everything it needs to perform API requests.
|
14
15
|
# User-specific credentials are optional, but user-specific API
|
15
16
|
# requests are only possible if they are supplied.
|
16
17
|
#
|
@@ -18,6 +19,9 @@ module MyJohnDeereApi
|
|
18
19
|
#
|
19
20
|
# [:environment] :sandbox or :live
|
20
21
|
#
|
22
|
+
# [:contribution_definition_id] optional, but needed for some requests
|
23
|
+
# like asset create/update.
|
24
|
+
#
|
21
25
|
# [:access] an array with two elements, the access_token
|
22
26
|
# and the access_secret of the given user
|
23
27
|
|
@@ -32,6 +36,7 @@ module MyJohnDeereApi
|
|
32
36
|
end
|
33
37
|
|
34
38
|
self.environment = options[:environment]
|
39
|
+
@contribution_definition_id = options[:contribution_definition_id]
|
35
40
|
end
|
36
41
|
|
37
42
|
##
|
@@ -45,7 +45,7 @@ module MyJohnDeereApi
|
|
45
45
|
{
|
46
46
|
'@type' => 'Link',
|
47
47
|
'rel' => 'contributionDefinition',
|
48
|
-
'uri' => "#{accessor.consumer.site}/contributionDefinitions/#{
|
48
|
+
'uri' => "#{accessor.consumer.site}/contributionDefinitions/#{client.contribution_definition_id}"
|
49
49
|
}
|
50
50
|
]
|
51
51
|
}
|
@@ -28,7 +28,7 @@ module MyJohnDeereApi
|
|
28
28
|
{
|
29
29
|
'@type' => 'Link',
|
30
30
|
'rel' => 'contributionDefinition',
|
31
|
-
'uri' => "#{accessor.consumer.site}/contributionDefinitions/#{
|
31
|
+
'uri' => "#{accessor.consumer.site}/contributionDefinitions/#{client.contribution_definition_id}"
|
32
32
|
}
|
33
33
|
]
|
34
34
|
}
|
@@ -30,6 +30,11 @@ describe 'MyJohnDeereApi::Client' do
|
|
30
30
|
client = JD::Client.new(api_key, api_secret, environment: environment)
|
31
31
|
assert_equal environment, client.environment
|
32
32
|
end
|
33
|
+
|
34
|
+
it 'accepts a contribution_definition_id' do
|
35
|
+
client = JD::Client.new(api_key, api_secret, contribution_definition_id: contribution_definition_id)
|
36
|
+
assert_equal contribution_definition_id, client.contribution_definition_id
|
37
|
+
end
|
33
38
|
end
|
34
39
|
|
35
40
|
describe '#get' do
|
@@ -63,12 +68,12 @@ describe 'MyJohnDeereApi::Client' do
|
|
63
68
|
|
64
69
|
describe '#post' do
|
65
70
|
let(:attributes) do
|
66
|
-
CONFIG.
|
71
|
+
CONFIG.asset_attributes.merge(
|
67
72
|
links: [
|
68
73
|
{
|
69
74
|
'@type' => 'Link',
|
70
75
|
'rel' => 'contributionDefinition',
|
71
|
-
'uri' => "#{CONFIG.url}/contributionDefinitions/#{
|
76
|
+
'uri' => "#{CONFIG.url}/contributionDefinitions/#{contribution_definition_id}"
|
72
77
|
}
|
73
78
|
]
|
74
79
|
)
|
@@ -99,7 +104,7 @@ describe 'MyJohnDeereApi::Client' do
|
|
99
104
|
let(:new_title) { 'i REALLY like turtles!' }
|
100
105
|
|
101
106
|
let(:attributes) do
|
102
|
-
CONFIG.
|
107
|
+
CONFIG.asset_attributes.slice(
|
103
108
|
:asset_category, :asset_type, :asset_sub_type, :links
|
104
109
|
).merge(
|
105
110
|
title: new_title,
|
@@ -107,7 +112,7 @@ describe 'MyJohnDeereApi::Client' do
|
|
107
112
|
{
|
108
113
|
'@type' => 'Link',
|
109
114
|
'rel' => 'contributionDefinition',
|
110
|
-
'uri' => "#{CONFIG.url}/contributionDefinitions/#{
|
115
|
+
'uri' => "#{CONFIG.url}/contributionDefinitions/#{contribution_definition_id}"
|
111
116
|
}
|
112
117
|
]
|
113
118
|
)
|
@@ -43,7 +43,7 @@ describe 'MyJohnDeereApi::Request::Collection::Assets' do
|
|
43
43
|
|
44
44
|
describe '#create(attributes)' do
|
45
45
|
it 'creates a new asset with the given attributes' do
|
46
|
-
attributes = CONFIG.
|
46
|
+
attributes = CONFIG.asset_attributes
|
47
47
|
object = VCR.use_cassette('post_assets') { collection.create(attributes) }
|
48
48
|
|
49
49
|
assert_kind_of JD::Model::Asset, object
|
@@ -7,9 +7,8 @@ describe 'MyJohnDeereApi::Request::Create::Asset' do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
let(:valid_attributes) do
|
10
|
-
CONFIG.
|
10
|
+
CONFIG.asset_attributes.merge(
|
11
11
|
organization_id: organization_id,
|
12
|
-
contribution_definition_id: contribution_definition_id,
|
13
12
|
)
|
14
13
|
end
|
15
14
|
|
@@ -41,13 +40,6 @@ describe 'MyJohnDeereApi::Request::Create::Asset' do
|
|
41
40
|
assert_equal 'is required', object.errors[:organization_id]
|
42
41
|
end
|
43
42
|
|
44
|
-
it 'requires contribution_definition_id' do
|
45
|
-
object = klass.new(client, attributes_without(:contribution_definition_id))
|
46
|
-
|
47
|
-
refute object.valid?
|
48
|
-
assert_equal 'is required', object.errors[:contribution_definition_id]
|
49
|
-
end
|
50
|
-
|
51
43
|
it 'requires title' do
|
52
44
|
object = klass.new(client, attributes_without(:title))
|
53
45
|
|
@@ -137,7 +129,6 @@ describe 'MyJohnDeereApi::Request::Create::Asset' do
|
|
137
129
|
it 'properly forms the request body' do
|
138
130
|
object = klass.new(client, attributes)
|
139
131
|
body = object.send(:request_body)
|
140
|
-
|
141
132
|
assert_equal attributes[:title], body[:title]
|
142
133
|
assert_equal attributes[:asset_category], body[:assetCategory]
|
143
134
|
assert_equal attributes[:asset_type], body[:assetType]
|
@@ -18,7 +18,6 @@ describe 'MyJohnDeereApi::Validators::Asset' do
|
|
18
18
|
let(:valid_attributes) do
|
19
19
|
{
|
20
20
|
organization_id: '000000',
|
21
|
-
contribution_definition_id: '00000000-0000-0000-0000-000000000000',
|
22
21
|
title: "Bob's Stuff"
|
23
22
|
}
|
24
23
|
end
|
@@ -32,7 +31,7 @@ describe 'MyJohnDeereApi::Validators::Asset' do
|
|
32
31
|
end
|
33
32
|
|
34
33
|
it 'requires several attributes' do
|
35
|
-
[:organization_id, :
|
34
|
+
[:organization_id, :title].each do |attr|
|
36
35
|
object = klass.new(valid_attributes.merge(attr => nil))
|
37
36
|
|
38
37
|
refute object.valid?
|
data/test/support/vcr_setup.rb
CHANGED
@@ -87,7 +87,13 @@ class VcrSetup
|
|
87
87
|
|
88
88
|
# provide a client with sanitized credentials
|
89
89
|
def client
|
90
|
-
JD::Client.new(
|
90
|
+
JD::Client.new(
|
91
|
+
api_key,
|
92
|
+
api_secret,
|
93
|
+
contribution_definition_id: contribution_definition_id,
|
94
|
+
environment: :sandbox,
|
95
|
+
access: [access_token, access_secret]
|
96
|
+
)
|
91
97
|
end
|
92
98
|
|
93
99
|
def timestamp
|
@@ -138,17 +144,6 @@ class VcrSetup
|
|
138
144
|
|
139
145
|
def asset_attributes
|
140
146
|
@asset_attributes ||= {
|
141
|
-
contribution_definition_id: ENV['CONTRIBUTION_DEFINITION_ID'],
|
142
|
-
title: 'Asset Title',
|
143
|
-
asset_category: 'DEVICE',
|
144
|
-
asset_type: 'SENSOR',
|
145
|
-
asset_sub_type: 'ENVIRONMENTAL'
|
146
|
-
}.freeze
|
147
|
-
end
|
148
|
-
|
149
|
-
def sanitized_asset_attributes
|
150
|
-
@sanitized_asset_attributes ||= {
|
151
|
-
contribution_definition_id: contribution_definition_id,
|
152
147
|
title: 'Asset Title',
|
153
148
|
asset_category: 'DEVICE',
|
154
149
|
asset_type: 'SENSOR',
|
@@ -195,6 +190,7 @@ class VcrSetup
|
|
195
190
|
ENV['API_KEY'],
|
196
191
|
ENV['API_SECRET'],
|
197
192
|
environment: :sandbox,
|
193
|
+
contribution_definition_id: ENV['CONTRIBUTION_DEFINITION_ID'],
|
198
194
|
access: [ENV['ACCESS_TOKEN'], ENV['ACCESS_SECRET']]
|
199
195
|
)
|
200
196
|
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:
|
4
|
+
version: 2.0.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-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: vcr
|