apruve 1.0.1 → 1.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1ddb4521101f0a5877ffb405e4b8e1f5a3169f7a
4
- data.tar.gz: 047c4dfbcfd1551d9d5034f3dbe900c8057a60e5
3
+ metadata.gz: d21a3b62543cd831797e61455cf14a4c56dcfa6e
4
+ data.tar.gz: 2d408819e0d45f1ba3d8dc5a8718a5d4e69043da
5
5
  SHA512:
6
- metadata.gz: fba5abd0e0cab1753902b25c50cb0a40c6540a90ed60976f1330b9ec8a11301345af38fc87b8102c36abdb2fa62d9c49bdb469ed069280ba6242cced640a70f2
7
- data.tar.gz: 3fb4fcc5a61e2f7491f781e333d9292055777ad6f3bff696642044a7f7d1f37b8b1d64fbadc43249ec1ae6b042bb661f7c3e9e14d6e8fc12bd69cd0eb866c96d
6
+ metadata.gz: 6f5197f4c7ada27283bfb88983a933f43e6128edc202288276b8938e28f0af9426b8ccb9f2084685ed7a8fd3d2b73f1c643f567f4089e852b79df3f10cdee036
7
+ data.tar.gz: 1cf2c2a1337c4e578c33b99a6eafa45098045688823ebda8eda8f3d0cc540bf92d45ae14be18e4ccc6bbfa2b9a25a0f4f13709302a5a12eaf8bcfc9550596244
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- apruve (1.0.1)
4
+ apruve (1.1.1)
5
5
  addressable (~> 2.3)
6
6
  faraday (>= 0.8.6, <= 0.9.0)
7
7
  faraday_middleware (~> 0.9)
@@ -6,6 +6,7 @@ require_relative 'resources/order'
6
6
  require_relative 'resources/order_item'
7
7
  require_relative 'resources/invoice'
8
8
  require_relative 'resources/invoice_item'
9
+ require_relative 'resources/shipment'
9
10
  require_relative 'resources/merchant'
10
11
  require_relative 'resources/subscription'
11
12
  require_relative 'resources/subscription_adjustment'
@@ -0,0 +1,42 @@
1
+ module Apruve
2
+ class Shipment < Apruve::ApruveObject
3
+ attr_accessor :id, :invoice_id, :amount_cents, :currency, :shipper, :shipped_at, :tracking_number, :delivered_at, :merchant_notes, :invoice_items
4
+
5
+ def self.find(invoice_id, id)
6
+ response = Apruve.get("invoices/#{invoice_id}/shipments/#{id}")
7
+ Shipment.new(response.body)
8
+ end
9
+
10
+ def initialize(params)
11
+ super
12
+ # hydrate payment items if appropriate
13
+ if @invoice_items.nil?
14
+ @invoice_items = []
15
+ elsif @invoice_items.is_a?(Array) && @invoice_items.first.is_a?(Hash)
16
+ hydrated_items = []
17
+ @invoice_items.each do |item|
18
+ hydrated_items << Apruve::OrderItem.new(item)
19
+ end
20
+ @invoice_items = hydrated_items
21
+ end
22
+ @currency = Apruve.default_currency if currency.nil?
23
+ end
24
+
25
+ def validate
26
+ errors = []
27
+ errors << 'invoice_id must be set' if invoice_id.nil?
28
+ raise Apruve::ValidationError.new(errors) if errors.length > 0
29
+ end
30
+
31
+ def save!
32
+ validate
33
+ response = Apruve.post("invoices/#{self.invoice_id}/shipments", self.to_json)
34
+ self.id = response.body['id']
35
+ end
36
+
37
+ def update!
38
+ validate
39
+ response = Apruve.patch("invoices/#{self.invoice_id}/shipments/#{id}", self.to_json)
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module Apruve
2
- VERSION = '1.0.1'
2
+ VERSION = '1.1.1'
3
3
  end
@@ -0,0 +1,173 @@
1
+ require 'spec_helper'
2
+
3
+ describe Apruve::Shipment do
4
+ before :each do
5
+ Apruve.configure('f5fbe71d68772d1f562ed6f598b995b3', 'local')
6
+ end
7
+
8
+ let (:amount_cents) { 1234578 }
9
+ let (:id) { '91ac96c0ffc9577ecb634ad726b1874e' }
10
+ let (:invoice_id) { '2d1bd4f93a1b9ed034e36783adb29bed' }
11
+ let (:merchant_notes) { 'foo' }
12
+ let (:shipper) { 'shipper name' }
13
+ let (:shipped_at) { '2016-11-11T00:00:00-06:00' }
14
+ let (:delivered_at) { '2016-11-11T00:00:00-06:00' }
15
+ let (:tracking_number) { '1234abcd' }
16
+ let (:shipment) do
17
+ Apruve::Shipment.new(
18
+ amount_cents: amount_cents,
19
+ merchant_notes: merchant_notes,
20
+ id: id,
21
+ invoice_id: invoice_id,
22
+ shipper: shipper,
23
+ shipped_at: shipped_at,
24
+ delivered_at: delivered_at,
25
+ tracking_number: tracking_number,
26
+ )
27
+ end
28
+ subject { shipment }
29
+
30
+ it { should respond_to(:id) }
31
+ it { should respond_to(:invoice_id) }
32
+ it { should respond_to(:amount_cents) }
33
+ it { should respond_to(:currency) }
34
+ it { should respond_to(:shipper) }
35
+ it { should respond_to(:tracking_number) }
36
+ it { should respond_to(:shipped_at) }
37
+ it { should respond_to(:delivered_at) }
38
+ it { should respond_to(:merchant_notes) }
39
+ it { should respond_to(:invoice_items) }
40
+
41
+ describe '#to_json' do
42
+ let(:expected) do
43
+ '{"amount_cents":1234578,"merchant_notes":"foo","id":"91ac96c0ffc9577ecb634ad726b1874e","invoice_id":"2d1bd4f93a1b9ed034e36783adb29bed","shipper":"shipper name","shipped_at":"2016-11-11T00:00:00-06:00","delivered_at":"2016-11-11T00:00:00-06:00","tracking_number":"1234abcd","invoice_items":[],"currency":"USD"}'
44
+ end
45
+ its(:to_json) { should eq expected }
46
+ end
47
+
48
+ describe '#validate' do
49
+ describe 'no errors' do
50
+ it 'should not raise' do
51
+ expect { shipment.validate }.not_to raise_error
52
+ end
53
+ end
54
+ describe 'errors' do
55
+ before :each do
56
+ shipment.invoice_id = nil
57
+ end
58
+ it 'should raise on no invoice_id' do
59
+ expect { shipment.validate }.to raise_error(Apruve::ValidationError, '["invoice_id must be set"]')
60
+ end
61
+ end
62
+ end
63
+
64
+ describe '#find' do
65
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
66
+ let (:invoice_id) { '91ac96c0ffc9577ecb634ad726b1874e' }
67
+ describe 'success' do
68
+ let! (:stubs) do
69
+ faraday_stubs do |stub|
70
+ stub.get("/api/v4/invoices/#{invoice_id}/shipments/#{id}") { [200, {}, '{}'] }
71
+ end
72
+ end
73
+ it 'should do a get' do
74
+ Apruve::Shipment.find(invoice_id, id)
75
+ stubs.verify_stubbed_calls
76
+ end
77
+ end
78
+
79
+ describe 'not found' do
80
+ let! (:stubs) do
81
+ faraday_stubs do |stub|
82
+ stub.get("/api/v4/invoices/#{invoice_id}/shipments/#{id}"){ [404, {}, 'Not Found'] }
83
+ end
84
+ end
85
+ it 'should raise' do
86
+ expect { Apruve::Shipment.find(invoice_id, id) }.to raise_error(Apruve::NotFound)
87
+ stubs.verify_stubbed_calls
88
+ end
89
+ end
90
+ end
91
+
92
+ describe '#save' do
93
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
94
+ let (:invoice_id) { '91ac96c0ffc9577ecb634ad726b1874e' }
95
+ let (:api_url) { Faker::Internet.url }
96
+ let (:view_url) { Faker::Internet.url }
97
+ let (:response) do
98
+ {
99
+ id: id,
100
+ invoice_id: invoice_id,
101
+ api_url: api_url,
102
+ view_url: view_url
103
+ }
104
+ end
105
+ describe 'success' do
106
+ let! (:stubs) do
107
+ faraday_stubs do |stub|
108
+ stub.post(
109
+ "/api/v4/invoices/#{invoice_id}/shipments",
110
+ shipment.to_json,
111
+ ) { [200, {}, response.to_json] }
112
+ end
113
+ end
114
+ it 'should do a post' do
115
+ shipment.save!
116
+ expect(shipment.id).to eq id
117
+ stubs.verify_stubbed_calls
118
+ end
119
+ end
120
+
121
+ describe 'invoice request not found' do
122
+ let! (:stubs) do
123
+ faraday_stubs do |stub|
124
+ stub.post(
125
+ "/api/v4/invoices/#{invoice_id}/shipments",
126
+ shipment.to_json,
127
+ ) { [404, {}, 'Not Found'] }
128
+ end
129
+ end
130
+ it 'should raise' do
131
+ expect { shipment.save! }.to raise_error(Apruve::NotFound)
132
+ stubs.verify_stubbed_calls
133
+ end
134
+ end
135
+ end
136
+
137
+ describe '#update' do
138
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
139
+ let (:api_url) { Faker::Internet.url }
140
+ let (:view_url) { Faker::Internet.url }
141
+ let (:response) do
142
+ {
143
+ id: id,
144
+ api_url: api_url,
145
+ view_url: view_url
146
+ }
147
+ end
148
+ let (:invoice) { Apruve::Shipment.new({id: id, invoice_id: invoice_id, amount_cents: amount_cents})}
149
+ describe 'success' do
150
+ let! (:stubs) do
151
+ faraday_stubs do |stub|
152
+ stub.patch("/api/v4/invoices/#{invoice_id}/shipments/#{id}", shipment.to_json) { [200, {}, response.to_json] }
153
+ end
154
+ end
155
+ it 'should do a patch' do
156
+ shipment.update!
157
+ stubs.verify_stubbed_calls
158
+ end
159
+ end
160
+
161
+ describe 'shipment request not found' do
162
+ let! (:stubs) do
163
+ faraday_stubs do |stub|
164
+ stub.patch("/api/v4/invoices/#{invoice_id}/shipments/#{id}", shipment.to_json) { [404, {}, 'Not Found'] }
165
+ end
166
+ end
167
+ it 'should raise' do
168
+ expect { shipment.update! }.to raise_error(Apruve::NotFound)
169
+ stubs.verify_stubbed_calls
170
+ end
171
+ end
172
+ end
173
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apruve
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Apruve, Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-12 00:00:00.000000000 Z
12
+ date: 2016-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -114,6 +114,7 @@ files:
114
114
  - lib/apruve/resources/merchant.rb
115
115
  - lib/apruve/resources/order.rb
116
116
  - lib/apruve/resources/order_item.rb
117
+ - lib/apruve/resources/shipment.rb
117
118
  - lib/apruve/resources/subscription.rb
118
119
  - lib/apruve/resources/subscription_adjustment.rb
119
120
  - lib/apruve/resources/validation_error.rb
@@ -130,6 +131,7 @@ files:
130
131
  - spec/apruve/resources/merchant_spec.rb
131
132
  - spec/apruve/resources/order_item_spec.rb
132
133
  - spec/apruve/resources/order_spec.rb
134
+ - spec/apruve/resources/shipment_spec.rb
133
135
  - spec/apruve/resources/subscription_adjustment_spec.rb
134
136
  - spec/apruve/resources/subscription_spec.rb
135
137
  - spec/apruve/resources/webhook_endpoint_spec.rb
@@ -168,9 +170,9 @@ test_files:
168
170
  - spec/apruve/resources/merchant_spec.rb
169
171
  - spec/apruve/resources/order_item_spec.rb
170
172
  - spec/apruve/resources/order_spec.rb
173
+ - spec/apruve/resources/shipment_spec.rb
171
174
  - spec/apruve/resources/subscription_adjustment_spec.rb
172
175
  - spec/apruve/resources/subscription_spec.rb
173
176
  - spec/apruve/resources/webhook_endpoint_spec.rb
174
177
  - spec/apruve/response/apruve_exception_middleware_spec.rb
175
178
  - spec/spec_helper.rb
176
- has_rdoc: