gman_client 0.0.8 → 0.0.9

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
2
  SHA1:
3
- metadata.gz: 06f0208580224f12be38db9a98781a432031d2fd
4
- data.tar.gz: a395e39b32981938126d65f28535f4095ffc8e3c
3
+ metadata.gz: a0b2012b4f4a924167b18271efdb13e092788ce7
4
+ data.tar.gz: 1a3f2f3281bb916cfd1b0a17f96362f197ee1c0c
5
5
  SHA512:
6
- metadata.gz: 1b985acf239f35d931939fdb8d66e6f953644850dfc2542421690598e97d807482174e5020536222b952456113ad5b7ebaebf30b4d12ca8c7454e215f00d05e0
7
- data.tar.gz: 4a9486cd40c6aae778c567807ecd2f8363cc2a7c83a26d1fe361d9686e58b330013e02dfaa6aef9d1cf66565a9083f70c0f29456e49abab7663649e1fa08ed62
6
+ metadata.gz: 45e41fc768e6a7af96b33839ad40a736395ffeea7197eb1312ccc0a891b72a831cedba12ce20e0eac73600ad796115f51beaf856a6f26def7b6fc94ae6ef1e9c
7
+ data.tar.gz: 4ec31c7001b660759fd40faeee19346fa46475f987f9da1343d459c8c1ab548259a4413199d4775c0aa824a67cf0780ec0ab2485dd5fbd08db24d64edfe1117f
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
- [![Build Status](https://travis-ci.org/westernmilling/gman_client.svg?branch=master)](https://travis-ci.org/westernmilling/gman_client) [![Coverage Status](https://coveralls.io/repos/westernmilling/gman_client/badge.svg)](https://coveralls.io/r/westernmilling/gman_client)
1
+ [![Build Status](https://travis-ci.org/westernmilling/gman_client.svg?branch=master)](https://travis-ci.org/westernmilling/gman_client)
2
+ [![Code Climate](https://codeclimate.com/github/westernmilling/gman_client/badges/gpa.svg)](https://codeclimate.com/github/westernmilling/gman_client)
2
3
  [![Test Coverage](https://codeclimate.com/github/westernmilling/gman_client/badges/coverage.svg)](https://codeclimate.com/github/westernmilling/gman_client/coverage)
4
+ [![Dependency Status](https://gemnasium.com/westernmilling/gman_client.svg)](https://gemnasium.com/westernmilling/gman_client)
3
5
  [![Gem Version](https://badge.fury.io/rb/gman_client.svg)](https://badge.fury.io/rb/gman_client)
4
6
 
5
7
  # GmanClient
data/lib/gman/client.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  module Gman
2
2
  class Client
3
+ include GmanClient::Api::Orders
3
4
  include GmanClient::CommodityMerchandising::Contracts
4
5
  include GmanClient::Utility
5
6
 
6
7
  attr_accessor :url, :client_id, :client_secret
8
+
7
9
  def initialize(options)
8
10
  @url = options[:url]
9
11
  @token_url = "#{url}/oauth/token"
@@ -66,7 +68,7 @@ module Gman
66
68
  .items_by_id
67
69
  .get(params: { item_id: item_id })
68
70
  end
69
- convert_payload(response)
71
+ convert_payload([response].flatten)
70
72
  end
71
73
  end
72
74
  end
@@ -0,0 +1,21 @@
1
+ module GmanClient
2
+ module Api
3
+ # Orders API
4
+ module Orders
5
+ # Retrieve a single order
6
+ #
7
+ # @param [String] uuid identifies the order
8
+ def order(uuid)
9
+ response = attempt(@retry_attempts) do
10
+ request
11
+ .api
12
+ .v1
13
+ .orders(uuid)
14
+ .get
15
+ end
16
+
17
+ response.to_h
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module GmanClient
2
- VERSION = '0.0.8'.freeze
2
+ VERSION = '0.0.9'.freeze
3
3
  end
data/lib/gman_client.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'gman_client/api/orders'
1
2
  require 'gman_client/commodity_merchandising/contracts'
2
3
  require 'gman_client/utility'
3
4
  require 'gman_client/version'
Binary file
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+ require 'webmock'
3
+
4
+ RSpec.describe Gman::Client do
5
+ include WebMock::API
6
+
7
+ let(:client) do
8
+ Gman::Client.new(
9
+ url: stubbed_url,
10
+ client_id: 'client_id',
11
+ client_secret: 'client_secret'
12
+ )
13
+ end
14
+
15
+ let(:orders_hash) do
16
+ [
17
+ {
18
+ order_number: 000001,
19
+ order_key: 001,
20
+ quantity_shipped: 5.0,
21
+ ship_date: '2000-01-01',
22
+ warehouse_id: 1,
23
+ uuid: '949085E3-6FC3-4240-BC86-2940D543DB35'
24
+ },
25
+ {
26
+ order_number: 000002,
27
+ order_key: 002,
28
+ quantity_shipped: 5.0,
29
+ ship_date: '2000-01-01',
30
+ warehouse_id: 1,
31
+ uuid: '1AE4C0FD-B1B3-4381-ACF2-62025A6F0D8C'
32
+ }
33
+ ]
34
+ end
35
+
36
+ describe '#order' do
37
+ let(:described) { client.order(order_hash[:uuid]) }
38
+ let(:access_token) { SecureRandom.uuid }
39
+ let(:order_hash) { orders_hash.sample }
40
+ let(:stubbed_url) { 'http://test.local' }
41
+
42
+ subject do
43
+ described
44
+ end
45
+
46
+ context 'when the authorization fails' do
47
+ before do
48
+ stub_request(:post, "#{stubbed_url}/oauth/token")
49
+ .to_return(response)
50
+ end
51
+
52
+ let(:response) do
53
+ {
54
+ body: {
55
+ error: 'invalid_client',
56
+ error_description: '...'
57
+ }.to_json,
58
+ status: 401
59
+ }
60
+ end
61
+
62
+ it 'should raise RestClient::Unauthorized' do
63
+ expect { subject }.to raise_error(RestClient::Unauthorized)
64
+ end
65
+ end
66
+
67
+ context 'when the order is found' do
68
+ before do
69
+ stub_request(:post, "#{stubbed_url}/oauth/token")
70
+ .to_return(
71
+ body: { access_token: access_token }.to_json, status: 200
72
+ )
73
+ stub_request(
74
+ :get, "#{stubbed_url}/api/v1/orders/#{order_hash[:uuid]}.json"
75
+ )
76
+ .to_return(body: order_hash.to_json, status: 200)
77
+ end
78
+ let(:access_token) { SecureRandom.uuid }
79
+
80
+ it 'should respond with a Hash' do
81
+ expect(subject).to be_kind_of(Hash)
82
+ end
83
+
84
+ describe 'response' do
85
+ its([:order_number]) { is_expected.to eq order_hash[:order_number] }
86
+ its([:order_key]) { is_expected.to eq order_hash[:order_key] }
87
+ its([:quantity_shipped]) do
88
+ is_expected.to eq order_hash[:quantity_shipped]
89
+ end
90
+ its([:ship_date]) { is_expected.to eq order_hash[:ship_date] }
91
+ its([:warehouse_id]) { is_expected.to eq order_hash[:warehouse_id] }
92
+ its([:uuid]) { is_expected.to eq order_hash[:uuid] }
93
+ end
94
+ end
95
+ end
96
+ end
@@ -60,7 +60,7 @@ RSpec.describe GmanClient do
60
60
  describe '.inventory_items_by_id' do
61
61
  let(:response) do
62
62
  VCR.use_cassette('inventory_items_by_id') do
63
- gman_adapter.inventory_items_by_id(9370)
63
+ gman_adapter.inventory_items_by_id('80')
64
64
  end
65
65
  end
66
66
  subject(:client_response) { response }
@@ -80,8 +80,8 @@ RSpec.describe GmanClient do
80
80
 
81
81
  it { is_expected.to have_key(:item_id) }
82
82
  it { is_expected.to have_key(:in_item_description) }
83
- it { is_expected.to have_value(9370) }
84
- it { is_expected.to have_value('Rachelle') }
83
+ it { is_expected.to have_value('80') }
84
+ it { is_expected.to have_value('Corn Gluten Feed') }
85
85
  end
86
86
  end
87
87
  end
data/spec/spec_helper.rb CHANGED
@@ -17,4 +17,6 @@ RSpec.configure do |config|
17
17
  config.mock_with :rspec do |mocks|
18
18
  mocks.verify_partial_doubles = true
19
19
  end
20
+
21
+ config.order = :random
20
22
  end
@@ -1,13 +1,9 @@
1
1
  def gman_adapter
2
- url = 'http://localhost:3000'
3
- token_url = 'http://localhost:3000/oauth/token'
4
- # rubocop:disable Metrics/LineLength
5
- client_id = 'd137a94543da86e52214d3ed86b015f9299ad2fc66681637600afad814cd7d2b'
6
- client_secret = 'f444a467ddbbaed52297d61a3edc5efd93e9292fc542058786aa13fa366865a3'
7
- # rubocop:enable Metrics/LineLength
2
+ url = ENV['GMAN_SERVICES_URL']
3
+ client_id = ENV['GMAN_SERVICES_CLIENT_ID']
4
+ client_secret = ENV['GMAN_SERVICES_CLIENT_SECRET']
8
5
 
9
6
  Gman::Client.new(url: url,
10
- token_url: token_url,
11
7
  client_id: client_id,
12
8
  client_secret: client_secret
13
9
  )
@@ -2,10 +2,10 @@
2
2
  http_interactions:
3
3
  - request:
4
4
  method: post
5
- uri: http://localhost:3000/oauth/token
5
+ uri: "<GMAN_SERVICES_URL>/oauth/token"
6
6
  body:
7
7
  encoding: US-ASCII
8
- string: grant_type=client_credentials&client_id=f444a467ddbbaed52297d61a3edc5efd93e9292fc542058786aa13fa366865a3&client_secret=d137a94543da86e52214d3ed86b015f9299ad2fc66681637600afad814cd7d2b
8
+ string: grant_type=client_credentials&client_id=<GMAN_SERVICES_CLIENT_ID>&client_secret=<GMAN_SERVICES_CLIENT_SECRET>
9
9
  headers:
10
10
  Accept:
11
11
  - "*/*; q=0.5, application/xml"
@@ -35,27 +35,27 @@ http_interactions:
35
35
  Content-Type:
36
36
  - application/json; charset=utf-8
37
37
  Etag:
38
- - '"9aa8f7755d55659030a38874c13f35af"'
38
+ - '"062d093ffd884c929884c8bec05d8b69"'
39
39
  X-Request-Id:
40
- - f5398a6f-aedf-415c-9218-678c99fd52f6
40
+ - 2683b8b9-00a4-4708-99d7-ab8cd8630160
41
41
  X-Runtime:
42
- - '0.017000'
42
+ - '0.046000'
43
43
  Transfer-Encoding:
44
44
  - chunked
45
45
  body:
46
46
  encoding: UTF-8
47
- string: '{"access_token":"005bbad3c36eed1a3d68582a54ac3844a10273f75cbd0e3d8a6d0e713cce7477","token_type":"bearer","expires_in":7200,"created_at":1421885634}'
47
+ string: '{"access_token":"29a72bedd04f3f98a24b9e6de74a680b649d21f2c746c5277f0c546c49f92caf","token_type":"bearer","created_at":1471454476}'
48
48
  http_version:
49
- recorded_at: Thu, 22 Jan 2015 00:13:54 GMT
49
+ recorded_at: Wed, 17 Aug 2016 17:21:16 GMT
50
50
  - request:
51
51
  method: get
52
- uri: http://localhost:3000/api/v1/inventory/items_by_id.json?item_id=9370
52
+ uri: "<GMAN_SERVICES_URL>/api/v1/inventory/items_by_id.json?item_id=80"
53
53
  body:
54
54
  encoding: US-ASCII
55
55
  string: ''
56
56
  headers:
57
57
  Authorization:
58
- - Bearer 005bbad3c36eed1a3d68582a54ac3844a10273f75cbd0e3d8a6d0e713cce7477
58
+ - Bearer 29a72bedd04f3f98a24b9e6de74a680b649d21f2c746c5277f0c546c49f92caf
59
59
  response:
60
60
  status:
61
61
  code: 200
@@ -70,18 +70,18 @@ http_interactions:
70
70
  Content-Type:
71
71
  - application/json; charset=utf-8
72
72
  Etag:
73
- - '"6f346f20f0d5722e04c451e3cdfa7dea"'
73
+ - '"7c5fe23f612a40f341c1836661852316"'
74
74
  Cache-Control:
75
75
  - max-age=0, private, must-revalidate
76
76
  X-Request-Id:
77
- - 2c806d36-a617-4c46-aa48-1ca57101e7af
77
+ - 918da3e4-68ea-480f-8c2a-70db832bfd06
78
78
  X-Runtime:
79
- - '0.012000'
79
+ - '0.382000'
80
80
  Transfer-Encoding:
81
81
  - chunked
82
82
  body:
83
83
  encoding: UTF-8
84
- string: '[{"item_id":9370,"in_item_description":"Rachelle"}]'
84
+ string: '{"item_id":"80","in_item_description":"Corn Gluten Feed"}'
85
85
  http_version:
86
- recorded_at: Thu, 22 Jan 2015 00:13:54 GMT
87
- recorded_with: VCR 2.9.3
86
+ recorded_at: Wed, 17 Aug 2016 17:21:16 GMT
87
+ recorded_with: VCR 3.0.1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gman_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - MichaelAChrisco
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-02-16 00:00:00.000000000 Z
12
+ date: 2016-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: vcr
@@ -171,6 +171,7 @@ files:
171
171
  - gman_client.gemspec
172
172
  - lib/gman/client.rb
173
173
  - lib/gman_client.rb
174
+ - lib/gman_client/api/orders.rb
174
175
  - lib/gman_client/commodity_merchandising/contracts.rb
175
176
  - lib/gman_client/inventory/items.rb
176
177
  - lib/gman_client/utility.rb
@@ -181,7 +182,9 @@ files:
181
182
  - pkg/gman_client-0.0.4.gem
182
183
  - pkg/gman_client-0.0.5.gem
183
184
  - pkg/gman_client-0.0.7.gem
185
+ - pkg/gman_client-0.0.8.gem
184
186
  - spec/lib/client_contracts_spec.rb
187
+ - spec/lib/client_orders_spec.rb
185
188
  - spec/lib/driver_commission_history_response_spec.rb
186
189
  - spec/lib/driver_response_spec.rb
187
190
  - spec/lib/inventory_item_response_spec.rb
@@ -222,6 +225,7 @@ specification_version: 4
222
225
  summary: Grossman API Client for Ruby
223
226
  test_files:
224
227
  - spec/lib/client_contracts_spec.rb
228
+ - spec/lib/client_orders_spec.rb
225
229
  - spec/lib/driver_commission_history_response_spec.rb
226
230
  - spec/lib/driver_response_spec.rb
227
231
  - spec/lib/inventory_item_response_spec.rb