stripe 1.8.8 → 1.9.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,13 @@
1
+ === 1.9.9 2013-12-02
2
+
3
+ * Add ApplicationFee API resource
4
+
5
+ === 1.8.9 2013-11-14
6
+
7
+ * 2 bugfixes:
8
+ * Fix gemspec dependencies so the gem doesn't break for Ruby 1.8 users
9
+ * Fix api_resource_test to not use returns as a way of testing rescue behavior
10
+
1
11
  === 1.8.8 2013-10-3
2
12
 
3
13
  * Add support for metadata API
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.8
1
+ 1.9.9
@@ -36,6 +36,7 @@ require 'stripe/event'
36
36
  require 'stripe/transfer'
37
37
  require 'stripe/recipient'
38
38
  require 'stripe/card'
39
+ require 'stripe/application_fee'
39
40
 
40
41
  # Errors
41
42
  require 'stripe/errors/stripe_error'
@@ -0,0 +1,21 @@
1
+ module Stripe
2
+ class ApplicationFee < APIResource
3
+ include Stripe::APIOperations::List
4
+
5
+ def self.url
6
+ '/v1/application_fees'
7
+ end
8
+
9
+ def refund(params={})
10
+ response, api_key = Stripe.request(:post, refund_url, @api_key, params)
11
+ refresh_from(response, api_key)
12
+ self
13
+ end
14
+
15
+ private
16
+
17
+ def refund_url
18
+ url + '/refund'
19
+ end
20
+ end
21
+ end
@@ -29,7 +29,8 @@ module Stripe
29
29
  'transfer' => Transfer,
30
30
  'recipient' => Recipient,
31
31
  'card' => Card,
32
- 'list' => ListObject
32
+ 'list' => ListObject,
33
+ 'application_fee' => ApplicationFee
33
34
  }
34
35
  end
35
36
 
@@ -1,3 +1,3 @@
1
1
  module Stripe
2
- VERSION = '1.8.8'
2
+ VERSION = '1.9.9'
3
3
  end
@@ -12,6 +12,7 @@ spec = Gem::Specification.new do |s|
12
12
  s.homepage = 'https://stripe.com/api'
13
13
 
14
14
  s.add_dependency('rest-client', '~> 1.4')
15
+ s.add_dependency('mime-types', '~> 1.25')
15
16
  s.add_dependency('multi_json', '>= 1.0.4', '< 2')
16
17
 
17
18
  s.add_development_dependency('mocha', '~> 0.13.2')
@@ -5,12 +5,12 @@ module Stripe
5
5
  class ApiResourceTest < Test::Unit::TestCase
6
6
  should "creating a new APIResource should not fetch over the network" do
7
7
  @mock.expects(:get).never
8
- c = Stripe::Customer.new("someid")
8
+ Stripe::Customer.new("someid")
9
9
  end
10
10
 
11
11
  should "creating a new APIResource from a hash should not fetch over the network" do
12
12
  @mock.expects(:get).never
13
- c = Stripe::Customer.construct_from({
13
+ Stripe::Customer.construct_from({
14
14
  :id => "somecustomer",
15
15
  :card => {:id => "somecard", :object => "card"},
16
16
  :object => "customer"
@@ -185,14 +185,14 @@ module Stripe
185
185
  (url =~ %r{^#{Stripe.api_base}/v1/charges?} &&
186
186
  query.keys.sort == ['offset', 'sad'])
187
187
  end.returns(test_response({ :count => 1, :data => [test_charge] }))
188
- c = Stripe::Charge.all(:count => nil, :offset => 5, :sad => false)
188
+ Stripe::Charge.all(:count => nil, :offset => 5, :sad => false)
189
189
 
190
190
  @mock.expects(:post).with do |url, api_key, params|
191
- url == "#{Stripe.api_base}/v1/charges" &&
192
- api_key.nil? &&
191
+ url == "#{Stripe.api_base}/v1/charges" &&
192
+ api_key.nil? &&
193
193
  CGI.parse(params) == { 'amount' => ['50'], 'currency' => ['usd'] }
194
194
  end.returns(test_response({ :count => 1, :data => [test_charge] }))
195
- c = Stripe::Charge.create(:amount => 50, :currency => 'usd', :card => { :number => nil })
195
+ Stripe::Charge.create(:amount => 50, :currency => 'usd', :card => { :number => nil })
196
196
  end
197
197
 
198
198
  should "requesting with a unicode ID should result in a request" do
@@ -210,7 +210,7 @@ module Stripe
210
210
  should "making a GET request with parameters should have a query string and no body" do
211
211
  params = { :limit => 1 }
212
212
  @mock.expects(:get).once.with("#{Stripe.api_base}/v1/charges?limit=1", nil, nil).returns(test_response([test_charge]))
213
- c = Stripe::Charge.all(params)
213
+ Stripe::Charge.all(params)
214
214
  end
215
215
 
216
216
  should "making a POST request with parameters should have a body and no query string" do
@@ -218,7 +218,7 @@ module Stripe
218
218
  @mock.expects(:post).once.with do |url, get, post|
219
219
  get.nil? && CGI.parse(post) == {'amount' => ['100'], 'currency' => ['usd'], 'card' => ['sc_token']}
220
220
  end.returns(test_response(test_charge))
221
- c = Stripe::Charge.create(params)
221
+ Stripe::Charge.create(params)
222
222
  end
223
223
 
224
224
  should "loading an object should issue a GET request" do
@@ -294,50 +294,53 @@ module Stripe
294
294
  response = test_response(test_missing_id_error, 404)
295
295
  @mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
296
296
 
297
+ rescued = false
297
298
  begin
298
299
  Stripe::Customer.new("test_customer").refresh
299
300
  assert false #shouldn't get here either
300
301
  rescue Stripe::InvalidRequestError => e # we don't use assert_raises because we want to examine e
302
+ rescued = true
301
303
  assert e.kind_of? Stripe::InvalidRequestError
302
304
  assert_equal "id", e.param
303
305
  assert_equal "Missing id", e.message
304
- return
305
306
  end
306
307
 
307
- assert false #shouldn't get here
308
+ assert_equal true, rescued
308
309
  end
309
310
 
310
311
  should "5XXs should raise an APIError" do
311
312
  response = test_response(test_api_error, 500)
312
313
  @mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 500))
313
314
 
315
+ rescued = false
314
316
  begin
315
317
  Stripe::Customer.new("test_customer").refresh
316
318
  assert false #shouldn't get here either
317
319
  rescue Stripe::APIError => e # we don't use assert_raises because we want to examine e
320
+ rescued = true
318
321
  assert e.kind_of? Stripe::APIError
319
- return
320
322
  end
321
323
 
322
- assert false #shouldn't get here
324
+ assert_equal true, rescued
323
325
  end
324
326
 
325
327
  should "402s should raise a CardError" do
326
328
  response = test_response(test_invalid_exp_year_error, 402)
327
329
  @mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 402))
328
330
 
331
+ rescued = false
329
332
  begin
330
333
  Stripe::Customer.new("test_customer").refresh
331
334
  assert false #shouldn't get here either
332
335
  rescue Stripe::CardError => e # we don't use assert_raises because we want to examine e
336
+ rescued = true
333
337
  assert e.kind_of? Stripe::CardError
334
338
  assert_equal "invalid_expiry_year", e.code
335
339
  assert_equal "exp_year", e.param
336
340
  assert_equal "Your card's expiration year is invalid", e.message
337
- return
338
341
  end
339
342
 
340
- assert false #shouldn't get here
343
+ assert_equal true, rescued
341
344
  end
342
345
  end
343
346
  end
@@ -0,0 +1,22 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class ApplicationFeeTest < Test::Unit::TestCase
5
+ should "application fees should be listable" do
6
+ @mock.expects(:get).once.returns(test_response(test_application_fee_array))
7
+ fees = Stripe::ApplicationFee.all
8
+ assert fees.data.kind_of? Array
9
+ fees.each do |fee|
10
+ assert fee.kind_of?(Stripe::ApplicationFee)
11
+ end
12
+ end
13
+
14
+ should "application fees should be refundable" do
15
+ @mock.expects(:get).never
16
+ @mock.expects(:post).once.returns(test_response({:id => "fee_test_fee", :refunded => true}))
17
+ fee = Stripe::ApplicationFee.new("test_application_fee")
18
+ fee.refund
19
+ assert fee.refunded
20
+ end
21
+ end
22
+ end
@@ -52,10 +52,10 @@ module Stripe
52
52
  # Not an accurate response, but whatever
53
53
 
54
54
  @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription?at_period_end=true", nil, nil).returns(test_response(test_subscription('silver')))
55
- s = c.cancel_subscription({:at_period_end => 'true'})
55
+ c.cancel_subscription({:at_period_end => 'true'})
56
56
 
57
57
  @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription", nil, nil).returns(test_response(test_subscription('silver')))
58
- s = c.cancel_subscription
58
+ c.cancel_subscription
59
59
  end
60
60
 
61
61
  should "be able to delete a customer's discount" do
@@ -63,7 +63,7 @@ module Stripe
63
63
  c = Stripe::Customer.retrieve("test_customer")
64
64
 
65
65
  @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/discount", nil, nil).returns(test_response(test_delete_discount_response))
66
- s = c.delete_discount
66
+ c.delete_discount
67
67
  assert_equal nil, c.discount
68
68
  end
69
69
  end
@@ -70,6 +70,29 @@ def test_balance_transaction_array
70
70
  }
71
71
  end
72
72
 
73
+ def test_application_fee(params={})
74
+ {
75
+ :refunded => false,
76
+ :amount => 100,
77
+ :application => "ca_test_application",
78
+ :user => "acct_test_user",
79
+ :charge => "ch_test_charge",
80
+ :id => "fee_test_fee",
81
+ :livemode => false,
82
+ :currency => "usd",
83
+ :object => "application_fee",
84
+ :created => 1304114826
85
+ }.merge(params)
86
+ end
87
+
88
+ def test_application_fee_array
89
+ {
90
+ :data => [test_application_fee, test_application_fee, test_application_fee],
91
+ :object => 'list',
92
+ :url => '/v1/application_fees'
93
+ }
94
+ end
95
+
73
96
  def test_customer(params={})
74
97
  {
75
98
  :subscription_history => [],
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.8
4
+ version: 1.9.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-10-18 00:00:00.000000000 Z
13
+ date: 2013-12-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -28,6 +28,22 @@ dependencies:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
30
  version: '1.4'
31
+ - !ruby/object:Gem::Dependency
32
+ name: mime-types
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: '1.25'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.25'
31
47
  - !ruby/object:Gem::Dependency
32
48
  name: multi_json
33
49
  requirement: !ruby/object:Gem::Requirement
@@ -145,6 +161,7 @@ files:
145
161
  - lib/stripe/api_operations/list.rb
146
162
  - lib/stripe/api_operations/update.rb
147
163
  - lib/stripe/api_resource.rb
164
+ - lib/stripe/application_fee.rb
148
165
  - lib/stripe/balance.rb
149
166
  - lib/stripe/balance_transaction.rb
150
167
  - lib/stripe/card.rb
@@ -173,6 +190,7 @@ files:
173
190
  - stripe.gemspec
174
191
  - test/stripe/account_test.rb
175
192
  - test/stripe/api_resource_test.rb
193
+ - test/stripe/application_fee_test.rb
176
194
  - test/stripe/charge_test.rb
177
195
  - test/stripe/coupon_test.rb
178
196
  - test/stripe/customer_test.rb
@@ -208,6 +226,7 @@ summary: Ruby bindings for the Stripe API
208
226
  test_files:
209
227
  - test/stripe/account_test.rb
210
228
  - test/stripe/api_resource_test.rb
229
+ - test/stripe/application_fee_test.rb
211
230
  - test/stripe/charge_test.rb
212
231
  - test/stripe/coupon_test.rb
213
232
  - test/stripe/customer_test.rb