apruve 0.9.0

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.
@@ -0,0 +1,141 @@
1
+ require 'spec_helper'
2
+
3
+ describe Apruve::Subscription do
4
+ before :each do
5
+ Apruve.configure('f5fbe71d68772d1f562ed6f598b995b3', 'local')
6
+ end
7
+
8
+ let (:id) { '89ea2488fe0a5c7bb38aa7f9b088874a' }
9
+ let (:title) { 'A title' }
10
+ let (:amount_cents) { 12340 }
11
+ let (:price_ea_cents) { 1234 }
12
+ let (:quantity) { 10 }
13
+ let (:notes) { 'notes from merchant' }
14
+ let (:payment_request_id) { '9999' }
15
+ let (:api_url) { Faker::Internet.url }
16
+ let (:subscription) do
17
+ Apruve::Subscription.new(
18
+ id: id,
19
+ title: title,
20
+ payment_request_id: payment_request_id,
21
+ amount_cents: amount_cents,
22
+ price_ea_cents: price_ea_cents,
23
+ quantity: quantity
24
+ )
25
+ end
26
+ subject { subscription }
27
+
28
+ # from line_item
29
+ it { should respond_to(:title) }
30
+ it { should respond_to(:amount_cents) }
31
+ it { should respond_to(:price_ea_cents) }
32
+ it { should respond_to(:quantity) }
33
+ it { should respond_to(:description) }
34
+ it { should respond_to(:variant_info) }
35
+ it { should respond_to(:sku) }
36
+ it { should respond_to(:vendor) }
37
+ it { should respond_to(:view_product_url) }
38
+ it { should respond_to(:plan_code) }
39
+
40
+ describe '#find' do
41
+ describe 'success' do
42
+ let! (:stubs) do
43
+ faraday_stubs do |stub|
44
+ stub.get("/api/v3/subscriptions/#{id}") { [200, {}, '{}'] }
45
+ end
46
+ end
47
+ it 'should do a get' do
48
+ Apruve::Subscription.find(id)
49
+ stubs.verify_stubbed_calls
50
+ end
51
+ end
52
+
53
+ describe 'not found' do
54
+ let! (:stubs) do
55
+ faraday_stubs do |stub|
56
+ stub.get("/api/v3/subscriptions/#{id}") { [404, {}, 'Not Found'] }
57
+ end
58
+ end
59
+ it 'should raise' do
60
+ expect { Apruve::Subscription.find(id) }.to raise_error(Apruve::NotFound)
61
+ stubs.verify_stubbed_calls
62
+ end
63
+ end
64
+ end
65
+
66
+ describe '#update!' do
67
+ let (:response) do
68
+ {
69
+ id: id,
70
+ api_url: api_url
71
+ }
72
+ end
73
+ describe 'success' do
74
+ let! (:stubs) do
75
+ faraday_stubs do |stub|
76
+ stub.put(
77
+ "/api/v3/subscriptions/#{id}",
78
+ subscription.to_json,
79
+ ) { [200, {}, response.to_json] }
80
+ end
81
+ end
82
+ it 'should do a post' do
83
+ expect(subscription.update!).to be_nil
84
+ stubs.verify_stubbed_calls
85
+ end
86
+ end
87
+
88
+ describe 'subscription not found' do
89
+ let! (:stubs) do
90
+ faraday_stubs do |stub|
91
+ stub.put(
92
+ "/api/v3/subscriptions/#{id}",
93
+ subscription.to_json,
94
+ ) { [404, {}, 'Not Found'] }
95
+ end
96
+ end
97
+ it 'should raise' do
98
+ expect { subscription.update! }.to raise_error(Apruve::NotFound)
99
+ stubs.verify_stubbed_calls
100
+ end
101
+ end
102
+ end
103
+
104
+ describe '#cancel!' do
105
+ let (:canceled_at) { Time.now }
106
+ let (:end_at) { Time.now }
107
+ let (:response) do
108
+ {
109
+ id: id,
110
+ api_url: api_url,
111
+ canceled_at: canceled_at,
112
+ end_at: end_at
113
+ }
114
+ end
115
+ describe 'success' do
116
+ let! (:stubs) do
117
+ faraday_stubs do |stub|
118
+ stub.post("/api/v3/subscriptions/#{id}/cancel") { [200, {}, response.to_json] }
119
+ end
120
+ end
121
+ it 'should do a post' do
122
+ subscription.cancel!
123
+ expect(subscription.canceled_at.to_i).to eq canceled_at.to_i
124
+ expect(subscription.end_at.to_i).to eq end_at.to_i
125
+ stubs.verify_stubbed_calls
126
+ end
127
+ end
128
+
129
+ describe 'subscription not found' do
130
+ let! (:stubs) do
131
+ faraday_stubs do |stub|
132
+ stub.post("/api/v3/subscriptions/#{id}/cancel") { [404, {}, 'Not Found'] }
133
+ end
134
+ end
135
+ it 'should raise' do
136
+ expect { subscription.cancel! }.to raise_error(Apruve::NotFound)
137
+ stubs.verify_stubbed_calls
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+ require 'faraday'
3
+
4
+ describe Faraday::Response::RaiseApruveError, :type => :response do
5
+ context 'when used' do
6
+ let(:raise_server_error) { described_class.new }
7
+ end
8
+
9
+ context 'integration test' do
10
+
11
+ before(:each) do
12
+ Faraday::Response.register_middleware :handle_apruve_errors => lambda { described_class }
13
+ VCR.turn_off!
14
+ end
15
+
16
+ after(:each) do
17
+ VCR.turn_on!
18
+ end
19
+
20
+ let(:stubs) { Faraday::Adapter::Test::Stubs.new }
21
+ let(:connection) do
22
+ Faraday::Connection.new do |builder|
23
+ builder.response :handle_apruve_errors
24
+ builder.response :json
25
+ builder.adapter :test, stubs
26
+ end
27
+ end
28
+
29
+ it 'should raise exceptions on bad request errors' do
30
+ stubs.get('/error') {
31
+ [400, {}, JSON.dump({
32
+ :status => 'Bad Request',
33
+ :status_code => 400
34
+ })]
35
+ }
36
+
37
+ lambda {
38
+ connection.get('/error')
39
+ }.should raise_error(Apruve::BadRequest)
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ require 'apruve'
2
+ # require File.join(File.dirname(__FILE__), '../lib', 'apruve.rb')
3
+
4
+ Dir[File.dirname(__FILE__) + '../lib/**/*.rb'].each do |f|
5
+ puts "requiring #{f.to_s}"
6
+ require f
7
+ end
8
+
9
+ require 'rubygems'
10
+ require 'faker'
11
+ require 'vcr'
12
+
13
+ RSpec.configure do |config|
14
+ # config.include Rack::Test::Methods
15
+ end
16
+
17
+ def faraday_stubs
18
+ stubs = Faraday::Adapter::Test::Stubs.new do |stub|
19
+ yield(stub)
20
+ end
21
+
22
+ conn = Faraday.new do |builder|
23
+ # Order is kinda important here...
24
+ builder.response :raise_error # raise exceptions on 40x, 50x responses
25
+ builder.use Apruve::FaradayErrorHandler
26
+ builder.request :json
27
+ builder.response :handle_apruve_errors
28
+ builder.response :apruve_json_parser
29
+ builder.adapter :test, stubs
30
+ end
31
+ conn.path_prefix = "/api/#{Apruve.config[:version]}"
32
+ Apruve.client.conn = conn
33
+ stubs
34
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: apruve
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Apruve, Inc.
9
+ - Neal Tovsen
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2014-05-12 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '1.5'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '1.5'
31
+ - !ruby/object:Gem::Dependency
32
+ name: rake
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: faraday
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.6
55
+ - - <=
56
+ - !ruby/object:Gem::Version
57
+ version: 0.9.0
58
+ type: :runtime
59
+ prerelease: false
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 0.8.6
66
+ - - <=
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday_middleware
71
+ requirement: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 0.9.0
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ version: 0.9.0
85
+ - !ruby/object:Gem::Dependency
86
+ name: addressable
87
+ requirement: !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ~>
91
+ - !ruby/object:Gem::Version
92
+ version: 2.3.5
93
+ type: :runtime
94
+ prerelease: false
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ version: 2.3.5
101
+ description: Easily integrate the Apruve B2B payment network into your ruby-based
102
+ application.
103
+ email:
104
+ - support@apruve.com
105
+ executables: []
106
+ extensions: []
107
+ extra_rdoc_files: []
108
+ files:
109
+ - .gitignore
110
+ - .rspec
111
+ - Gemfile
112
+ - Gemfile.lock
113
+ - LICENSE.txt
114
+ - README.md
115
+ - Rakefile
116
+ - apruve.gemspec
117
+ - lib/apruve.rb
118
+ - lib/apruve/client.rb
119
+ - lib/apruve/error.rb
120
+ - lib/apruve/faraday_error_handler.rb
121
+ - lib/apruve/resources.rb
122
+ - lib/apruve/resources/apruve_object.rb
123
+ - lib/apruve/resources/line_item.rb
124
+ - lib/apruve/resources/payment.rb
125
+ - lib/apruve/resources/payment_item.rb
126
+ - lib/apruve/resources/payment_request.rb
127
+ - lib/apruve/resources/subscription.rb
128
+ - lib/apruve/resources/subscription_adjustment.rb
129
+ - lib/apruve/resources/validation_error.rb
130
+ - lib/apruve/response/apruve_exception_middleware.rb
131
+ - lib/apruve/response/apruve_parse_json.rb
132
+ - lib/apruve/utils.rb
133
+ - lib/apruve/version.rb
134
+ - spec/apruve/apruve_spec.rb
135
+ - spec/apruve/client_spec.rb
136
+ - spec/apruve/config_spec.rb
137
+ - spec/apruve/resources/line_item_spec.rb
138
+ - spec/apruve/resources/payment_item_spec.rb
139
+ - spec/apruve/resources/payment_request_spec.rb
140
+ - spec/apruve/resources/payment_spec.rb
141
+ - spec/apruve/resources/subscription_spec.rb
142
+ - spec/apruve/response/apruve_exception_middleware_spec.rb
143
+ - spec/spec_helper.rb
144
+ homepage: https://www.apruve.com
145
+ licenses:
146
+ - MIT
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ requirements: []
164
+ rubyforge_project:
165
+ rubygems_version: 1.8.23
166
+ signing_key:
167
+ specification_version: 3
168
+ summary: Helper library for integrating Apruve into a ruby app.
169
+ test_files:
170
+ - spec/apruve/apruve_spec.rb
171
+ - spec/apruve/client_spec.rb
172
+ - spec/apruve/config_spec.rb
173
+ - spec/apruve/resources/line_item_spec.rb
174
+ - spec/apruve/resources/payment_item_spec.rb
175
+ - spec/apruve/resources/payment_request_spec.rb
176
+ - spec/apruve/resources/payment_spec.rb
177
+ - spec/apruve/resources/subscription_spec.rb
178
+ - spec/apruve/response/apruve_exception_middleware_spec.rb
179
+ - spec/spec_helper.rb
180
+ has_rdoc: