stripe-ruby-mock 1.8.4.6 → 1.8.4.7

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  In your gemfile:
9
9
 
10
- gem 'stripe-ruby-mock', '>= 1.8.4.6'
10
+ gem 'stripe-ruby-mock', '>= 1.8.4.7'
11
11
 
12
12
  ## Features
13
13
 
@@ -26,9 +26,15 @@ module StripeMock
26
26
 
27
27
  customer = customers[$1]
28
28
  assert_existance :customer, $1, customer
29
+
29
30
  plan = plans[ params[:plan] ]
30
31
  assert_existance :plan, params[:plan], plan
31
32
 
33
+ # Ensure customer has card to charge if plan has no trial and is not free
34
+ if customer[:default_card].nil? && plan[:trial_period_days].nil? && plan[:amount] != 0
35
+ raise Stripe::InvalidRequestError.new('You must supply a valid card', nil, 400)
36
+ end
37
+
32
38
  sub = Data.mock_subscription id: new_id('su'), plan: plan, customer: $1
33
39
  customer[:subscription] = sub
34
40
  end
@@ -1,4 +1,4 @@
1
1
  module StripeMock
2
2
  # stripe-ruby-mock version
3
- VERSION = "1.8.4.6"
3
+ VERSION = "1.8.4.7"
4
4
  end
@@ -114,7 +114,7 @@ shared_examples 'Customer API' do
114
114
 
115
115
  it "updates a stripe customer's subscription" do
116
116
  plan = Stripe::Plan.create(id: 'silver')
117
- customer = Stripe::Customer.create(id: 'test_customer_sub')
117
+ customer = Stripe::Customer.create(id: 'test_customer_sub', card: 'tk')
118
118
  sub = customer.update_subscription({ :plan => 'silver' })
119
119
 
120
120
  expect(sub.object).to eq('subscription')
@@ -128,9 +128,52 @@ shared_examples 'Customer API' do
128
128
  expect(customer.subscription.customer).to eq(customer.id)
129
129
  end
130
130
 
131
+ it "throws an error when subscribing a customer with no card" do
132
+ plan = Stripe::Plan.create(id: 'enterprise', amount: 499)
133
+ customer = Stripe::Customer.create(id: 'cardless')
134
+
135
+ expect { customer.update_subscription({ :plan => 'enterprise' }) }.to raise_error {|e|
136
+ expect(e).to be_a Stripe::InvalidRequestError
137
+ expect(e.http_status).to eq(400)
138
+ expect(e.message).to_not be_nil
139
+ }
140
+ end
141
+
142
+ it "subscribes a customer with no card to a free plan" do
143
+ plan = Stripe::Plan.create(id: 'free_tier', amount: 0)
144
+ customer = Stripe::Customer.create(id: 'cardless')
145
+ sub = customer.update_subscription({ :plan => 'free_tier' })
146
+
147
+ expect(sub.object).to eq('subscription')
148
+ expect(sub.plan.id).to eq('free_tier')
149
+ expect(sub.plan.to_hash).to eq(plan.to_hash)
150
+
151
+ customer = Stripe::Customer.retrieve('cardless')
152
+ expect(customer.subscription).to_not be_nil
153
+ expect(customer.subscription.id).to eq(sub.id)
154
+ expect(customer.subscription.plan.id).to eq('free_tier')
155
+ expect(customer.subscription.customer).to eq(customer.id)
156
+ end
157
+
158
+ it "subscribes a customer with no card to a plan with a free trial" do
159
+ plan = Stripe::Plan.create(id: 'trial', amount: 999, trial_period_days: 14)
160
+ customer = Stripe::Customer.create(id: 'cardless')
161
+ sub = customer.update_subscription({ :plan => 'trial' })
162
+
163
+ expect(sub.object).to eq('subscription')
164
+ expect(sub.plan.id).to eq('trial')
165
+ expect(sub.plan.to_hash).to eq(plan.to_hash)
166
+
167
+ customer = Stripe::Customer.retrieve('cardless')
168
+ expect(customer.subscription).to_not be_nil
169
+ expect(customer.subscription.id).to eq(sub.id)
170
+ expect(customer.subscription.plan.id).to eq('trial')
171
+ expect(customer.subscription.customer).to eq(customer.id)
172
+ end
173
+
131
174
  it "cancels a stripe customer's subscription" do
132
175
  plan = Stripe::Plan.create(id: 'the truth')
133
- customer = Stripe::Customer.create(id: 'test_customer_sub')
176
+ customer = Stripe::Customer.create(id: 'test_customer_sub', card: 'tk')
134
177
  sub = customer.update_subscription({ :plan => 'the truth' })
135
178
 
136
179
  result = customer.cancel_subscription
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: 1.8.4.6
4
+ version: 1.8.4.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: