my_john_deere_api 1.3.3 → 1.3.4
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/lib/my_john_deere_api/request/create/asset_location.rb +2 -30
- data/lib/my_john_deere_api/validators/asset_location.rb +34 -0
- data/lib/my_john_deere_api/validators.rb +1 -0
- data/lib/my_john_deere_api/version.rb +1 -1
- data/test/lib/my_john_deere_api/validators/asset_location_test.rb +61 -0
- data/test/lib/my_john_deere_api/validators/asset_test.rb +6 -11
- data/test/lib/my_john_deere_api/validators_test.rb +4 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2295d8403dd887dfd1dad300885aebef06aa41b07f209a72d2de68b784535ea0
|
4
|
+
data.tar.gz: ceb47dd947221150f3d6826e19e343888830f85c88924b189948874aa7825888
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1183f5923dcb7932c71f9f10e6968ea332e35e332d980030637426261d0240dd4ab4c464d58cb2a511ce7f2060bdb320926dfca682808afe72cc704afafb061c
|
7
|
+
data.tar.gz: c16eb6aa03f079b1968d7eab2bde1f754e147305e66378ce7719648f930f76891f2ac51bed88391e6dd0676e4e7b4a403255851f9efb3b297239d5d46eeec1cf
|
@@ -2,6 +2,8 @@ require 'date'
|
|
2
2
|
|
3
3
|
module MyJohnDeereApi
|
4
4
|
class Request::Create::AssetLocation < Request::Create::Base
|
5
|
+
include Validators::AssetLocation
|
6
|
+
|
5
7
|
private
|
6
8
|
|
7
9
|
##
|
@@ -73,13 +75,6 @@ module MyJohnDeereApi
|
|
73
75
|
@resource ||= "/assets/#{attributes[:asset_id]}/locations"
|
74
76
|
end
|
75
77
|
|
76
|
-
##
|
77
|
-
# Required attributes for this class
|
78
|
-
|
79
|
-
def required_attributes
|
80
|
-
[:asset_id, :timestamp, :geometry, :measurement_data]
|
81
|
-
end
|
82
|
-
|
83
78
|
##
|
84
79
|
# Retrieve newly created record
|
85
80
|
|
@@ -111,28 +106,5 @@ module MyJohnDeereApi
|
|
111
106
|
def model
|
112
107
|
Model::AssetLocation
|
113
108
|
end
|
114
|
-
|
115
|
-
##
|
116
|
-
# Custom validations for this class
|
117
|
-
|
118
|
-
def validate_attributes
|
119
|
-
validate_measurement_data
|
120
|
-
end
|
121
|
-
|
122
|
-
def validate_measurement_data
|
123
|
-
unless attributes[:measurement_data].is_a?(Array)
|
124
|
-
errors[:measurement_data] ||= 'must be an array'
|
125
|
-
return
|
126
|
-
end
|
127
|
-
|
128
|
-
attributes[:measurement_data].each do |measurement|
|
129
|
-
[:name, :value, :unit].each do |attr|
|
130
|
-
unless measurement.has_key?(attr)
|
131
|
-
errors[:measurement_data] ||= "must include #{attr}"
|
132
|
-
return
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
109
|
end
|
138
110
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module MyJohnDeereApi::Validators
|
2
|
+
module AssetLocation
|
3
|
+
include Base
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def required_attributes
|
8
|
+
[:asset_id, :timestamp, :geometry, :measurement_data]
|
9
|
+
end
|
10
|
+
|
11
|
+
##
|
12
|
+
# Custom validations for this class
|
13
|
+
|
14
|
+
def validate_attributes
|
15
|
+
validate_measurement_data
|
16
|
+
end
|
17
|
+
|
18
|
+
def validate_measurement_data
|
19
|
+
unless attributes[:measurement_data].is_a?(Array)
|
20
|
+
errors[:measurement_data] ||= 'must be an array'
|
21
|
+
return
|
22
|
+
end
|
23
|
+
|
24
|
+
attributes[:measurement_data].each do |measurement|
|
25
|
+
[:name, :value, :unit].each do |attr|
|
26
|
+
unless measurement.has_key?(attr)
|
27
|
+
errors[:measurement_data] ||= "must include #{attr}"
|
28
|
+
return
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'support/helper'
|
2
|
+
|
3
|
+
class AssetLocationValidatorTest
|
4
|
+
include JD::Validators::AssetLocation
|
5
|
+
|
6
|
+
attr_reader :attributes
|
7
|
+
|
8
|
+
def initialize(attributes)
|
9
|
+
@attributes = attributes
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'MyJohnDeereApi::Validators::AssetLocation' do
|
14
|
+
let(:klass) { AssetLocationValidatorTest }
|
15
|
+
let(:object) { klass.new(attributes) }
|
16
|
+
let(:attributes) { valid_attributes }
|
17
|
+
|
18
|
+
let(:valid_attributes) do
|
19
|
+
{
|
20
|
+
asset_id: asset_id,
|
21
|
+
timestamp: CONFIG.timestamp,
|
22
|
+
coordinates: CONFIG.coordinates,
|
23
|
+
measurement_data: CONFIG.measurement_data
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'exists' do
|
28
|
+
assert JD::Validators::AssetLocation
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'inherits from MyJohnDeereApi::Validators::Base' do
|
32
|
+
[:validate!, :valid?].each{ |method_name| assert object.respond_to?(method_name) }
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'requires several attributes' do
|
36
|
+
[:asset_id, :timestamp, :geometry, :measurement_data].each do |attr|
|
37
|
+
object = klass.new(valid_attributes.merge(attr => nil))
|
38
|
+
|
39
|
+
refute object.valid?
|
40
|
+
exception = assert_raises(JD::InvalidRecordError) { object.validate! }
|
41
|
+
|
42
|
+
assert_includes exception.message, "#{attr} is required"
|
43
|
+
assert_includes object.errors[attr], 'is required'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'requires measurement_data to have the right keys' do
|
48
|
+
[:name, :value, :unit].each do |key|
|
49
|
+
attributes = Marshal.load(Marshal.dump(valid_attributes))
|
50
|
+
attributes[:measurement_data].first.delete(key)
|
51
|
+
|
52
|
+
object = klass.new(attributes)
|
53
|
+
|
54
|
+
refute object.valid?
|
55
|
+
exception = assert_raises(JD::InvalidRecordError) { object.validate! }
|
56
|
+
|
57
|
+
assert_includes exception.message, "measurement_data must include #{key}"
|
58
|
+
assert_includes object.errors[:measurement_data], "must include #{key}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -1,22 +1,17 @@
|
|
1
1
|
require 'support/helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
include JD::Validators::Asset
|
3
|
+
class AssetValidatorTest
|
4
|
+
include JD::Validators::Asset
|
6
5
|
|
7
|
-
|
6
|
+
attr_reader :attributes
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Vanilla < Base
|
8
|
+
def initialize(attributes)
|
9
|
+
@attributes = attributes
|
15
10
|
end
|
16
11
|
end
|
17
12
|
|
18
13
|
describe 'MyJohnDeereApi::Validators::Asset' do
|
19
|
-
let(:klass) { AssetValidatorTest
|
14
|
+
let(:klass) { AssetValidatorTest }
|
20
15
|
let(:object) { klass.new(attributes) }
|
21
16
|
let(:attributes) { valid_attributes }
|
22
17
|
|
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: 1.3.
|
4
|
+
version: 1.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaime Bellmyer
|
@@ -151,6 +151,7 @@ files:
|
|
151
151
|
- lib/my_john_deere_api/request/update/base.rb
|
152
152
|
- lib/my_john_deere_api/validators.rb
|
153
153
|
- lib/my_john_deere_api/validators/asset.rb
|
154
|
+
- lib/my_john_deere_api/validators/asset_location.rb
|
154
155
|
- lib/my_john_deere_api/validators/base.rb
|
155
156
|
- lib/my_john_deere_api/version.rb
|
156
157
|
- test/lib/my_john_deere_api/authorize_test.rb
|
@@ -199,6 +200,7 @@ files:
|
|
199
200
|
- test/lib/my_john_deere_api/request/update/base_test.rb
|
200
201
|
- test/lib/my_john_deere_api/request/update_test.rb
|
201
202
|
- test/lib/my_john_deere_api/request_test.rb
|
203
|
+
- test/lib/my_john_deere_api/validators/asset_location_test.rb
|
202
204
|
- test/lib/my_john_deere_api/validators/asset_test.rb
|
203
205
|
- test/lib/my_john_deere_api/validators/base_test.rb
|
204
206
|
- test/lib/my_john_deere_api/validators_test.rb
|