stripe-ruby-mock 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  In your gemfile:
10
10
 
11
- gem 'stripe-ruby-mock', '~> 2.0.4', :require => 'stripe_mock'
11
+ gem 'stripe-ruby-mock', '~> 2.0.5', :require => 'stripe_mock'
12
12
 
13
13
  ## Features
14
14
 
@@ -25,7 +25,7 @@ In your gemfile:
25
25
 
26
26
  ## Description
27
27
 
28
- ** *WARNING: This library does not cover all Stripe API endpoints. If you need one that's missing, please create an issue for it.* **
28
+ ** *WARNING: This library does not cover all Stripe API endpoints. If you need one that's missing, please create an issue for it, or [see this wiki page](https://github.com/rebelidealist/stripe-ruby-mock/wiki/Implementing-a-New-Behavior) if you're interested in contributing* **
29
29
 
30
30
  At its core, this library overrides [stripe-ruby's](https://github.com/stripe/stripe-ruby)
31
31
  request method to skip all http calls and
@@ -353,11 +353,7 @@ StripeMock.global_id_prefix = 'my_app_'
353
353
 
354
354
  ## Developing stripe-ruby-mock
355
355
 
356
- To run the tests:
357
-
358
- $ bundle install
359
- $ bundle exec rspec
360
- $ bundle exec rspec -t live # Runs certain tests against Stripe's servers
356
+ [Please see this wiki page](https://github.com/rebelidealist/stripe-ruby-mock/wiki/Implementing-a-New-Behavior)
361
357
 
362
358
  Patches are welcome and greatly appreciated! If you're contributing to fix a problem,
363
359
  be sure to write tests that illustrate the problem being fixed.
data/lib/stripe_mock.rb CHANGED
@@ -50,6 +50,7 @@ require 'stripe_mock/request_handlers/invoices.rb'
50
50
  require 'stripe_mock/request_handlers/invoice_items.rb'
51
51
  require 'stripe_mock/request_handlers/plans.rb'
52
52
  require 'stripe_mock/request_handlers/recipients.rb'
53
+ require 'stripe_mock/request_handlers/transfers.rb'
53
54
  require 'stripe_mock/request_handlers/subscriptions.rb'
54
55
  require 'stripe_mock/request_handlers/tokens.rb'
55
56
  require 'stripe_mock/instance'
@@ -379,7 +379,8 @@ module StripeMock
379
379
  :livemode => false,
380
380
  :currency => "usd",
381
381
  :object => "transfer",
382
- :date => 1304114826
382
+ :date => 1304114826,
383
+ :description => "Transfer description",
383
384
  }.merge(params)
384
385
  end
385
386
 
@@ -28,11 +28,12 @@ module StripeMock
28
28
  include StripeMock::RequestHandlers::InvoiceItems
29
29
  include StripeMock::RequestHandlers::Plans
30
30
  include StripeMock::RequestHandlers::Recipients
31
+ include StripeMock::RequestHandlers::Transfers
31
32
  include StripeMock::RequestHandlers::Tokens
32
33
 
33
34
 
34
35
  attr_reader :bank_tokens, :charges, :coupons, :customers, :events,
35
- :invoices, :invoice_items, :plans, :recipients, :subscriptions
36
+ :invoices, :invoice_items, :plans, :recipients, :transfers, :subscriptions
36
37
 
37
38
  attr_accessor :error_queue, :debug
38
39
 
@@ -47,6 +48,7 @@ module StripeMock
47
48
  @invoice_items = {}
48
49
  @plans = {}
49
50
  @recipients = {}
51
+ @transfers = {}
50
52
  @subscriptions = {}
51
53
 
52
54
  @debug = false
@@ -11,7 +11,7 @@ module StripeMock
11
11
 
12
12
  start_time = options[:current_period_start] || Time.now.utc.to_i
13
13
  params = { plan: plan, customer: cus[:id], current_period_start: start_time }
14
- params.merge! options.select {|k,v| k =~ /application_fee_percent|quantity|metadata/}
14
+ params.merge! options.select {|k,v| k =~ /application_fee_percent|quantity|metadata|tax_percent/}
15
15
  # TODO: Implement coupon logic
16
16
 
17
17
  if (plan[:trial_period_days].nil? && options[:trial_end].nil?) || options[:trial_end] == "now"
@@ -0,0 +1,54 @@
1
+ module StripeMock
2
+ module RequestHandlers
3
+ module Transfers
4
+
5
+ def Transfers.included(klass)
6
+ klass.add_handler 'post /v1/transfers', :new_transfer
7
+ klass.add_handler 'get /v1/transfers', :get_all_transfers
8
+ klass.add_handler 'get /v1/transfers/(.*)', :get_transfer
9
+ klass.add_handler 'post /v1/transfers/(.*)/cancel', :cancel_transfer
10
+ end
11
+
12
+ def get_all_transfers(route, method_url, params, headers)
13
+ if recipient = params[:recipient]
14
+ assert_existence :recipient, recipient, recipients[recipient]
15
+ end
16
+
17
+ _transfers = transfers.each_with_object([]) do |(_, transfer), array|
18
+ if recipient
19
+ array << transfer if transfer[:recipient] == recipient
20
+ else
21
+ array << transfer
22
+ end
23
+ end
24
+
25
+ if params[:limit]
26
+ _transfers = _transfers.first([params[:limit], _transfers.size].min)
27
+ end
28
+
29
+ _transfers
30
+ end
31
+
32
+ def new_transfer(route, method_url, params, headers)
33
+ id = new_id('tr')
34
+ if params[:bank_account]
35
+ params[:account] = get_bank_by_token(params.delete(:bank_account))
36
+ end
37
+ transfers[id] = Data.mock_transfer(params.merge :id => id)
38
+ end
39
+
40
+ def get_transfer(route, method_url, params, headers)
41
+ route =~ method_url
42
+ assert_existence :transfer, $1, transfers[$1]
43
+ transfers[$1] ||= Data.mock_transfer(:id => $1)
44
+ end
45
+
46
+ def cancel_transfer(route, method_url, params, headers)
47
+ route =~ method_url
48
+ assert_existence :transfer, $1, transfers[$1]
49
+ t = transfers[$1] ||= Data.mock_transfer(:id => $1)
50
+ t.merge!({:status => "canceled"})
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,4 +1,4 @@
1
1
  module StripeMock
2
2
  # stripe-ruby-mock version
3
- VERSION = "2.0.4"
3
+ VERSION = "2.0.5"
4
4
  end
@@ -34,7 +34,7 @@ shared_examples 'Customer Subscriptions' do
34
34
 
35
35
  end
36
36
 
37
- it "correctly sets quantity and application_fee_percent" do
37
+ it "correctly sets quantity, application_fee_percent and tax_percent" do
38
38
  Stripe::Plan.create(
39
39
  :amount => 2500,
40
40
  :interval => 'month',
@@ -46,9 +46,10 @@ shared_examples 'Customer Subscriptions' do
46
46
  customer = Stripe::Customer.create(id: 'test_customer_sub', card: gen_card_tk)
47
47
 
48
48
  subscription = customer.subscriptions.create({
49
- :plan => "silver", quantity: 2, application_fee_percent: 10})
49
+ :plan => "silver", quantity: 2, application_fee_percent: 10, tax_percent: 20})
50
50
  expect(subscription.quantity).to eq(2)
51
51
  expect(subscription.application_fee_percent).to eq(10)
52
+ expect(subscription.tax_percent).to eq(20)
52
53
  end
53
54
 
54
55
  it "adds additional subscription to customer with existing subscription" do
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples 'Transfer API' do
4
+
5
+ it "creates a stripe transfer" do
6
+ recipient = Stripe::Recipient.create(type: "corporation", name: "MyCo")
7
+ transfer = Stripe::Transfer.create(amount: "100", currency: "usd", recipient: recipient.id)
8
+
9
+ expect(transfer.id).to match /^test_tr/
10
+ expect(transfer.amount).to eq('100')
11
+ expect(transfer.currency).to eq('usd')
12
+ expect(transfer.recipient).to eq recipient.id
13
+ end
14
+
15
+ describe "listing transfers" do
16
+ let(:recipient) { Stripe::Recipient.create(type: "corporation", name: "MyCo") }
17
+
18
+ before do
19
+ 3.times do
20
+ Stripe::Transfer.create(amount: "100", currency: "usd", recipient: recipient.id)
21
+ end
22
+ end
23
+
24
+ it "without params retrieves all tripe transfers" do
25
+ expect(Stripe::Transfer.all.count).to eq(3)
26
+ end
27
+
28
+ it "accepts a limit param" do
29
+ expect(Stripe::Transfer.all(limit: 2).count).to eq(2)
30
+ end
31
+
32
+ it "filters the search to a specific recipient" do
33
+ r2 = Stripe::Recipient.create(type: "corporation", name: "MyCo")
34
+ Stripe::Transfer.create(amount: "100", currency: "usd", recipient: r2.id)
35
+
36
+ expect(Stripe::Transfer.all(recipient: r2.id).count).to eq(1)
37
+ end
38
+ end
39
+
40
+
41
+ it "retrieves a stripe transfer" do
42
+ original = Stripe::Transfer.create(amount: "100", currency: "usd")
43
+ transfer = Stripe::Transfer.retrieve(original.id)
44
+
45
+ expect(transfer.id).to eq(original.id)
46
+ expect(transfer.amount).to eq(original.amount)
47
+ expect(transfer.currency).to eq(original.currency)
48
+ expect(transfer.recipient).to eq(original.recipient)
49
+ end
50
+
51
+ it "canceles a stripe transfer " do
52
+ original = Stripe::Transfer.create(amount: "100", currency: "usd")
53
+ res, api_key = Stripe.request(:post, "/v1/transfers/#{original.id}/cancel", 'api_key', {})
54
+
55
+ expect(res[:status]).to eq("canceled")
56
+ end
57
+
58
+ it "cannot retrieve a transfer that doesn't exist" do
59
+ expect { Stripe::Transfer.retrieve('nope') }.to raise_error {|e|
60
+ expect(e).to be_a Stripe::InvalidRequestError
61
+ expect(e.param).to eq('transfer')
62
+ expect(e.http_status).to eq(404)
63
+ }
64
+ end
65
+
66
+ end
@@ -17,6 +17,7 @@ def it_behaves_like_stripe(&block)
17
17
  it_behaves_like 'Plan API', &block
18
18
  it_behaves_like 'Recipient API', &block
19
19
  it_behaves_like 'Refund API', &block
20
+ it_behaves_like 'Transfer API', &block
20
21
  it_behaves_like 'Stripe Error Mocking', &block
21
22
  it_behaves_like 'Customer Subscriptions', &block
22
23
  it_behaves_like 'Webhook Events API', &block
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe-ruby-mock
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-17 00:00:00.000000000 Z
12
+ date: 2015-02-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: stripe
@@ -161,6 +161,7 @@ files:
161
161
  - lib/stripe_mock/request_handlers/recipients.rb
162
162
  - lib/stripe_mock/request_handlers/subscriptions.rb
163
163
  - lib/stripe_mock/request_handlers/tokens.rb
164
+ - lib/stripe_mock/request_handlers/transfers.rb
164
165
  - lib/stripe_mock/request_handlers/validators/param_validators.rb
165
166
  - lib/stripe_mock/server.rb
166
167
  - lib/stripe_mock/test_strategies/base.rb
@@ -232,6 +233,7 @@ files:
232
233
  - spec/shared_stripe_examples/recipient_examples.rb
233
234
  - spec/shared_stripe_examples/refund_examples.rb
234
235
  - spec/shared_stripe_examples/subscription_examples.rb
236
+ - spec/shared_stripe_examples/transfer_examples.rb
235
237
  - spec/shared_stripe_examples/validation_examples.rb
236
238
  - spec/shared_stripe_examples/webhook_event_examples.rb
237
239
  - spec/spec_helper.rb
@@ -290,6 +292,7 @@ test_files:
290
292
  - spec/shared_stripe_examples/recipient_examples.rb
291
293
  - spec/shared_stripe_examples/refund_examples.rb
292
294
  - spec/shared_stripe_examples/subscription_examples.rb
295
+ - spec/shared_stripe_examples/transfer_examples.rb
293
296
  - spec/shared_stripe_examples/validation_examples.rb
294
297
  - spec/shared_stripe_examples/webhook_event_examples.rb
295
298
  - spec/spec_helper.rb