stripe-ruby-mock 2.4.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +6 -4
  3. data/README.md +10 -4
  4. data/lib/stripe_mock/api/client.rb +3 -3
  5. data/lib/stripe_mock/api/errors.rb +25 -14
  6. data/lib/stripe_mock/api/instance.rb +4 -4
  7. data/lib/stripe_mock/api/webhooks.rb +1 -1
  8. data/lib/stripe_mock/client.rb +2 -2
  9. data/lib/stripe_mock/data.rb +51 -26
  10. data/lib/stripe_mock/instance.rb +7 -3
  11. data/lib/stripe_mock/request_handlers/charges.rb +6 -6
  12. data/lib/stripe_mock/request_handlers/coupons.rb +3 -2
  13. data/lib/stripe_mock/request_handlers/customers.rb +16 -7
  14. data/lib/stripe_mock/request_handlers/helpers/card_helpers.rb +2 -2
  15. data/lib/stripe_mock/request_handlers/helpers/coupon_helpers.rb +6 -1
  16. data/lib/stripe_mock/request_handlers/helpers/subscription_helpers.rb +5 -5
  17. data/lib/stripe_mock/request_handlers/helpers/token_helpers.rb +2 -2
  18. data/lib/stripe_mock/request_handlers/invoices.rb +63 -11
  19. data/lib/stripe_mock/request_handlers/orders.rb +4 -4
  20. data/lib/stripe_mock/request_handlers/refunds.rb +3 -3
  21. data/lib/stripe_mock/request_handlers/subscriptions.rb +8 -8
  22. data/lib/stripe_mock/request_handlers/tokens.rb +1 -1
  23. data/lib/stripe_mock/request_handlers/transfers.rb +1 -1
  24. data/lib/stripe_mock/server.rb +1 -1
  25. data/lib/stripe_mock/version.rb +1 -1
  26. data/spec/instance_spec.rb +4 -4
  27. data/spec/integration_examples/prepare_error_examples.rb +6 -6
  28. data/spec/readme_spec.rb +2 -0
  29. data/spec/server_spec.rb +2 -2
  30. data/spec/shared_stripe_examples/card_examples.rb +3 -3
  31. data/spec/shared_stripe_examples/coupon_examples.rb +6 -0
  32. data/spec/shared_stripe_examples/customer_examples.rb +31 -3
  33. data/spec/shared_stripe_examples/dispute_examples.rb +9 -8
  34. data/spec/shared_stripe_examples/error_mock_examples.rb +3 -3
  35. data/spec/shared_stripe_examples/extra_features_examples.rb +2 -0
  36. data/spec/shared_stripe_examples/invoice_examples.rb +232 -48
  37. data/spec/shared_stripe_examples/recipient_examples.rb +7 -7
  38. data/spec/shared_stripe_examples/subscription_examples.rb +52 -16
  39. data/spec/shared_stripe_examples/transfer_examples.rb +8 -6
  40. data/spec/shared_stripe_examples/webhook_event_examples.rb +3 -3
  41. data/spec/spec_helper.rb +6 -5
  42. data/spec/stripe_mock_spec.rb +3 -3
  43. data/stripe-ruby-mock.gemspec +1 -1
  44. metadata +4 -10
@@ -18,7 +18,7 @@ shared_examples 'Dispute API' do
18
18
  dispute_id = 'dp_05RsQX2eZvKYlo2C0FRTGSSA'
19
19
  dispute = Stripe::Dispute.retrieve(dispute_id)
20
20
 
21
- expect(dispute).to be_a(Stripe::Dispute)
21
+ expect(dispute).to be_a(Stripe::Dispute)
22
22
  expect(dispute.id).to eq(dispute_id)
23
23
  end
24
24
 
@@ -36,7 +36,7 @@ shared_examples 'Dispute API' do
36
36
  :customer_name => 'Rebel Idealist',
37
37
  :product_description => 'Lorem ipsum dolor sit amet.',
38
38
  :shipping_documentation => 'fil_15BZxW2eZvKYlo2CvQbrn9dc',
39
- }
39
+ }
40
40
  dispute.save
41
41
 
42
42
  dispute = Stripe::Dispute.retrieve(dispute_id)
@@ -50,13 +50,13 @@ shared_examples 'Dispute API' do
50
50
 
51
51
  it "closes a dispute" do
52
52
  dispute_id = 'dp_75RsQX2eZvKYlo2C0EDCXSWQ'
53
-
53
+
54
54
  dispute = Stripe::Dispute.retrieve(dispute_id)
55
-
55
+
56
56
  expect(dispute).to be_a(Stripe::Dispute)
57
57
  expect(dispute.id).to eq(dispute_id)
58
58
  expect(dispute.status).to eq('under_review')
59
-
59
+
60
60
  dispute.close
61
61
 
62
62
  dispute = Stripe::Dispute.retrieve(dispute_id)
@@ -67,7 +67,7 @@ shared_examples 'Dispute API' do
67
67
  end
68
68
 
69
69
  describe "listing disputes" do
70
-
70
+
71
71
  it "retrieves all disputes" do
72
72
  disputes = Stripe::Dispute.all
73
73
 
@@ -79,9 +79,10 @@ shared_examples 'Dispute API' do
79
79
  disputes = Stripe::Dispute.all(limit: 3)
80
80
 
81
81
  expect(disputes.count).to eq(3)
82
- expect(disputes.map &:id).to include('dp_95RsQX2eZvKYlo2C0EDFRYUI','dp_85RsQX2eZvKYlo2C0UJMCDET', 'dp_75RsQX2eZvKYlo2C0EDCXSWQ')
82
+ expected = ['dp_95RsQX2eZvKYlo2C0EDFRYUI','dp_85RsQX2eZvKYlo2C0UJMCDET', 'dp_75RsQX2eZvKYlo2C0EDCXSWQ']
83
+ expect(disputes.map &:id).to include(*expected)
83
84
  end
84
85
 
85
86
  end
86
-
87
+
87
88
  end
@@ -12,7 +12,7 @@ end
12
12
  shared_examples 'Stripe Error Mocking' do
13
13
 
14
14
  it "mocks a manually given stripe card error" do
15
- error = Stripe::CardError.new('Test Msg', 'param_name', 'bad_code', 444, 'body', 'json body')
15
+ error = Stripe::CardError.new('Test Msg', 'param_name', 'bad_code', http_status: 444, http_body: 'body', json_body: 'json body')
16
16
  StripeMock.prepare_error(error)
17
17
 
18
18
  expect { Stripe::Customer.create() }.to raise_error {|e|
@@ -30,7 +30,7 @@ shared_examples 'Stripe Error Mocking' do
30
30
 
31
31
  it "mocks a manually gives stripe invalid request error" do
32
32
 
33
- error = Stripe::InvalidRequestError.new('Test Invalid', 'param', 987, 'ibody', 'json ibody')
33
+ error = Stripe::InvalidRequestError.new('Test Invalid', 'param', http_status: 987, http_body: 'ibody', json_body: 'json ibody')
34
34
  StripeMock.prepare_error(error)
35
35
 
36
36
  expect { Stripe::Charge.create(amount: 1, currency: 'usd') }.to raise_error {|e|
@@ -46,7 +46,7 @@ shared_examples 'Stripe Error Mocking' do
46
46
 
47
47
 
48
48
  it "mocks a manually gives stripe invalid auth error" do
49
- error = Stripe::AuthenticationError.new('Bad Auth', 499, 'abody', 'json abody')
49
+ error = Stripe::AuthenticationError.new('Bad Auth', http_status: 499, http_body: 'abody', json_body: 'json abody')
50
50
  StripeMock.prepare_error(error)
51
51
 
52
52
  expect { stripe_helper.create_plan() }.to raise_error {|e|
@@ -8,6 +8,7 @@ shared_examples 'Extra Features' do
8
8
 
9
9
  customer = Stripe::Customer.create
10
10
  expect(customer.id).to match /^custom_prefix_cus/
11
+ StripeMock.global_id_prefix = nil
11
12
  end
12
13
 
13
14
  it "can set the global id prefix to nothing" do
@@ -23,6 +24,7 @@ shared_examples 'Extra Features' do
23
24
 
24
25
  customer = Stripe::Customer.create
25
26
  expect(customer.id).to match /^cus/
27
+ StripeMock.global_id_prefix = nil
26
28
  end
27
29
 
28
30
  it "has a default global id prefix" do
@@ -107,42 +107,80 @@ shared_examples 'Invoice API' do
107
107
  end
108
108
 
109
109
  context "retrieving upcoming invoice" do
110
- before do
111
- @customer = Stripe::Customer.create(email: 'johnny@appleseed.com', source: stripe_helper.generate_card_token)
112
- end
110
+ let(:customer) { @teardown_customer = true; Stripe::Customer.create(source: stripe_helper.generate_card_token) }
111
+ let(:coupon_amtoff) { @teardown_coupon_amtoff = true; Stripe::Coupon.create(id: '100OFF', currency: 'usd', amount_off: 100_00, duration: 'repeating', duration_in_months: 6) }
112
+ let(:coupon_pctoff) { @teardown_coupon_pctoff = true; Stripe::Coupon.create(id: '50%OFF', currency: 'usd', percent_off: 50, duration: 'repeating', duration_in_months: 6) }
113
+ let(:plan) { @teardown_plan = true; Stripe::Plan.create(id: '50m', amount: 50_00, interval: 'month', name: '50m', currency: 'usd') }
114
+ let(:quantity) { 3 }
115
+ let(:subscription) { @teardown_subscription = true; Stripe::Subscription.create(plan: plan.id, customer: customer.id, quantity: quantity) }
116
+
117
+ before(with_customer: true) { customer }
118
+ before(with_coupon_amtoff: true) { coupon_amtoff }
119
+ before(with_coupon_pctoff: true) { coupon_pctoff }
120
+ before(with_discount_amtoff: true) { customer.coupon = coupon_amtoff.id; customer.save }
121
+ before(with_discount_pctoff: true) { customer.coupon = coupon_pctoff.id; customer.save }
122
+ before(with_plan: true) { plan }
123
+ before(with_subscription: true) { subscription }
124
+
125
+ after { subscription.delete rescue nil if @teardown_subscription }
126
+ after { plan.delete rescue nil if @teardown_plan }
127
+ after { coupon_pctoff.delete rescue nil if @teardown_coupon_pctoff }
128
+ after { coupon_amtoff.delete rescue nil if @teardown_coupon_amtoff }
129
+ after { customer.delete rescue nil if @teardown_customer }
130
+
131
+ describe 'parameter validation' do
132
+ it 'fails without parameters' do
133
+ expect { Stripe::Invoice.upcoming() }.to raise_error {|e|
134
+ expect(e).to be_a(ArgumentError) }
135
+ end
113
136
 
114
- it 'fails without parameters' do
115
- expect { Stripe::Invoice.upcoming() }.to raise_error {|e|
116
- expect(e).to be_a(ArgumentError) }
117
- end
137
+ it 'fails without a valid customer' do
138
+ expect { Stripe::Invoice.upcoming(customer: 'whatever') }.to raise_error {|e|
139
+ expect(e).to be_a(Stripe::InvalidRequestError)
140
+ expect(e.message).to eq('No such customer: whatever') }
141
+ end
118
142
 
119
- it 'fails without a valid customer' do
120
- expect { Stripe::Invoice.upcoming(customer: 'whatever') }.to raise_error {|e|
121
- expect(e).to be_a(Stripe::InvalidRequestError)
122
- expect(e.message).to eq('No such customer: whatever') }
123
- end
143
+ it 'fails without a customer parameter' do
144
+ expect { Stripe::Invoice.upcoming(gazebo: 'raindance') }.to raise_error {|e|
145
+ expect(e).to be_a(Stripe::InvalidRequestError)
146
+ expect(e.http_status).to eq(400)
147
+ expect(e.message).to eq('Missing required param: customer') }
148
+ end
124
149
 
125
- it 'fails without a customer parameter' do
126
- expect { Stripe::Invoice.upcoming(gazebo: 'raindance') }.to raise_error {|e|
127
- expect(e).to be_a(Stripe::InvalidRequestError)
128
- expect(e.http_status).to eq(400)
129
- expect(e.message).to eq('Missing required param: customer') }
150
+ it 'fails without a subscription' do
151
+ expect { Stripe::Invoice.upcoming(customer: customer.id) }.to raise_error {|e|
152
+ expect(e).to be_a(Stripe::InvalidRequestError)
153
+ expect(e.http_status).to eq(404)
154
+ expect(e.message).to eq("No upcoming invoices for customer: #{customer.id}") }
155
+ end
130
156
  end
131
157
 
132
- it 'fails without a subscription' do
133
- expect { Stripe::Invoice.upcoming(customer: @customer.id) }.to raise_error {|e|
134
- expect(e).to be_a(Stripe::InvalidRequestError)
135
- expect(e.http_status).to eq(404)
136
- expect(e.message).to eq("No upcoming invoices for customer: #{@customer.id}") }
158
+ describe 'parameter validation' do
159
+ it 'fails without a subscription or subscription plan if subscription proration date is specified', live: true do
160
+ expect { Stripe::Invoice.upcoming(customer: customer.id, subscription_proration_date: Time.now.to_i) }.to raise_error do |e|
161
+ expect(e).to be_a Stripe::InvalidRequestError
162
+ expect(e.http_status).to eq 400
163
+ expect(e.message).to eq 'When previewing changes to a subscription, you must specify either `subscription` or `subscription_items`'
164
+ end
165
+ end
166
+
167
+ it 'fails without a subscription if proration date is specified', live: true, with_subscription: true do
168
+ expect { Stripe::Invoice.upcoming(customer: customer.id, subscription_plan: plan.id, subscription_proration_date: Time.now.to_i) }.to raise_error do |e|
169
+ expect(e).to be_a Stripe::InvalidRequestError
170
+ expect(e.http_status).to eq 400
171
+ expect(e.message).to eq 'Cannot specify proration date without specifying a subscription'
172
+ end
173
+ end
137
174
  end
138
175
 
139
- it 'works when customer has a subscription', :live => true do
140
- plan = stripe_helper.create_plan(:id => 'has_sub')
141
- subscription = Stripe::Subscription.create(plan: plan.id, customer: @customer.id)
142
- upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
176
+ it 'considers current subscription', live: true, with_subscription: true do
177
+ # When
178
+ upcoming = Stripe::Invoice.upcoming(customer: customer.id)
143
179
 
180
+ # Then
144
181
  expect(upcoming).to be_a Stripe::Invoice
145
- expect(upcoming.customer).to eq(@customer.id)
182
+ expect(upcoming.customer).to eq(customer.id)
183
+ expect(upcoming.amount_due).to eq plan.amount * quantity
146
184
  expect(upcoming.total).to eq(upcoming.lines.data[0].amount)
147
185
  expect(upcoming.period_end).to eq(upcoming.lines.data[0].period.start)
148
186
  expect(Time.at(upcoming.period_start).to_datetime >> 1).to eq(Time.at(upcoming.period_end).to_datetime) # +1 month
@@ -151,10 +189,156 @@ shared_examples 'Invoice API' do
151
189
  expect(upcoming.subscription).to eq(subscription.id)
152
190
  end
153
191
 
192
+ describe 'discounts' do
193
+ it 'considers a $ off discount', live: true, with_discount_amtoff: true, with_subscription: true do
194
+ # When
195
+ upcoming = Stripe::Invoice.upcoming(customer: customer.id)
196
+
197
+ # Then
198
+ expect(upcoming.discount).not_to be_nil
199
+ expect(upcoming.discount.coupon.id).to eq '100OFF'
200
+ expect(upcoming.discount.customer).to eq customer.id
201
+ expect(upcoming.discount.start).to be_within(5).of Time.now.to_i
202
+ expect(upcoming.discount.end).to be_within(5).of (Time.now.to_datetime >> 6).to_time.to_i
203
+ expect(upcoming.amount_due).to eq plan.amount * quantity - 100_00
204
+ expect(upcoming.subtotal).to eq(upcoming.lines.data[0].amount)
205
+ expect(upcoming.total).to eq upcoming.subtotal - 100_00
206
+ end
207
+
208
+ it 'considers a % off discount', live: true, with_discount_pctoff: true, with_subscription: true do
209
+ # When
210
+ upcoming = Stripe::Invoice.upcoming(customer: customer.id)
211
+
212
+ # Then
213
+ expect(upcoming.discount).not_to be_nil
214
+ expect(upcoming.discount.coupon.id).to eq '50%OFF'
215
+ expect(upcoming.discount.customer).to eq customer.id
216
+ expect(upcoming.discount.start).to be_within(5).of Time.now.to_i
217
+ expect(upcoming.discount.end).to be_within(5).of (Time.now.to_datetime >> 6).to_time.to_i
218
+ expect(upcoming.amount_due).to eq (plan.amount * quantity) * 0.5
219
+ expect(upcoming.subtotal).to eq(upcoming.lines.data[0].amount)
220
+ expect(upcoming.total).to eq upcoming.subtotal * 0.5
221
+ end
222
+ end
223
+
224
+ describe 'proration' do
225
+ shared_examples 'failing when proration date is outside of the subscription current period' do
226
+ it 'fails', live: true do
227
+ expect { Stripe::Invoice.upcoming(
228
+ customer: customer.id,
229
+ subscription: subscription.id,
230
+ subscription_plan: plan.id,
231
+ subscription_quantity: quantity,
232
+ subscription_proration_date: proration_date.to_i,
233
+ subscription_trial_end: nil
234
+ ) }.to raise_error {|e|
235
+ expect(e).to be_a(Stripe::InvalidRequestError)
236
+ expect(e.http_status).to eq(400)
237
+ expect(e.message).to eq('Cannot specify proration date outside of current subscription period') }
238
+ end
239
+ end
240
+
241
+ it_behaves_like 'failing when proration date is outside of the subscription current period' do
242
+ let(:proration_date) { subscription.current_period_start - 1 }
243
+ end
244
+
245
+ it_behaves_like 'failing when proration date is outside of the subscription current period' do
246
+ let(:proration_date) { subscription.current_period_end + 1 }
247
+ end
248
+
249
+ [false, true].each do |with_trial|
250
+ describe "prorating a subscription with a new plan, with_trial: #{with_trial}" do
251
+ let!(:new_plan) { Stripe::Plan.create(id: '100y', amount: 10000, interval: 'year', name: '100y', currency: 'usd') }
252
+
253
+ it 'prorates', live: true do
254
+ # Given
255
+ proration_date = Time.now + 5 * 24 * 3600 # 5 days later
256
+ new_quantity = 2
257
+ unused_amount = plan.amount * quantity * (subscription.current_period_end - proration_date.to_i) / (subscription.current_period_end - subscription.current_period_start)
258
+ prorated_amount_due = new_plan.amount * new_quantity - unused_amount
259
+ credit_balance = 1000
260
+ customer.account_balance = -credit_balance
261
+ customer.save
262
+ query = { customer: customer.id, subscription: subscription.id, subscription_plan: new_plan.id, subscription_proration_date: proration_date.to_i, subscription_quantity: new_quantity }
263
+ query[:subscription_trial_end] = (DateTime.now >> 1).to_time.to_i if with_trial
264
+
265
+ # When
266
+ upcoming = Stripe::Invoice.upcoming(query)
267
+
268
+ # Then
269
+ expect(upcoming).to be_a Stripe::Invoice
270
+ expect(upcoming.customer).to eq(customer.id)
271
+ if with_trial
272
+ expect(upcoming.amount_due).to eq 0
273
+ else
274
+ expect(upcoming.amount_due).to be_within(1).of prorated_amount_due - credit_balance
275
+ end
276
+ expect(upcoming.starting_balance).to eq -credit_balance
277
+ expect(upcoming.ending_balance).to be_nil
278
+ expect(upcoming.subscription).to eq(subscription.id)
279
+ expect(upcoming.lines.data[0].proration).to be_truthy
280
+ expect(upcoming.lines.data[0].plan.id).to eq '50m'
281
+ expect(upcoming.lines.data[0].amount).to be_within(1).of -unused_amount
282
+ expect(upcoming.lines.data[0].quantity).to eq quantity
283
+ expect(upcoming.lines.data[1].proration).to be_falsey
284
+ expect(upcoming.lines.data[1].plan.id).to eq '100y'
285
+ expect(upcoming.lines.data[1].amount).to eq with_trial ? 0 : 20000
286
+ expect(upcoming.lines.data[1].quantity).to eq new_quantity
287
+ end
288
+
289
+ after { new_plan.delete }
290
+ end
291
+ end
292
+
293
+ shared_examples 'no proration is done' do
294
+ it 'generates a preview without performing an actual proration', live: true do
295
+ expect(preview.subtotal).to eq 150_00
296
+ # this is a future invoice (generted at the end of the current subscription cycle), rather than a proration invoice
297
+ expect(preview.date).to be_within(1).of subscription.current_period_end
298
+ expect(preview.period_start).to eq subscription.current_period_start
299
+ expect(preview.period_end).to eq subscription.current_period_end
300
+ expect(preview.lines.count).to eq 1
301
+ line = preview.lines.first
302
+ expect(line.type).to eq 'subscription'
303
+ expect(line.amount).to eq 150_00
304
+ # line period is for the NEXT subscription cycle
305
+ expect(line.period.start).to be_within(1).of subscription.current_period_end
306
+ expect(line.period.end).to be_within(1).of (Time.at(subscription.current_period_end).to_datetime >> 1).to_time.to_i # +1 month
307
+ end
308
+ end
309
+
310
+ describe 'upcoming invoice with no proration parameters specified' do
311
+ let(:preview) do
312
+ Stripe::Invoice.upcoming(
313
+ customer: customer.id,
314
+ subscription: subscription.id
315
+ )
316
+ end
317
+
318
+ it_behaves_like 'no proration is done'
319
+ end
320
+
321
+ describe 'upcoming invoice with same subscription plan and quantity specified' do
322
+ let(:preview) do
323
+ proration_date = Time.now + 60
324
+ Stripe::Invoice.upcoming(
325
+ customer: customer.id,
326
+ subscription: subscription.id,
327
+ subscription_plan: plan.id,
328
+ subscription_quantity: quantity,
329
+ subscription_proration_date: proration_date.to_i,
330
+ subscription_trial_end: nil
331
+ )
332
+ end
333
+
334
+ it_behaves_like 'no proration is done'
335
+ end
336
+ end
337
+
154
338
  it 'sets the start and end of billing periods correctly when plan has an interval_count' do
155
339
  @oddplan = stripe_helper.create_plan(interval: "week", interval_count: 11)
156
- @subscription = Stripe::Subscription.create(plan: @oddplan.id, customer: @customer.id)
157
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
340
+ @subscription = Stripe::Subscription.create(plan: @oddplan.id, customer: customer.id)
341
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
158
342
 
159
343
  expect(@upcoming.period_start + 6652800).to eq(@upcoming.period_end) # 6652800 = +11 weeks
160
344
  expect(@upcoming.period_end).to eq(@upcoming.lines.data[0].period.start)
@@ -167,11 +351,11 @@ shared_examples 'Invoice API' do
167
351
  @plainplan = stripe_helper.create_plan(id: 'b') # 1 month sub
168
352
  @longplan = stripe_helper.create_plan(id: 'c', interval: "year") # 1 year sub
169
353
 
170
- @plainsub = Stripe::Subscription.create(plan: @plainplan.id, customer: @customer.id)
171
- @shortsub = Stripe::Subscription.create(plan: @shortplan.id, customer: @customer.id)
172
- @longsub = Stripe::Subscription.create(plan: @longplan.id, customer: @customer.id)
354
+ @plainsub = Stripe::Subscription.create(plan: @plainplan.id, customer: customer.id)
355
+ @shortsub = Stripe::Subscription.create(plan: @shortplan.id, customer: customer.id)
356
+ @longsub = Stripe::Subscription.create(plan: @longplan.id, customer: customer.id)
173
357
 
174
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
358
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
175
359
 
176
360
  expect(@upcoming.period_start + 604800).to eq(@upcoming.period_end) # 604800 = 1 week
177
361
  expect(@upcoming.period_end + 604800).to eq(@upcoming.lines.data[0].period.end) # 604800 = 1 week
@@ -180,7 +364,7 @@ shared_examples 'Invoice API' do
180
364
 
181
365
  context 'retrieving invoice line items' do
182
366
  it 'returns all line items for created invoice' do
183
- invoice = Stripe::Invoice.create(customer: @customer.id)
367
+ invoice = Stripe::Invoice.create(customer: customer.id)
184
368
  line_items = invoice.lines.all
185
369
 
186
370
  expect(invoice).to be_a Stripe::Invoice
@@ -192,8 +376,8 @@ shared_examples 'Invoice API' do
192
376
 
193
377
  it 'returns all line items for upcoming invoice' do
194
378
  plan = stripe_helper.create_plan()
195
- subscription = Stripe::Subscription.create(plan: plan.id, customer: @customer.id)
196
- upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
379
+ subscription = Stripe::Subscription.create(plan: plan.id, customer: customer.id)
380
+ upcoming = Stripe::Invoice.upcoming(customer: customer.id)
197
381
  line_items = upcoming.lines.all
198
382
 
199
383
  expect(upcoming).to be_a Stripe::Invoice
@@ -208,8 +392,8 @@ shared_examples 'Invoice API' do
208
392
 
209
393
  it 'for one month plan on the 1st' do
210
394
  @plan = stripe_helper.create_plan()
211
- @sub = Stripe::Subscription.create(plan: @plan.id, customer: @customer.id, current_period_start: Time.utc(2014,1,1,12).to_i)
212
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
395
+ @sub = Stripe::Subscription.create(plan: @plan.id, customer: customer.id, current_period_start: Time.utc(2014,1,1,12).to_i)
396
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
213
397
 
214
398
  expect(Time.at(@upcoming.period_start)).to eq(Time.utc(2014,1,1,12))
215
399
  expect(Time.at(@upcoming.period_end)).to eq(Time.utc(2014,2,1,12))
@@ -219,8 +403,8 @@ shared_examples 'Invoice API' do
219
403
 
220
404
  it 'for one year plan on the 1st' do
221
405
  @plan = stripe_helper.create_plan(interval: "year")
222
- @sub = Stripe::Subscription.create(plan: @plan.id, customer: @customer.id, current_period_start: Time.utc(2012,1,1,12).to_i)
223
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
406
+ @sub = Stripe::Subscription.create(plan: @plan.id, customer: customer.id, current_period_start: Time.utc(2012,1,1,12).to_i)
407
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
224
408
 
225
409
  expect(Time.at(@upcoming.period_start)).to eq(Time.utc(2012,1,1,12))
226
410
  expect(Time.at(@upcoming.period_end)).to eq(Time.utc(2013,1,1,12))
@@ -230,8 +414,8 @@ shared_examples 'Invoice API' do
230
414
 
231
415
  it 'for one month plan on the 31st' do
232
416
  @plan = stripe_helper.create_plan()
233
- @sub = Stripe::Subscription.create(plan: @plan.id, customer: @customer.id, current_period_start: Time.utc(2014,1,31,12).to_i)
234
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
417
+ @sub = Stripe::Subscription.create(plan: @plan.id, customer: customer.id, current_period_start: Time.utc(2014,1,31,12).to_i)
418
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
235
419
 
236
420
  expect(Time.at(@upcoming.period_start)).to eq(Time.utc(2014,1,31,12))
237
421
  expect(Time.at(@upcoming.period_end)).to eq(Time.utc(2014,2,28,12))
@@ -241,8 +425,8 @@ shared_examples 'Invoice API' do
241
425
 
242
426
  it 'for one year plan on feb. 29th' do
243
427
  @plan = stripe_helper.create_plan(interval: "year")
244
- @sub = Stripe::Subscription.create(plan: @plan.id, customer: @customer.id, current_period_start: Time.utc(2012,2,29,12).to_i)
245
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
428
+ @sub = Stripe::Subscription.create(plan: @plan.id, customer: customer.id, current_period_start: Time.utc(2012,2,29,12).to_i)
429
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
246
430
 
247
431
  expect(Time.at(@upcoming.period_start)).to eq(Time.utc(2012,2,29,12))
248
432
  expect(Time.at(@upcoming.period_end)).to eq(Time.utc(2013,2,28,12))
@@ -252,8 +436,8 @@ shared_examples 'Invoice API' do
252
436
 
253
437
  it 'for two month plan on dec. 31st' do
254
438
  @plan = stripe_helper.create_plan(interval_count: 2)
255
- @sub = Stripe::Subscription.create(plan: @plan.id, customer: @customer.id, current_period_start: Time.utc(2013,12,31,12).to_i)
256
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
439
+ @sub = Stripe::Subscription.create(plan: @plan.id, customer: customer.id, current_period_start: Time.utc(2013,12,31,12).to_i)
440
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
257
441
 
258
442
  expect(Time.at(@upcoming.period_start)).to eq(Time.utc(2013,12,31,12))
259
443
  expect(Time.at(@upcoming.period_end)).to eq(Time.utc(2014, 2,28,12))
@@ -263,8 +447,8 @@ shared_examples 'Invoice API' do
263
447
 
264
448
  it 'for three month plan on nov. 30th' do
265
449
  @plan = stripe_helper.create_plan(interval_count: 3)
266
- @sub = Stripe::Subscription.create(plan: @plan.id, customer: @customer.id, current_period_start: Time.utc(2013,11,30,12).to_i)
267
- @upcoming = Stripe::Invoice.upcoming(customer: @customer.id)
450
+ @sub = Stripe::Subscription.create(plan: @plan.id, customer: customer.id, current_period_start: Time.utc(2013,11,30,12).to_i)
451
+ @upcoming = Stripe::Invoice.upcoming(customer: customer.id)
268
452
 
269
453
  expect(Time.at(@upcoming.period_start)).to eq(Time.utc(2013,11,30,12))
270
454
  expect(Time.at(@upcoming.period_end)).to eq(Time.utc(2014, 2,28,12))