apruve 1.0.1 → 1.1.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
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: