artemis_api 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0ddb2f3f02a23e8af40bb40ac71a3ce9a5a6c37e
4
- data.tar.gz: 1e63ef8698d8bed206674ff165a82f7fe404a64d
2
+ SHA256:
3
+ metadata.gz: d26e2f48257f9de7ae7ce3d4b23ea245fdc7d3408a1467bd09b279275240523d
4
+ data.tar.gz: 673cd71c200ec4f0bdf793b70df3e5075b16a0b37e1ad8f3d008ba3d6deed0a3
5
5
  SHA512:
6
- metadata.gz: a50bcb4e50699bd837c933bbea113b33454ec61a00233c6ae5e204bf7a5f4cbd00cb4d1225537da8df8d65a382d1704c73fb9ac4571763f1c9e8314a4b29d7d1
7
- data.tar.gz: 3a1d56165f91ac90ed852f39e5e355efc946e18d8f22ce8a1032560bdd9fb4d54570bbd518bcdfa25e017ae30d79ac7edcb6e913c059013b021dd6ebd9ae9261
6
+ metadata.gz: 914e649b5638e024bff44c404daf3c19c0fe4b02e17ec2829b9bbe2057c8e396f48c2a4923af5774cdaacd5473e3c85f16cb88414f6e5fa8ed9a543089d16598
7
+ data.tar.gz: 78e811dc747f089a520f6cf39b4c8fe080a035fcb285e9b048538b614bbbce3a9099fd98763694f8946b7318896a6ade38408ab171da34a1323cbf2424f6c399
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- artemis_api (0.3.0)
4
+ artemis_api (0.5.1)
5
+ oauth2
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -16,25 +17,25 @@ GEM
16
17
  concurrent-ruby (1.1.5)
17
18
  crack (0.4.3)
18
19
  safe_yaml (~> 1.0.0)
19
- faraday (0.15.4)
20
+ faraday (1.0.1)
20
21
  multipart-post (>= 1.2, < 3)
21
22
  hashdiff (0.4.0)
22
23
  i18n (1.6.0)
23
24
  concurrent-ruby (~> 1.0)
24
25
  jwt (2.2.1)
25
26
  minitest (5.11.3)
26
- multi_json (1.13.1)
27
+ multi_json (1.14.1)
27
28
  multi_xml (0.6.0)
28
29
  multipart-post (2.1.1)
29
- oauth2 (1.4.1)
30
- faraday (>= 0.8, < 0.16.0)
30
+ oauth2 (1.4.4)
31
+ faraday (>= 0.8, < 2.0)
31
32
  jwt (>= 1.0, < 3.0)
32
33
  multi_json (~> 1.3)
33
34
  multi_xml (~> 0.5)
34
35
  rack (>= 1.2, < 3)
35
36
  public_suffix (3.1.1)
36
- rack (2.0.7)
37
- rake (10.5.0)
37
+ rack (2.2.2)
38
+ rake (13.0.1)
38
39
  safe_yaml (1.0.5)
39
40
  thread_safe (0.3.6)
40
41
  tzinfo (1.2.5)
@@ -52,8 +53,7 @@ DEPENDENCIES
52
53
  artemis_api!
53
54
  bundler (~> 1.16)
54
55
  minitest (~> 5.0)
55
- oauth2
56
- rake (~> 10.0)
56
+ rake (~> 13.0)
57
57
  webmock
58
58
 
59
59
  BUNDLED WITH
@@ -1,5 +1,11 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === 0.4.0 / 2019-11-14
4
+
5
+ * Added pagination functionality to Batch queries
6
+ * Cleaned up filtering and added tests
7
+ * Documentation updates
8
+
3
9
  === 0.3.0 / 2019-11-04
4
10
 
5
11
  * Added an alternative OAuth flow that can accept an authorization code
data/README.md CHANGED
@@ -56,15 +56,17 @@ client = ArtemisApi::Client.new(access_token: 'your_access_token',
56
56
  expires_at: token_expires_at)
57
57
  ```
58
58
 
59
- Alternatively, if you're working on a command line tool or otherwise not intending to implement a full OAuth flow, you can generate an authorization code directly and pass it in while instantiating your client. Do this by creating an OAuth application in your Artemis settings with `urn:ietf:wg:oauth:2.0:oob` as the callback url. Then, clicking the Authorize button directly beside it on your application show page will provide you directly with an authorization code. Pass it into the Client instantiator like this. (The same rules apply about either passing in options or setting your ENV variables.)
59
+ Alternatively, if you're working on a command line tool or otherwise not intending to implement a full OAuth flow, you can generate an authorization code directly and use this code to obtain an access token and a refresh token.
60
+ Do this by creating an OAuth application in your Artemis settings with `urn:ietf:wg:oauth:2.0:oob` as the callback url. Then, clicking the Authorize button directly on Artemis Portal beside it on your application show page will
61
+ provide you directly with an authorization code. Pass it into the Client instantiator like this. (The same rules apply about either passing in options or setting your ENV variables.)
60
62
 
61
63
  ```ruby
