fieldview 0.0.1 → 0.0.2
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/Gemfile.lock +1 -1
- data/README.md +26 -2
- data/lib/fieldview/auth_token.rb +11 -3
- data/lib/fieldview/boundary.rb +0 -16
- data/lib/fieldview/feature.rb +24 -0
- data/lib/fieldview/field.rb +40 -0
- data/lib/fieldview/list_object.rb +2 -3
- data/lib/fieldview/util.rb +1 -1
- data/lib/fieldview/version.rb +1 -1
- data/lib/fieldview.rb +1 -1
- data/test/test_auth_token.rb +14 -0
- data/test/test_field.rb +72 -2
- data/test/test_list_object.rb +28 -4
- metadata +3 -5
- data/lib/fieldview/fields.rb +0 -34
- data/test/test_fields.rb +0 -70
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42ce3fc3ca592d38465e8625ab4ce76a19204ef3
|
4
|
+
data.tar.gz: 73bcdb8be3ae5e3f188f14e37233f9012536608a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79d8559523948541f50ea3e826d163875013e30b3447285f1c948eefcf32a4371ff8e77689bf1137e45fe97e62f232af9913b1b24cc972cf2071268b3b2a7f05
|
7
|
+
data.tar.gz: 90b3f2a25cfdcaed05e9cb28a53737a24e2dab9b2f93eb9db159497472bf594d6783bcc21a87a84ce18f2b9f4adaa5fd6fdb1dfbc4c1e85f3fed9ceb69bca123
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -48,7 +48,7 @@ auth_token = FieldView::AuthToken.new(refresh_token: <RTOKEN>)
|
|
48
48
|
|
49
49
|
# Then you can do something like this:
|
50
50
|
|
51
|
-
fields = FieldView::
|
51
|
+
fields = FieldView::Field.list(auth_token)
|
52
52
|
|
53
53
|
fields.each do |field|
|
54
54
|
puts field.boundary
|
@@ -58,6 +58,30 @@ fields.has_more?
|
|
58
58
|
|
59
59
|
```
|
60
60
|
|
61
|
+
## Uploading a File in Chunks
|
62
|
+
|
63
|
+
Assuming you've acquired an AuthToken, then you can do something like the following:
|
64
|
+
|
65
|
+
``` ruby
|
66
|
+
file = <PATH TO SOME FILE>
|
67
|
+
upload = FieldView::Upload.create(auth_token,
|
68
|
+
Digest::MD5.file(file).to_s, File.size(file),
|
69
|
+
<SOME FILE TYPE>)
|
70
|
+
|
71
|
+
start_bytes = 0
|
72
|
+
File.open(file, "rb") do|f|
|
73
|
+
response = nil
|
74
|
+
until f.eof?
|
75
|
+
# since it's 0 based
|
76
|
+
bytes = f.read(FieldView::Upload::REQUIRED_CHUNK_SIZE)
|
77
|
+
end_bytes = start_bytes + bytes.bytesize - 1
|
78
|
+
response = upload.upload_chunk(start_bytes, end_bytes, bytes)
|
79
|
+
puts "Uploaded #{start_bytes}-#{end_bytes}/#{File.size(file)}"
|
80
|
+
start_bytes = end_bytes + 1
|
81
|
+
end
|
82
|
+
end
|
83
|
+
```
|
84
|
+
|
61
85
|
## Development
|
62
86
|
|
63
87
|
Run all tests:
|
@@ -70,7 +94,7 @@ Run a single test suite:
|
|
70
94
|
|
71
95
|
Run a single test:
|
72
96
|
|
73
|
-
bundle exec ruby -Ilib/ test/field_view_test.rb -n /
|
97
|
+
bundle exec ruby -Ilib/ test/field_view_test.rb -n /requires_redirect_uri/
|
74
98
|
|
75
99
|
## TODOs
|
76
100
|
|
data/lib/fieldview/auth_token.rb
CHANGED
@@ -12,13 +12,21 @@ module FieldView
|
|
12
12
|
# When the access token expires we'll need to refresh,
|
13
13
|
# can be specified as part of the object, 14399 is what is being
|
14
14
|
# returned at the time of writing this (2017-04-11)
|
15
|
-
|
15
|
+
if params[:access_token_expiration_at].is_a?(String) then
|
16
|
+
self.access_token_expiration_at = Time.parse(params[:access_token_expiration_at])
|
17
|
+
else
|
18
|
+
self.access_token_expiration_at = params[:access_token_expiration_at] || (now + (params[:expires_in]||14399))
|
19
|
+
end
|
16
20
|
|
17
21
|
# Refresh token isn't required, but can be initialized with this
|
18
22
|
self.refresh_token = params[:refresh_token]
|
19
23
|
|
20
24
|
# Refresh token technically expires in 30 days
|
21
|
-
|
25
|
+
if params[:refresh_token_expiration_at].is_a?(String) then
|
26
|
+
self.refresh_token_expiration_at = Time.parse(params[:refresh_token_expiration_at])
|
27
|
+
else
|
28
|
+
self.refresh_token_expiration_at = params[:refresh_token_expiration_at] || (now + (30)*24*60*60)
|
29
|
+
end
|
22
30
|
end
|
23
31
|
|
24
32
|
def access_token_expired?
|
@@ -106,7 +114,7 @@ module FieldView
|
|
106
114
|
def self.new_auth_token_with_code_from_redirect_code(code, redirect_uri: nil)
|
107
115
|
http, request = build_token_request([
|
108
116
|
["grant_type", "authorization_code"],
|
109
|
-
["redirect_uri",
|
117
|
+
["redirect_uri", redirect_uri || FieldView.redirect_uri],
|
110
118
|
["code", code]
|
111
119
|
])
|
112
120
|
response = http.request(request)
|
data/lib/fieldview/boundary.rb
CHANGED
@@ -1,20 +1,4 @@
|
|
1
1
|
module FieldView
|
2
|
-
class Feature
|
3
|
-
attr_accessor :type, :coordinates
|
4
|
-
def initialize(json_feature_object)
|
5
|
-
# Use RGEO??
|
6
|
-
self.type = json_feature_object[:type]
|
7
|
-
self.coordinates = json_feature_object[:coordinates]
|
8
|
-
end
|
9
|
-
|
10
|
-
def point?()
|
11
|
-
return !!(self.type =~ /\Apoint\z/i)
|
12
|
-
end
|
13
|
-
|
14
|
-
def multi_polygon?()
|
15
|
-
return !!(self.type =~ /\Amultipolygon\z/i)
|
16
|
-
end
|
17
|
-
end
|
18
2
|
class Boundary
|
19
3
|
attr_accessor :id, :units, :area, :centroid, :geometry
|
20
4
|
def initialize(json_object)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module FieldView
|
2
|
+
class Feature
|
3
|
+
attr_accessor :type, :coordinates, :data
|
4
|
+
|
5
|
+
def initialize(json_feature_object)
|
6
|
+
# Use RGEO??
|
7
|
+
self.type = json_feature_object[:type]
|
8
|
+
self.coordinates = json_feature_object[:coordinates]
|
9
|
+
self.data = json_feature_object
|
10
|
+
end
|
11
|
+
|
12
|
+
def point?()
|
13
|
+
return !!(self.type =~ /\Apoint\z/i)
|
14
|
+
end
|
15
|
+
|
16
|
+
def multi_polygon?()
|
17
|
+
return !!(self.type =~ /\Amultipolygon\z/i)
|
18
|
+
end
|
19
|
+
|
20
|
+
def polygon?()
|
21
|
+
return !!(self.type =~ /\Apolygon\z/i)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/fieldview/field.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module FieldView
|
2
2
|
class Field < Requestable
|
3
|
+
PATH = "fields"
|
3
4
|
attr_accessor :id
|
4
5
|
attr_accessor :name
|
5
6
|
attr_accessor :boundary_id
|
@@ -10,6 +11,45 @@ module FieldView
|
|
10
11
|
super(auth_token)
|
11
12
|
end
|
12
13
|
|
14
|
+
def self.retrieve(auth_token, id)
|
15
|
+
response = auth_token.execute_request!(:get, "#{PATH}/#{id}")
|
16
|
+
|
17
|
+
Util.verify_response_with_code("Field retrieve", response, 200)
|
18
|
+
|
19
|
+
return new(response.data, auth_token)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.list(auth_token, limit: nil, next_token: nil)
|
23
|
+
limit ||= FieldView.default_page_limit
|
24
|
+
response = auth_token.execute_request!(:get, PATH,
|
25
|
+
headers: {
|
26
|
+
FieldView::NEXT_TOKEN_HEADER_KEY => next_token,
|
27
|
+
FieldView::PAGE_LIMIT_HEADER_KEY => limit
|
28
|
+
})
|
29
|
+
next_token = response.http_headers[FieldView::NEXT_TOKEN_HEADER_KEY]
|
30
|
+
|
31
|
+
if (response.http_status == 200 || response.http_status == 206) then
|
32
|
+
# 206: Partial result, will have more data
|
33
|
+
# 200: When all the results were in the list
|
34
|
+
return_data = response.data[:results]
|
35
|
+
elsif (response.http_status == 304)
|
36
|
+
# 304: Nothing modified since last request
|
37
|
+
return_data = []
|
38
|
+
else
|
39
|
+
# This should never happen
|
40
|
+
raise UnexpectedResponseError.new("Fields list expects 200,206, or 304 for codes",
|
41
|
+
fieldview_response: response)
|
42
|
+
end
|
43
|
+
|
44
|
+
return ListObject.new(
|
45
|
+
self,
|
46
|
+
auth_token,
|
47
|
+
return_data.collect { |i| Field.new(i, auth_token) },
|
48
|
+
response.http_status,
|
49
|
+
next_token: next_token,
|
50
|
+
limit: limit)
|
51
|
+
end
|
52
|
+
|
13
53
|
def boundary
|
14
54
|
@boundary ||= nil
|
15
55
|
if @boundary.nil?
|
@@ -20,9 +20,8 @@ module FieldView
|
|
20
20
|
def next_page!()
|
21
21
|
return if !self.more_pages?()
|
22
22
|
new_list = @listable.list(auth_token, limit: self.limit, next_token: self.next_token)
|
23
|
-
|
24
|
-
|
25
|
-
@auth_token = new_list.auth_token
|
23
|
+
initialize(new_list.listable, new_list.auth_token,
|
24
|
+
new_list.data, new_list.last_http_status, next_token: new_list.next_token, limit: new_list.limit)
|
26
25
|
end
|
27
26
|
|
28
27
|
# alias for more_pages
|
data/lib/fieldview/util.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module FieldView
|
2
2
|
class Util
|
3
3
|
def self.http_status_is_more_in_list?(http_status)
|
4
|
-
return http_status.to_i == 206
|
4
|
+
return http_status.nil? || http_status.to_i == 206
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.verify_response_with_code(message, fieldview_response, *acceptable_response_codes)
|
data/lib/fieldview/version.rb
CHANGED
data/lib/fieldview.rb
CHANGED
@@ -8,9 +8,9 @@ require 'fieldview/version'
|
|
8
8
|
|
9
9
|
# API Support Classes
|
10
10
|
require 'fieldview/errors'
|
11
|
+
require 'fieldview/feature'
|
11
12
|
require 'fieldview/requestable'
|
12
13
|
require 'fieldview/auth_token'
|
13
|
-
require 'fieldview/fields'
|
14
14
|
require 'fieldview/util'
|
15
15
|
require 'fieldview/fieldview_response'
|
16
16
|
require 'fieldview/field'
|
data/test/test_auth_token.rb
CHANGED
@@ -21,6 +21,20 @@ class TestAuthToken < Minitest::Test
|
|
21
21
|
teardown_for_api_request
|
22
22
|
end
|
23
23
|
|
24
|
+
def test_expiration_at_initialization
|
25
|
+
five_seconds_from_now = Time.now + 5
|
26
|
+
ten_seconds_from_now = Time.now + 10
|
27
|
+
token = FieldView::AuthToken.new(access_token: "yyy", refresh_access_token: "xxx",
|
28
|
+
access_token_expiration_at: five_seconds_from_now, refresh_token_expiration_at: ten_seconds_from_now)
|
29
|
+
assert_equal five_seconds_from_now, token.access_token_expiration_at
|
30
|
+
assert_equal ten_seconds_from_now, token.refresh_token_expiration_at
|
31
|
+
|
32
|
+
token = FieldView::AuthToken.new(access_token: "yyy", refresh_access_token: "xxx",
|
33
|
+
access_token_expiration_at: "2017-05-05T18:44:03.520-06:00", refresh_token_expiration_at: "2017-05-05T18:44:04.520-06:00")
|
34
|
+
assert_equal Time.parse("2017-05-05T18:44:03.520-06:00"), token.access_token_expiration_at
|
35
|
+
assert_equal Time.parse("2017-05-05T18:44:04.520-06:00"), token.refresh_token_expiration_at
|
36
|
+
end
|
37
|
+
|
24
38
|
def test_build_token_request
|
25
39
|
http, request = FieldView::AuthToken.build_token_request([["dont", "care"]])
|
26
40
|
assert_equal "/api/oauth/token?dont=care", request.path
|
data/test/test_field.rb
CHANGED
@@ -2,15 +2,85 @@ require File.expand_path('../test_helper', __FILE__)
|
|
2
2
|
|
3
3
|
class TestField < Minitest::Test
|
4
4
|
FIXTURE = API_FIXTURES.fetch(:single_field_list)[:results][0]
|
5
|
-
|
6
|
-
|
5
|
+
LIST_FIXTURE = API_FIXTURES.fetch(:single_field_list)
|
6
|
+
|
7
|
+
def setup
|
8
|
+
setup_for_api_requests
|
9
|
+
end
|
7
10
|
|
11
|
+
def teardown
|
12
|
+
teardown_for_api_request
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_retrieve()
|
16
|
+
stub_request(:get, /fields/).
|
17
|
+
to_return(status: 200, body: FIXTURE.to_json)
|
18
|
+
|
19
|
+
field = FieldView::Field.retrieve(new_auth_token, FIXTURE[:id])
|
20
|
+
|
8
21
|
assert_equal FIXTURE[:id], field.id
|
9
22
|
assert_equal FIXTURE[:name], field.name
|
10
23
|
assert_equal FIXTURE[:boundaryId], field.boundary_id
|
11
24
|
assert_equal new_auth_token.access_token, field.auth_token.access_token
|
12
25
|
end
|
26
|
+
|
27
|
+
def test_list_with_one_page()
|
28
|
+
next_token = "AZXJKLA123"
|
29
|
+
stub_request(:get, /fields/).
|
30
|
+
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => FieldView.default_page_limit.to_s}).
|
31
|
+
to_return(status: 200, body: LIST_FIXTURE.to_json(),
|
32
|
+
headers: next_token_headers)
|
33
|
+
fields = FieldView::Field.list(new_auth_token)
|
34
|
+
|
35
|
+
assert_equal LIST_FIXTURE[:results].length, fields.data.length
|
36
|
+
assert_equal LIST_FIXTURE[:results][0][:id], fields.data[0].id
|
37
|
+
assert_equal next_token, fields.next_token
|
38
|
+
assert_equal FieldView::Field, fields.listable
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_list_with_no_more_data
|
42
|
+
stub_request(:get, /fields/).
|
43
|
+
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => FieldView.default_page_limit.to_s}).
|
44
|
+
to_return(status: 304, body: {}.to_json(),
|
45
|
+
headers: next_token_headers)
|
46
|
+
fields = FieldView::Field.list(new_auth_token)
|
47
|
+
|
48
|
+
assert_equal 0, fields.data.length
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_with_more_data
|
52
|
+
next_token = "AZXJKLA123"
|
53
|
+
stub_request(:get, /fields/).
|
54
|
+
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => FieldView.default_page_limit.to_s}).
|
55
|
+
to_return(status: 200, body: LIST_FIXTURE.to_json(),
|
56
|
+
headers: next_token_headers)
|
57
|
+
fields = FieldView::Field.list(new_auth_token)
|
58
|
+
|
59
|
+
assert_equal LIST_FIXTURE[:results].length, fields.data.length
|
60
|
+
assert_equal LIST_FIXTURE[:results][0][:id], fields.data[0].id
|
61
|
+
assert_equal next_token, fields.next_token
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_with_limit
|
65
|
+
stub_request(:get, /fields/).
|
66
|
+
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => 1}).
|
67
|
+
to_return(status: 200, body: LIST_FIXTURE.to_json(),
|
68
|
+
headers: next_token_headers)
|
69
|
+
fields = FieldView::Field.list(new_auth_token, limit: 1)
|
13
70
|
|
71
|
+
assert_equal 1, fields.data.length
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_with_next_token
|
75
|
+
next_token = "AZXJKLA123"
|
76
|
+
stub_request(:get, /fields/).
|
77
|
+
with(headers: { FieldView::NEXT_TOKEN_HEADER_KEY => next_token }).
|
78
|
+
to_return(status: 200, body: LIST_FIXTURE.to_json())
|
79
|
+
|
80
|
+
fields = FieldView::Field.list(new_auth_token, next_token: next_token)
|
81
|
+
assert_equal 1, fields.data.length
|
82
|
+
end
|
83
|
+
|
14
84
|
def test_get_boundary
|
15
85
|
field = FieldView::Field.new(FIXTURE, new_auth_token)
|
16
86
|
|
data/test/test_list_object.rb
CHANGED
@@ -2,19 +2,43 @@ require File.expand_path('../test_helper', __FILE__)
|
|
2
2
|
|
3
3
|
class TestListObject < Minitest::Test
|
4
4
|
FIXTURE = API_FIXTURES.fetch(:single_field_list)
|
5
|
-
|
5
|
+
|
6
|
+
def setup
|
7
|
+
setup_for_api_requests
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
teardown_for_api_request
|
12
|
+
end
|
13
|
+
|
6
14
|
def test_each_loop
|
7
15
|
data = ["x","y","z"]
|
8
|
-
list = FieldView::ListObject.new(FieldView::
|
16
|
+
list = FieldView::ListObject.new(FieldView::Field, new_auth_token, data, 200, next_token: nil)
|
9
17
|
|
10
18
|
list.each_with_index do |x, i|
|
11
19
|
assert_equal data[i], x
|
12
20
|
end
|
13
21
|
end
|
14
22
|
|
23
|
+
def test_restart
|
24
|
+
next_token = "JZIOJKLJ"
|
25
|
+
old_next_token = "DONTCARE"
|
26
|
+
list = FieldView::ListObject.new(FieldView::Field, new_auth_token,
|
27
|
+
["dont","care"], 206, next_token: old_next_token)
|
28
|
+
stub_request(:get, /fields/).
|
29
|
+
to_return(status: 200, body: API_FIXTURES[:field_two_list].to_json(),
|
30
|
+
headers: next_token_headers(next_token))
|
31
|
+
|
32
|
+
list.restart!
|
33
|
+
|
34
|
+
assert_equal list.next_token, next_token
|
35
|
+
assert_equal list.last_http_status, 200
|
36
|
+
assert_equal API_FIXTURES[:field_two_list][:results][0][:id], list.data[0].id
|
37
|
+
end
|
38
|
+
|
15
39
|
def test_get_next_page
|
16
40
|
next_token = "JZIOJKLJ"
|
17
|
-
list = FieldView::ListObject.new(FieldView::
|
41
|
+
list = FieldView::ListObject.new(FieldView::Field, new_auth_token,
|
18
42
|
["dont","care"], 206, next_token: next_token)
|
19
43
|
stub_request(:get, /fields/).
|
20
44
|
with(headers: next_token_headers(next_token)).
|
@@ -26,7 +50,7 @@ class TestListObject < Minitest::Test
|
|
26
50
|
end
|
27
51
|
|
28
52
|
assert_equal 1, list.data.length
|
29
|
-
assert_equal
|
53
|
+
assert_equal API_FIXTURES[:field_two_list][:results][0][:id], list.data[0].id
|
30
54
|
assert !list.more_pages?()
|
31
55
|
end
|
32
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fieldview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Susmarski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: ' FieldView is used to make data-driven decisions to maximize your return
|
14
14
|
on every acre. This Ruby Gem is provided as a convenient way to access their API.'
|
@@ -28,8 +28,8 @@ files:
|
|
28
28
|
- lib/fieldview/auth_token.rb
|
29
29
|
- lib/fieldview/boundary.rb
|
30
30
|
- lib/fieldview/errors.rb
|
31
|
+
- lib/fieldview/feature.rb
|
31
32
|
- lib/fieldview/field.rb
|
32
|
-
- lib/fieldview/fields.rb
|
33
33
|
- lib/fieldview/fieldview_response.rb
|
34
34
|
- lib/fieldview/list_object.rb
|
35
35
|
- lib/fieldview/requestable.rb
|
@@ -41,7 +41,6 @@ files:
|
|
41
41
|
- test/test_auth_token.rb
|
42
42
|
- test/test_boundary.rb
|
43
43
|
- test/test_field.rb
|
44
|
-
- test/test_fields.rb
|
45
44
|
- test/test_fieldview.rb
|
46
45
|
- test/test_helper.rb
|
47
46
|
- test/test_list_object.rb
|
@@ -75,7 +74,6 @@ test_files:
|
|
75
74
|
- test/test_auth_token.rb
|
76
75
|
- test/test_boundary.rb
|
77
76
|
- test/test_field.rb
|
78
|
-
- test/test_fields.rb
|
79
77
|
- test/test_fieldview.rb
|
80
78
|
- test/test_helper.rb
|
81
79
|
- test/test_list_object.rb
|
data/lib/fieldview/fields.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module FieldView
|
2
|
-
class Fields
|
3
|
-
PATH = "fields"
|
4
|
-
def self.list(auth_token, limit: nil, next_token: nil)
|
5
|
-
limit ||= FieldView.default_page_limit
|
6
|
-
response = auth_token.execute_request!(:get, PATH,
|
7
|
-
headers: {
|
8
|
-
FieldView::NEXT_TOKEN_HEADER_KEY => next_token,
|
9
|
-
FieldView::PAGE_LIMIT_HEADER_KEY => limit
|
10
|
-
})
|
11
|
-
next_token = response.http_headers[FieldView::NEXT_TOKEN_HEADER_KEY]
|
12
|
-
|
13
|
-
if (response.http_status == 200 || response.http_status == 206) then
|
14
|
-
# 206: Partial result, will have more data
|
15
|
-
# 200: When all the results were in the list
|
16
|
-
return_data = response.data[:results]
|
17
|
-
elsif (response.http_status == 304)
|
18
|
-
# 304: Nothing modified since last request
|
19
|
-
return_data = []
|
20
|
-
else
|
21
|
-
# This should never happen
|
22
|
-
return_data = nil
|
23
|
-
end
|
24
|
-
|
25
|
-
return ListObject.new(
|
26
|
-
self,
|
27
|
-
auth_token,
|
28
|
-
return_data.collect { |i| Field.new(i, auth_token) },
|
29
|
-
response.http_status,
|
30
|
-
next_token: next_token,
|
31
|
-
limit: limit)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/test/test_fields.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
require File.expand_path('../test_helper', __FILE__)
|
2
|
-
|
3
|
-
class TestFields < Minitest::Test
|
4
|
-
FIXTURE = API_FIXTURES.fetch(:single_field_list)
|
5
|
-
|
6
|
-
def setup
|
7
|
-
setup_for_api_requests
|
8
|
-
end
|
9
|
-
|
10
|
-
def teardown
|
11
|
-
teardown_for_api_request
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_list_with_one_page()
|
15
|
-
next_token = "AZXJKLA123"
|
16
|
-
stub_request(:get, /fields/).
|
17
|
-
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => FieldView.default_page_limit.to_s}).
|
18
|
-
to_return(status: 200, body: FIXTURE.to_json(),
|
19
|
-
headers: next_token_headers)
|
20
|
-
fields = FieldView::Fields.list(new_auth_token)
|
21
|
-
|
22
|
-
assert_equal FIXTURE[:results].length, fields.data.length
|
23
|
-
assert_equal FIXTURE[:results][0][:id], fields.data[0].id
|
24
|
-
assert_equal next_token, fields.next_token
|
25
|
-
assert_equal FieldView::Fields, fields.listable
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_list_with_no_more_data
|
29
|
-
stub_request(:get, /fields/).
|
30
|
-
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => FieldView.default_page_limit.to_s}).
|
31
|
-
to_return(status: 304, body: {}.to_json(),
|
32
|
-
headers: next_token_headers)
|
33
|
-
fields = FieldView::Fields.list(new_auth_token)
|
34
|
-
|
35
|
-
assert_equal 0, fields.data.length
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_with_more_data
|
39
|
-
next_token = "AZXJKLA123"
|
40
|
-
stub_request(:get, /fields/).
|
41
|
-
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => FieldView.default_page_limit.to_s}).
|
42
|
-
to_return(status: 200, body: FIXTURE.to_json(),
|
43
|
-
headers: next_token_headers)
|
44
|
-
fields = FieldView::Fields.list(new_auth_token)
|
45
|
-
|
46
|
-
assert_equal FIXTURE[:results].length, fields.data.length
|
47
|
-
assert_equal FIXTURE[:results][0][:id], fields.data[0].id
|
48
|
-
assert_equal next_token, fields.next_token
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_with_limit
|
52
|
-
stub_request(:get, /fields/).
|
53
|
-
with(headers: { FieldView::PAGE_LIMIT_HEADER_KEY => 1}).
|
54
|
-
to_return(status: 200, body: FIXTURE.to_json(),
|
55
|
-
headers: next_token_headers)
|
56
|
-
fields = FieldView::Fields.list(new_auth_token, limit: 1)
|
57
|
-
|
58
|
-
assert_equal 1, fields.data.length
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_with_next_token
|
62
|
-
next_token = "AZXJKLA123"
|
63
|
-
stub_request(:get, /fields/).
|
64
|
-
with(headers: { FieldView::NEXT_TOKEN_HEADER_KEY => next_token }).
|
65
|
-
to_return(status: 200, body: FIXTURE.to_json())
|
66
|
-
|
67
|
-
fields = FieldView::Fields.list(new_auth_token, next_token: next_token)
|
68
|
-
assert_equal 1, fields.data.length
|
69
|
-
end
|
70
|
-
end
|