my_john_deere_api 0.12.4 → 0.12.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/my_john_deere_api/client.rb +10 -3
  3. data/lib/my_john_deere_api/model/contribution_product.rb +24 -0
  4. data/lib/my_john_deere_api/model/field.rb +1 -1
  5. data/lib/my_john_deere_api/model/organization.rb +1 -1
  6. data/lib/my_john_deere_api/model.rb +1 -0
  7. data/lib/my_john_deere_api/request/collection/asset_locations.rb +2 -2
  8. data/lib/my_john_deere_api/request/collection/assets.rb +2 -2
  9. data/lib/my_john_deere_api/request/collection/contribution_products.rb +26 -0
  10. data/lib/my_john_deere_api/request/collection.rb +1 -0
  11. data/lib/my_john_deere_api/request/individual/contribution_product.rb +19 -0
  12. data/lib/my_john_deere_api/request/individual.rb +3 -2
  13. data/lib/my_john_deere_api/version.rb +1 -1
  14. data/test/lib/my_john_deere_api/authorize_test.rb +6 -6
  15. data/test/lib/my_john_deere_api/client_test.rb +31 -70
  16. data/test/lib/my_john_deere_api/consumer_test.rb +14 -14
  17. data/test/lib/my_john_deere_api/model/asset_location_test.rb +8 -23
  18. data/test/lib/my_john_deere_api/model/asset_test.rb +6 -9
  19. data/test/lib/my_john_deere_api/model/base_test.rb +3 -4
  20. data/test/lib/my_john_deere_api/model/contribution_product_test.rb +68 -0
  21. data/test/lib/my_john_deere_api/model/field_test.rb +8 -11
  22. data/test/lib/my_john_deere_api/model/flag_test.rb +1 -1
  23. data/test/lib/my_john_deere_api/model/organization_test.rb +19 -22
  24. data/test/lib/my_john_deere_api/model_test.rb +4 -0
  25. data/test/lib/my_john_deere_api/request/collection/asset_locations_test.rb +9 -48
  26. data/test/lib/my_john_deere_api/request/collection/assets_test.rb +9 -31
  27. data/test/lib/my_john_deere_api/request/collection/base_test.rb +2 -5
  28. data/test/lib/my_john_deere_api/request/collection/contribution_products_test.rb +88 -0
  29. data/test/lib/my_john_deere_api/request/collection/fields_test.rb +4 -12
  30. data/test/lib/my_john_deere_api/request/collection/flags_test.rb +5 -19
  31. data/test/lib/my_john_deere_api/request/collection/organizations_test.rb +2 -4
  32. data/test/lib/my_john_deere_api/request/collection_test.rb +4 -0
  33. data/test/lib/my_john_deere_api/request/create/asset_location_test.rb +20 -50
  34. data/test/lib/my_john_deere_api/request/create/asset_test.rb +10 -24
  35. data/test/lib/my_john_deere_api/request/create/base_test.rb +0 -2
  36. data/test/lib/my_john_deere_api/request/individual/asset_test.rb +0 -3
  37. data/test/lib/my_john_deere_api/request/individual/base_test.rb +0 -3
  38. data/test/lib/my_john_deere_api/request/individual/contribution_product_test.rb +32 -0
  39. data/test/lib/my_john_deere_api/request/individual_test.rb +4 -0
  40. data/test/support/helper.rb +56 -5
  41. data/test/support/vcr/catalog.yml +51 -7
  42. data/test/support/vcr/delete_asset.yml +51 -10
  43. data/test/support/vcr/get_access_token.yml +8 -8
  44. data/test/support/vcr/get_asset.yml +107 -10
  45. data/test/support/vcr/get_asset_locations.yml +154 -17
  46. data/test/support/vcr/get_assets.yml +110 -10
  47. data/test/support/vcr/get_contribution_product.yml +91 -0
  48. data/test/support/vcr/get_contribution_products.yml +91 -0
  49. data/test/support/vcr/get_fields.yml +108 -11
  50. data/test/support/vcr/get_flags.yml +11 -11
  51. data/test/support/vcr/get_organization.yml +90 -0
  52. data/test/support/vcr/get_organizations.yml +73 -30
  53. data/test/support/vcr/get_request_token.yml +14 -14
  54. data/test/support/vcr/post_asset_locations.yml +165 -20
  55. data/test/support/vcr/post_assets.yml +119 -22
  56. data/test/support/vcr/{app_consumer.yml → url.yml} +7 -7
  57. data/test/support/vcr/warning.txt +24 -0
  58. data/test/support/vcr_setup.rb +420 -0
  59. metadata +14 -4
  60. data/test/support/vcr/post_flag_categories.yml +0 -49
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 272b78cd5d3c194ea5ca6362a9a8f64b1d5be22b4ec79968c4575d7be5497699
4
- data.tar.gz: 7b77df8259ab5c41696339835f4c3cdcea26ebf6e0473936f18348a14ca675d1
3
+ metadata.gz: d79f9ae5d1b5b960422791626144c4ef7f5d812668c6b55ac0c08ee75c06ddc3
4
+ data.tar.gz: ac5d0b960dfd945dcf4c6a7f70824db56f6592acdf760fd43663b7b9d6506a1a
5
5
  SHA512:
6
- metadata.gz: 8b4b8aef5761dff7936fe113a44af60b53182e28c907b07bd37444ede8461ea9439ccd53c39b7e9ad177ff2723069d475fc7964f6343f8004fd75ba3d159c7f8
7
- data.tar.gz: 937e79548f856c03aac06bed21986590ff24cda529284d43763ae5b1784926b614476d53a10ebe85b0cdec8abce63bc1506f038017919144cce985a026001fb3
6
+ metadata.gz: 758d942d65896071bc7ac6340f83731faa02b53d9d96d56881d1adb0c3b5bc24dd1a613dd1d162a4be07bfcde8b99be3ec2375b476b958472e674bdaed4e6711
7
+ data.tar.gz: a21fa3beac2fe3cce6bbb7e33f7eda267fe6bd6f89a4a9e4f235b4106724d2efe73fddb46b9b6b9c1d84983db054bedc19a26b62ca8ec0a69be0abdf43fd71d2
@@ -55,7 +55,7 @@ module MyJohnDeereApi
55
55
  if response.body.size > 0
56
56
  JSON.parse(response.body)
57
57
  else
58
- {}
58
+ response
59
59
  end
60
60
  end
61
61
 
@@ -70,7 +70,7 @@ module MyJohnDeereApi
70
70
  if response.body && response.body.size > 0
71
71
  JSON.parse(response.body)
72
72
  else
73
- {}
73
+ response
74
74
  end
75
75
  end
76
76
 
@@ -79,7 +79,14 @@ module MyJohnDeereApi
79
79
 
80
80
  def organizations
81
81
  return @organizations if defined?(@organizations)
82
- @organizations = MyJohnDeereApi::Request::Collection::Organizations.new(accessor).all
82
+ @organizations = MyJohnDeereApi::Request::Collection::Organizations.new(accessor)
83
+ end
84
+
85
+ ##
86
+ # contribution products associated with this app (not user-specific)
87
+
88
+ def contribution_products
89
+ []
83
90
  end
84
91
 
85
92
  private
@@ -0,0 +1,24 @@
1
+ module MyJohnDeereApi
2
+ class Model::ContributionProduct < Model::Base
3
+ attr_reader :market_place_name, :market_place_description, :default_locale,
4
+ :current_status, :activation_callback, :preview_images,
5
+ :supported_regions, :supported_operation_centers
6
+
7
+ private
8
+
9
+ def map_attributes(record)
10
+ @market_place_name = record['marketPlaceName']
11
+ @market_place_description = record['marketPlaceDescription']
12
+ @default_locale = record['defaultLocale']
13
+ @current_status = record['currentStatus']
14
+ @activation_callback = record['activationCallback']
15
+ @preview_images = record['previewImages']
16
+ @supported_regions = record['supportedRegions']
17
+ @supported_operation_centers = record['supportedOperationCenters']
18
+ end
19
+
20
+ def expected_record_type
21
+ 'ContributionProduct'
22
+ end
23
+ end
24
+ end
@@ -17,7 +17,7 @@ module MyJohnDeereApi
17
17
  raise AccessTokenError unless accessor
18
18
 
19
19
  return @flags if defined?(@flags)
20
- @flags = Request::Collection::Flags.new(accessor, organization: organization_id, field: id).all
20
+ @flags = Request::Collection::Flags.new(accessor, organization: organization_id, field: id)
21
21
  end
22
22
 
23
23
  private
@@ -19,7 +19,7 @@ module MyJohnDeereApi
19
19
  raise AccessTokenError unless accessor
20
20
 
21
21
  return @fields if defined?(@fields)
22
- @fields = MyJohnDeereApi::Request::Collection::Fields.new(accessor, organization: id).all
22
+ @fields = MyJohnDeereApi::Request::Collection::Fields.new(accessor, organization: id)
23
23
  end
24
24
 
25
25
  ##
@@ -2,6 +2,7 @@ module MyJohnDeereApi::Model
2
2
  autoload :Base, 'my_john_deere_api/model/base'
3
3
  autoload :Asset, 'my_john_deere_api/model/asset'
4
4
  autoload :AssetLocation, 'my_john_deere_api/model/asset_location'
5
+ autoload :ContributionProduct, 'my_john_deere_api/model/contribution_product'
5
6
  autoload :Organization, 'my_john_deere_api/model/organization'
6
7
  autoload :Field, 'my_john_deere_api/model/field'
7
8
  autoload :Flag, 'my_john_deere_api/model/flag'
@@ -20,8 +20,8 @@ module MyJohnDeereApi::Request
20
20
  # Create a new asset location
21
21
 
22
22
  def create(attributes)
23
- attributes.merge!(asset_id: associations[:asset])
24
- Create::AssetLocation.new(accessor, attributes).object
23
+ merged_attributes = attributes.merge(asset_id: associations[:asset])
24
+ Create::AssetLocation.new(accessor, merged_attributes).object
25
25
  end
26
26
  end
27
27
  end
@@ -20,8 +20,8 @@ module MyJohnDeereApi::Request
20
20
  # Create a new asset
21
21
 
22
22
  def create(attributes)
23
- attributes.merge!(organization_id: associations[:organization])
24
- Create::Asset.new(accessor, attributes).object
23
+ merged_attributes = attributes.merge(organization_id: associations[:organization])
24
+ Create::Asset.new(accessor, merged_attributes).object
25
25
  end
26
26
 
27
27
  ##
@@ -0,0 +1,26 @@
1
+ require 'json'
2
+
3
+ module MyJohnDeereApi::Request
4
+ class Collection::ContributionProducts < Collection::Base
5
+ ##
6
+ # The resource path for the first page in the collection
7
+
8
+ def resource
9
+ "/contributionProducts?clientControlled=true"
10
+ end
11
+
12
+ ##
13
+ # This is the class used to model the data
14
+
15
+ def model
16
+ MyJohnDeereApi::Model::ContributionProduct
17
+ end
18
+
19
+ ##
20
+ # Retrieve an item from JD
21
+
22
+ def find(item_id)
23
+ Individual::ContributionProduct.new(accessor, item_id).object
24
+ end
25
+ end
26
+ end
@@ -2,6 +2,7 @@ module MyJohnDeereApi::Request::Collection
2
2
  autoload :Base, 'my_john_deere_api/request/collection/base'
3
3
  autoload :Assets, 'my_john_deere_api/request/collection/assets'
4
4
  autoload :AssetLocations, 'my_john_deere_api/request/collection/asset_locations'
5
+ autoload :ContributionProducts, 'my_john_deere_api/request/collection/contribution_products'
5
6
  autoload :Organizations, 'my_john_deere_api/request/collection/organizations'
6
7
  autoload :Fields, 'my_john_deere_api/request/collection/fields'
7
8
  autoload :Flags, 'my_john_deere_api/request/collection/flags'
@@ -0,0 +1,19 @@
1
+ require 'json'
2
+
3
+ module MyJohnDeereApi::Request
4
+ class Individual::ContributionProduct < Individual::Base
5
+ ##
6
+ # The resource path for the first page in the collection
7
+
8
+ def resource
9
+ "/contributionProducts/#{id}"
10
+ end
11
+
12
+ ##
13
+ # This is the class used to model the data
14
+
15
+ def model
16
+ MyJohnDeereApi::Model::ContributionProduct
17
+ end
18
+ end
19
+ end
@@ -1,4 +1,5 @@
1
1
  module MyJohnDeereApi::Request::Individual
2
- autoload :Base, 'my_john_deere_api/request/individual/base'
3
- autoload :Asset, 'my_john_deere_api/request/individual/asset'
2
+ autoload :Base, 'my_john_deere_api/request/individual/base'
3
+ autoload :Asset, 'my_john_deere_api/request/individual/asset'
4
+ autoload :ContributionProduct, 'my_john_deere_api/request/individual/contribution_product'
4
5
  end
@@ -1,3 +1,3 @@
1
1
  module MyJohnDeereApi
2
- VERSION='0.12.4'
2
+ VERSION='0.12.6'
3
3
  end
@@ -7,7 +7,7 @@ def contains_parameters?(uri)
7
7
  end
8
8
 
9
9
  def create_authorize
10
- VCR.use_cassette('catalog'){ JD::Authorize.new(API_KEY, API_SECRET, environment: :sandbox) }
10
+ VCR.use_cassette('catalog'){ JD::Authorize.new(api_key, api_secret, environment: :sandbox) }
11
11
  end
12
12
 
13
13
  def fancy_url
@@ -17,16 +17,16 @@ end
17
17
  describe 'MyJohnDeereApi::Authorize' do
18
18
  describe 'initialization' do
19
19
  it 'sets the api key/secret' do
20
- authorize = VCR.use_cassette('catalog') { JD::Authorize.new(API_KEY, API_SECRET) }
20
+ authorize = VCR.use_cassette('catalog') { JD::Authorize.new(api_key, api_secret) }
21
21
 
22
- assert_equal API_KEY, authorize.api_key
23
- assert_equal API_SECRET, authorize.api_secret
22
+ assert_equal api_key, authorize.api_key
23
+ assert_equal api_secret, authorize.api_secret
24
24
  end
25
25
 
26
26
  it 'accepts the environment' do
27
27
  environment = :sandbox
28
28
 
29
- authorize = VCR.use_cassette('catalog') { JD::Authorize.new(API_KEY, API_SECRET, environment: environment) }
29
+ authorize = VCR.use_cassette('catalog') { JD::Authorize.new(api_key, api_secret, environment: environment) }
30
30
  assert_equal environment, authorize.environment
31
31
  end
32
32
  end
@@ -46,7 +46,7 @@ describe 'MyJohnDeereApi::Authorize' do
46
46
  authorize = create_authorize
47
47
 
48
48
  url = VCR.use_cassette('get_request_token') { authorize.authorize_url }
49
- links = VCR.use_cassette('catalog') { JD::Consumer.new(API_KEY, API_SECRET, environment: :sandbox).send(:links) }
49
+ links = VCR.use_cassette('catalog') { JD::Consumer.new(api_key, api_secret, environment: :sandbox).send(:links) }
50
50
 
51
51
  assert_includes url, "#{links[:authorize_request_token]}"
52
52
 
@@ -3,17 +3,17 @@ require 'support/helper'
3
3
  describe 'MyJohnDeereApi::Client' do
4
4
  describe '#initialize(api_key, api_secret)' do
5
5
  it 'sets the api key/secret' do
6
- client = JD::Client.new(API_KEY, API_SECRET)
6
+ client = JD::Client.new(api_key, api_secret)
7
7
 
8
- assert_equal API_KEY, client.api_key
9
- assert_equal API_SECRET, client.api_secret
8
+ assert_equal api_key, client.api_key
9
+ assert_equal api_secret, client.api_secret
10
10
  end
11
11
 
12
12
  it 'accepts access token/secret' do
13
13
  access_token = 'token'
14
14
  access_secret = 'secret'
15
15
 
16
- client = JD::Client.new(API_KEY, API_SECRET, access: [access_token, access_secret])
16
+ client = JD::Client.new(api_key, api_secret, access: [access_token, access_secret])
17
17
 
18
18
  assert_equal access_token, client.access_token
19
19
  assert_equal access_secret, client.access_secret
@@ -22,14 +22,13 @@ describe 'MyJohnDeereApi::Client' do
22
22
  it 'accepts the environment' do
23
23
  environment = :sandbox
24
24
 
25
- client = JD::Client.new(API_KEY, API_SECRET, environment: environment)
25
+ client = JD::Client.new(api_key, api_secret, environment: environment)
26
26
  assert_equal environment, client.environment
27
27
  end
28
28
  end
29
29
 
30
30
  describe '#get' do
31
31
  it 'returns the response as a Hash' do
32
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
33
32
  VCR.use_cassette('catalog') { client.send(:accessor) }
34
33
  response = VCR.use_cassette('get_organizations') { client.get('/organizations') }
35
34
 
@@ -40,7 +39,6 @@ describe 'MyJohnDeereApi::Client' do
40
39
  end
41
40
 
42
41
  it 'prepends the leading slash if needed' do
43
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
44
42
  VCR.use_cassette('catalog') { client.send(:accessor) }
45
43
  response = VCR.use_cassette('get_organizations') { client.get('organizations') }
46
44
 
@@ -51,7 +49,6 @@ describe 'MyJohnDeereApi::Client' do
51
49
  end
52
50
 
53
51
  it 'allows symbols for simple resources' do
54
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
55
52
  VCR.use_cassette('catalog') { client.send(:accessor) }
56
53
  response = VCR.use_cassette('get_organizations') { client.get(:organizations) }
57
54
 
@@ -63,83 +60,50 @@ describe 'MyJohnDeereApi::Client' do
63
60
  end
64
61
 
65
62
  describe '#post' do
66
- let(:client) { JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET]) }
67
-
68
- let(:body) do
69
- {
70
- "@type": "FlagCategory",
71
- "categoryTitle": "Mountain Dew",
72
- "sourceNode": "7ba95d7a-f798-46d0-9bf9-c39c31bcf984",
73
- "links": [
74
- {
75
- "rel": "contributionDefinition",
76
- "uri": "https://sandboxapi.deere.com/platform/contributionDefinitions/#{ENV['CONTRIBUTION_DEFINITION_ID']}"
77
- }
78
- ],
79
- "preferred": true
80
- }
81
- end
82
-
83
63
  it 'returns the response as a Hash' do
84
- VCR.use_cassette('catalog') { client.send(:accessor) }
85
-
86
- response = VCR.use_cassette('post_flag_categories') { client.post("/organizations/#{ENV['ORGANIZATION_ID']}/flagCategories", body) }
64
+ response = VCR.use_cassette('post_assets') do
65
+ client.post("/organizations/#{organization_id}/assets", CONFIG.asset_attributes)
66
+ end
87
67
 
88
- assert_equal Hash.new, response
68
+ assert_equal '201', response.code
69
+ assert_equal 'Created', response.message
70
+ assert_includes response['Location'], "/assets/#{asset_id}"
89
71
  end
90
72
 
91
73
  it 'prepends the leading slash if needed' do
92
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
93
- VCR.use_cassette('catalog') { client.send(:accessor) }
94
- response = VCR.use_cassette('get_organizations') { client.get('organizations') }
95
-
96
- assert_kind_of Hash, response
97
- assert_kind_of Integer, response['total']
98
- assert response['values'].all?{|value| value['@type'] == 'Organization'}
99
- assert response['values'].all?{|value| value.has_key?('links')}
100
- end
101
-
102
- it 'allows symbols for simple resources' do
103
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
104
- VCR.use_cassette('catalog') { client.send(:accessor) }
105
- response = VCR.use_cassette('get_organizations') { client.get(:organizations) }
74
+ response = VCR.use_cassette('post_assets') do
75
+ client.post("organizations/#{organization_id}/assets", CONFIG.asset_attributes)
76
+ end
106
77
 
107
- assert_kind_of Hash, response
108
- assert_kind_of Integer, response['total']
109
- assert response['values'].all?{|value| value['@type'] == 'Organization'}
110
- assert response['values'].all?{|value| value.has_key?('links')}
78
+ assert_equal '201', response.code
79
+ assert_equal 'Created', response.message
80
+ assert_includes response['Location'], "/assets/#{asset_id}"
111
81
  end
112
82
  end
113
83
 
114
84
  describe '#delete' do
115
85
  it 'sends the request' do
116
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
117
- VCR.use_cassette('catalog') { client.send(:accessor) }
118
- response = VCR.use_cassette('delete_asset') { client.delete("/assets/123") }
86
+ response = VCR.use_cassette('delete_asset') { client.delete("/assets/#{asset_id}") }
119
87
 
120
- assert_kind_of Hash, response
88
+ assert_equal '204', response.code
89
+ assert_equal 'No Content', response.message
121
90
  end
122
91
 
123
92
  it 'prepends the leading slash if needed' do
124
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
125
- VCR.use_cassette('catalog') { client.send(:accessor) }
126
- response = VCR.use_cassette('get_organizations') { client.get('organizations') }
93
+ response = VCR.use_cassette('delete_asset') { client.delete("assets/#{asset_id}") }
127
94
 
128
- assert_kind_of Hash, response
95
+ assert_equal '204', response.code
96
+ assert_equal 'No Content', response.message
129
97
  end
130
98
  end
131
99
 
132
100
  describe '#organizations' do
133
101
  it 'returns a collection of organizations for this account' do
134
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
135
- VCR.use_cassette('catalog') { client.send(:accessor) }
136
-
137
- # force full loading of organizations
138
- VCR.use_cassette('get_organizations') { client.organizations }
102
+ organizations = VCR.use_cassette('get_organizations') { client.organizations.all; client.organizations }
139
103
 
140
- assert_kind_of Array, client.organizations
104
+ assert_kind_of JD::Request::Collection::Organizations, organizations
141
105
 
142
- client.organizations.each do |organization|
106
+ organizations.each do |organization|
143
107
  assert_kind_of JD::Model::Organization, organization
144
108
  end
145
109
  end
@@ -149,25 +113,22 @@ describe 'MyJohnDeereApi::Client' do
149
113
  it 'receives the api key/secret and environment of the client' do
150
114
  environment = :sandbox
151
115
 
152
- client = JD::Client.new(API_KEY, API_SECRET, environment: environment)
116
+ client = JD::Client.new(api_key, api_secret, environment: environment)
153
117
  consumer = client.send :consumer
154
118
 
155
119
  assert_kind_of JD::Consumer, consumer
156
- assert_equal API_KEY, consumer.api_key
157
- assert_equal API_SECRET, consumer.api_secret
120
+ assert_equal api_key, consumer.api_key
121
+ assert_equal api_secret, consumer.api_secret
158
122
  assert_equal environment, consumer.environment
159
123
  end
160
124
  end
161
125
 
162
126
  describe '#accessor' do
163
127
  it 'returns an object that can make user-specific requests' do
164
- client = JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET])
165
- accessor = VCR.use_cassette('catalog') { client.send :accessor }
166
-
167
128
  assert_kind_of OAuth::AccessToken, accessor
168
129
  assert_kind_of OAuth::Consumer, accessor.consumer
169
- assert_equal ACCESS_TOKEN, accessor.token
170
- assert_equal ACCESS_SECRET, accessor.secret
130
+ assert_equal access_token, accessor.token
131
+ assert_equal access_secret, accessor.secret
171
132
  end
172
133
  end
173
134
  end
@@ -3,15 +3,15 @@ require 'support/helper'
3
3
  describe 'JD::Consumer' do
4
4
  describe '#initialize' do
5
5
  it 'requires an api key and secret' do
6
- consumer = JD::Consumer.new(API_KEY, API_SECRET)
6
+ consumer = JD::Consumer.new(api_key, api_secret)
7
7
 
8
- assert_equal API_KEY, consumer.api_key
9
- assert_equal API_SECRET, consumer.api_secret
8
+ assert_equal api_key, consumer.api_key
9
+ assert_equal api_secret, consumer.api_secret
10
10
  end
11
11
 
12
12
  it 'accepts the environment' do
13
13
  environment = :sandbox
14
- consumer = JD::Consumer.new(API_KEY, API_SECRET, environment: environment)
14
+ consumer = JD::Consumer.new(api_key, api_secret, environment: environment)
15
15
 
16
16
  assert_equal environment, consumer.environment
17
17
  assert_equal JD::Consumer::URLS[environment], consumer.base_url
@@ -19,14 +19,14 @@ describe 'JD::Consumer' do
19
19
 
20
20
  it 'accepts an arbitrary base_url' do
21
21
  base_url = 'https://example.com'
22
- consumer = JD::Consumer.new(API_KEY, API_SECRET, base_url: base_url)
22
+ consumer = JD::Consumer.new(api_key, api_secret, base_url: base_url)
23
23
 
24
24
  assert_equal base_url, consumer.base_url
25
25
  end
26
26
 
27
27
  it 'uses specified base_url regardless of specified environment' do
28
28
  base_url = 'https://example.com'
29
- consumer = JD::Consumer.new(API_KEY, API_SECRET, base_url: base_url, environment: :sandbox)
29
+ consumer = JD::Consumer.new(api_key, api_secret, base_url: base_url, environment: :sandbox)
30
30
 
31
31
  assert_equal base_url, consumer.base_url
32
32
  end
@@ -34,24 +34,24 @@ describe 'JD::Consumer' do
34
34
 
35
35
  describe '#app_get' do
36
36
  it 'creates a working oAuth consumer for non-user-specific GET requests' do
37
- consumer = JD::Consumer.new(API_KEY, API_SECRET, environment: :sandbox)
38
- app_get = VCR.use_cassette('app_consumer') { consumer.app_get }
37
+ consumer = JD::Consumer.new(api_key, api_secret, environment: :sandbox)
38
+ app_get = VCR.use_cassette('catalog') { consumer.app_get }
39
39
 
40
40
  assert_kind_of OAuth::Consumer, app_get
41
- assert_equal API_KEY, app_get.key
42
- assert_equal API_SECRET, app_get.secret
41
+ assert_equal api_key, app_get.key
42
+ assert_equal api_secret, app_get.secret
43
43
  assert_equal JD::Consumer::URLS[:sandbox], app_get.site
44
44
  end
45
45
  end
46
46
 
47
47
  describe '#user_get' do
48
48
  it 'creates a working oAuth consumer for user-specific GET requests' do
49
- consumer = JD::Consumer.new(API_KEY, API_SECRET, environment: :sandbox)
50
- user_get = VCR.use_cassette('app_consumer') { consumer.user_get }
49
+ consumer = JD::Consumer.new(api_key, api_secret, environment: :sandbox)
50
+ user_get = VCR.use_cassette('catalog') { consumer.user_get }
51
51
 
52
52
  assert_kind_of OAuth::Consumer, user_get
53
- assert_equal API_KEY, user_get.key
54
- assert_equal API_SECRET, user_get.secret
53
+ assert_equal api_key, user_get.key
54
+ assert_equal api_secret, user_get.secret
55
55
  assert_equal "#{JD::Consumer::URLS[:sandbox]}/platform", user_get.site
56
56
  end
57
57
  end
@@ -4,29 +4,14 @@ require 'json'
4
4
  describe 'MyJohnDeereApi::Model::AssetLocation' do
5
5
  let(:record) do
6
6
  {
7
- "@type"=>"ContributedAssetLocation",
8
- "timestamp"=>"2017-09-20T21:30:59.000Z",
9
- "geometry"=>"{\"type\": \"Feature\",\"geometry\": {\"geometries\": [{\"coordinates\": [ -103.115633, 41.670166],\"type\": \"Point\"}],\"type\": \"GeometryCollection\"}}",
10
- "measurementData"=>[
11
- {
12
- "@type"=>"BasicMeasurement",
13
- "name"=>"[1 Foot](https://app.realmfive.com/map?device=0x0080CDEF)",
14
- "value"=>"82",
15
- "unit"=>"cB"
16
- }, {
17
- "@type"=>"BasicMeasurement",
18
- "name"=>"[2 Feet](https://app.realmfive.com/map?device=0x0080CDEF)",
19
- "value"=>"31",
20
- "unit"=>"cB"
21
- }
22
- ],
23
- "links"=>[]
7
+ '@type' => 'ContributedAssetLocation',
8
+ 'timestamp' => CONFIG.timestamp,
9
+ 'geometry' => CONFIG.geometry.to_json,
10
+ 'measurementData' => CONFIG.measurement_data,
11
+ 'links' => []
24
12
  }
25
13
  end
26
14
 
27
- let(:client) { JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET]) }
28
- let(:accessor) { VCR.use_cassette('catalog') { client.send(:accessor) } }
29
-
30
15
  describe '#initialize' do
31
16
  def link_for label
32
17
  record['links'].detect{|link| link['rel'] == label}['uri'].gsub('https://sandboxapi.deere.com/platform', '')
@@ -48,10 +33,10 @@ describe 'MyJohnDeereApi::Model::AssetLocation' do
48
33
  end
49
34
 
50
35
  it 'accepts an optional accessor' do
51
- accessor = 'mock-accessor'
36
+ mock_accessor = 'mock-accessor'
52
37
 
53
- location = JD::Model::AssetLocation.new(record, accessor)
54
- assert_equal accessor, location.accessor
38
+ location = JD::Model::AssetLocation.new(record, mock_accessor)
39
+ assert_equal mock_accessor, location.accessor
55
40
  end
56
41
  end
57
42
  end
@@ -11,16 +11,13 @@ describe 'MyJohnDeereApi::Model::Asset' do
11
11
  "id"=>"123456",
12
12
  "lastModifiedDate"=>"2018-01-31T20:36:16.727Z",
13
13
  "links"=>[
14
- {"@type"=>"Link", "rel"=>"self", "uri"=>"https://sandboxapi.deere.com/platform/assets/123456"},
15
- {"@type"=>"Link", "rel"=>"organization", "uri"=>"https://sandboxapi.deere.com/platform/organizations/234567"},
16
- {"@type"=>"Link", "rel"=>"locations", "uri"=>"https://sandboxapi.deere.com/platform/assets/123456/locations"},
14
+ {"@type"=>"Link", "rel"=>"self", "uri"=>"https://sandboxapi.deere.com/platform/assets/#{asset_id}"},
15
+ {"@type"=>"Link", "rel"=>"organization", "uri"=>"https://sandboxapi.deere.com/platform/organizations/#{organization_id}"},
16
+ {"@type"=>"Link", "rel"=>"locations", "uri"=>"https://sandboxapi.deere.com/platform/assets/#{asset_id}/locations"},
17
17
  ]
18
18
  }
19
19
  end
20
20
 
21
- let(:client) { JD::Client.new(API_KEY, API_SECRET, environment: :sandbox, access: [ACCESS_TOKEN, ACCESS_SECRET]) }
22
- let(:accessor) { VCR.use_cassette('catalog') { client.send(:accessor) } }
23
-
24
21
  describe '#initialize' do
25
22
  def link_for label
26
23
  record['links'].detect{|link| link['rel'] == label}['uri'].gsub('https://sandboxapi.deere.com/platform', '')
@@ -48,10 +45,10 @@ describe 'MyJohnDeereApi::Model::Asset' do
48
45
  end
49
46
 
50
47
  it 'accepts an optional accessor' do
51
- accessor = 'mock-accessor'
48
+ mock_accessor = 'mock-accessor'
52
49
 
53
- asset = JD::Model::Asset.new(record, accessor)
54
- assert_equal accessor, asset.accessor
50
+ asset = JD::Model::Asset.new(record, mock_accessor)
51
+ assert_equal mock_accessor, asset.accessor
55
52
  end
56
53
  end
57
54
 
@@ -10,7 +10,6 @@ end
10
10
 
11
11
  describe 'MyJohnDeereApi::Model::Base' do
12
12
  let(:object) { JD::Model::Base.new(record, accessor) }
13
- let(:accessor) { 'accessor' }
14
13
 
15
14
  let(:record) do
16
15
  {
@@ -18,9 +17,9 @@ describe 'MyJohnDeereApi::Model::Base' do
18
17
  'id'=>'123',
19
18
  'somefield'=>'somevalue',
20
19
  "links"=>[
21
- {"@type"=>"Link", "rel"=>"self", "uri"=>"https://sandboxapi.deere.com/platform/assets/123456"},
22
- {"@type"=>"Link", "rel"=>"organization", "uri"=>"https://sandboxapi.deere.com/platform/organizations/234567"},
23
- {"@type"=>"Link", "rel"=>"locations", "uri"=>"https://sandboxapi.deere.com/platform/assets/123456/locations"},
20
+ {"@type"=>"Link", "rel"=>"self", "uri"=>"https://sandboxapi.deere.com/platform/assets/#{asset_id}"},
21
+ {"@type"=>"Link", "rel"=>"organization", "uri"=>"https://sandboxapi.deere.com/platform/organizations/#{organization_id}"},
22
+ {"@type"=>"Link", "rel"=>"locations", "uri"=>"https://sandboxapi.deere.com/platform/assets/#{asset_id}/locations"},
24
23
  ]
25
24
  }
26
25
  end