62
64
  client = ArtemisApi::Client.new(auth_code: 'your_generated_authorization_code')
63
65
  ```
64
66
 
65
- This can also take an optional `redirect_uri` named param, which you can pass through if you have another callback url you're using. Otherwise if you don't pass anything through that param, it will default to the `urn:ietf:wg:oauth:2.0:oob` address.
66
-
67
- Providing your authorization code like this will do the authorization through OAuth for you and create and store your access tokens for you so you don't have to worry about them.
67
+ This authorization code is only valid for one use. If you want to keep connecting using the same authorization grant, you
68
+ need to save the values of `client.access_token`, `client.refresh_token` and `client.expires_at` and use them when
69
+ reinstantiating `client` in the future.
68
70
 
69
71
  #### Requesting data from Artemis
70
72
 
@@ -21,10 +21,11 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ spec.add_dependency "oauth2"
25
+
24
26
  spec.add_development_dependency "bundler", "~> 1.16"
25
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rake", "~> 13.0"
26
28
  spec.add_development_dependency "minitest", "~> 5.0"
27
- spec.add_development_dependency "oauth2"
28
29
  spec.add_development_dependency "webmock"
29
30
  spec.add_development_dependency "activesupport"
30
31
  end
@@ -11,6 +11,7 @@ require 'artemis_api/discard'
11
11
  require 'artemis_api/harvest'
12
12
  require 'artemis_api/seeding_unit'
13
13
  require 'artemis_api/harvest_unit'
14
+ require 'artemis_api/resource_unit'
14
15
  require 'artemis_api/item'
15
16
  require 'artemis_api/subscription'
16
17
 
@@ -13,11 +13,11 @@ module ArtemisApi
13
13
  client.find_all(self.json_type, facility_id: facility_id, include: include, filters: filters, page: page)
14
14
  end
15
15
 
16
- def completions(include: nil)
16
+ def completions(include: nil, filters: {})
17
17
  ArtemisApi::Completion.find_all(facility_id: facility_id,
18
18
  client: client,
19
19
  include: include,
20
- filters: {crop_batch_ids: [id]})
20
+ filters: {crop_batch_ids: [id]}.with_indifferent_access.merge(filters))
21
21
  end
22
22
 
23
23
  def completion(completion_id, include: nil)
@@ -42,6 +42,14 @@ module ArtemisApi
42
42
  ArtemisApi::SeedingUnit.find(id: unit_id, facility_id: id, client: client, include: include)
43
43
  end
44
44
 
45
+ def resource_units(include: nil)
46
+ ArtemisApi::ResourceUnit.find_all(facility_id: id, client: client, include: include)
47
+ end
48
+
49
+ def resource_unit(unit_id, include: nil)
50
+ ArtemisApi::ResourceUnit.find(id: unit_id, facility_id: id, client: client, include: include)
51
+ end
52
+
45
53
  def harvest_units(include: nil)
46
54
  ArtemisApi::HarvestUnit.find_all(facility_id: id, client: client, include: include)
47
55
  end
@@ -0,0 +1,13 @@
1
+ module ArtemisApi
2
+ class ResourceUnit < ArtemisApi::Model
3
+ json_type 'resource_units'
4
+
5
+ def self.find(id:, facility_id:, client:, include: nil, force: false)
6
+ client.find_one(self.json_type, id, facility_id: facility_id, include: include, force: force)
7
+ end
8
+
9
+ def self.find_all(facility_id:, client:, include: nil)
10
+ client.find_all(self.json_type, facility_id: facility_id, include: include)
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,3 @@
1
1
  module ArtemisApi
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -80,9 +80,8 @@ class BatchTest < Minitest::Test
80
80
  beginning = ending - 15.days
81
81
  date_window = [beginning, ending].join(',')
82
82
 
83
- # TODO: Figure out how the filtering syntax goes.
84
- stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/batches?filter[date_type]=seeded_at&filter[date_window]=#{date_window}")
85
- .to_return(body: {data: [{id: '1', type: 'batches', attributes: {id: 1, arbitrary_id: 'Oct16-Gem-Let'}}, {id: '2', type: 'batches', attributes: {id: 2, name: 'Oct19-Bok-Cho'}}]}.to_json)
83
+ stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/batches?filter[date_type]=seeded_at&filter[date_window]=#{CGI.escape(date_window)}")
84
+ .to_return(body: {data: [{id: 'd1', type: 'batches', attributes: {id: 1, arbitrary_id: 'Oct16-Gem-Let'}}, {id: '2', type: 'batches', attributes: {id: 2, name: 'Oct19-Bok-Cho'}}]}.to_json)
86
85
 
87
86
  batches = ArtemisApi::Batch.find_all(facility_id: @facility.id, client: @client, filters: {date_type: "seeded_at", date_window: date_window})
88
87
  assert_equal 2, batches.count
@@ -9,10 +9,16 @@ class CompletionTest < Minitest::Test
9
9
  .to_return(body: {data: [{id: '1', type: 'completions', attributes: {id: 1, action_type: 'start'}}, {id: '2', type: 'completions', attributes: {id: 2, action_type: 'move'}}]}.to_json)
10
10
 
11
11
  stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/completions/2")
12
- .to_return(body: {data: {id: '2', type: 'completions', attributes: {id: 2, action_type: 'move'}}}.to_json)
12
+ .to_return(body: {data: {id: '2', type: 'completions', attributes: {id: 2, action_type: 'move'}, relationships: { batch: { data: { id: 1, type: 'batches' }}}}}.to_json)
13
+
14
+ stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/completions/2")
15
+ .to_return(body: {data: {id: '2', type: 'completions', attributes: {id: 2, action_type: 'move'}, relationships: { batch: { data: { id: 1, type: 'batches' }}}}}.to_json)
13
16
 
14
17
  stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/completions?filter[crop_batch_ids][]=2&filter[crop_batch_ids][]=3")
15
18
  .to_return(body: {data: [{id: '1', type: 'completions', attributes: {id: 1, action_type: 'start'}}]}.to_json)
19
+
20
+ stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/completions?filter[parent_id]=2")
21
+ .to_return(body: {data: [{id: '3', type: 'completions', attributes: {id: 3, action_type: 'process'}}, {id: '4', type: 'completions', attributes: {id: 4, action_type: 'process'}}]}.to_json)
16
22
  end
17
23
 
18
24
  def test_finding_all_completions
@@ -0,0 +1,24 @@
1
+ require "test_helper"
2
+
3
+ class ResourceUnitTest < Minitest::Test
4
+ def setup
5
+ get_client
6
+ get_facility
7
+
8
+ stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/resource_units")
9
+ .to_return(body: {data: [{id: '1', type: 'resource_units', attributes: {id: 1, name: 'Bunch', kind: 'count', conversion_si: 1.0}}, {id: '2', type: 'resource_units', attributes: {id: 2, name: 'grams', kind: 'weight', conversion_si: 1.0}}]}.to_json)
10
+
11
+ stub_request(:get, "http://localhost:3000/api/v3/facilities/#{@facility.id}/resource_units/2")
12
+ .to_return(body: {data: {id: '2', type: 'resource_units', attributes: {id: 2, name: 'grams', kind: 'weight', conversion_is: 1.0}}}.to_json)
13
+ end
14
+
15
+ def test_finding_all_resource_units
16
+ resource_units = ArtemisApi::ResourceUnit.find_all(facility_id: @facility.id, client: @client)
17
+ assert_equal 2, resource_units.count
18
+ end
19
+
20
+ def test_finding_a_specific_resource_unit
21
+ resource_unit = ArtemisApi::ResourceUnit.find(id: 2, facility_id: @facility.id, client: @client)
22
+ assert_equal 'grams', resource_unit.name
23
+ end
24
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artemis_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamey Hampton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-14 00:00:00.000000000 Z
11
+ date: 2020-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: oauth2
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +44,14 @@ dependencies:
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: '13.0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: '13.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: minitest
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,20 +66,6 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '5.0'
55
- - !ruby/object:Gem::Dependency
56
- name: oauth2
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -124,6 +124,7 @@ files:
124
124
  - lib/artemis_api/item.rb
125
125
  - lib/artemis_api/model.rb
126
126
  - lib/artemis_api/organization.rb
127
+ - lib/artemis_api/resource_unit.rb
127
128
  - lib/artemis_api/seeding_unit.rb
128
129
  - lib/artemis_api/subscription.rb
129
130
  - lib/artemis_api/user.rb
@@ -139,6 +140,7 @@ files:
139
140
  - test/harvest_unit_test.rb
140
141
  - test/item_test.rb
141
142
  - test/organization_test.rb
143
+ - test/resource_unit_test.rb
142
144
  - test/seeding_unit_test.rb
143
145
  - test/subscription_test.rb
144
146
  - test/test_helper.rb
@@ -163,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
165
  - !ruby/object:Gem::Version
164
166
  version: '0'
165
167
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.5.1
168
+ rubygems_version: 3.0.3
168
169
  signing_key:
169
170
  specification_version: 4
170
171
  summary: An API wrapper for the ArtemisAg API