apruve 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: