stripe-ruby-mock 2.5.8 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.travis.yml +6 -6
- data/README.md +8 -8
- data/lib/stripe_mock.rb +3 -0
- data/lib/stripe_mock/api/errors.rb +31 -28
- data/lib/stripe_mock/api/webhooks.rb +3 -0
- data/lib/stripe_mock/data.rb +140 -13
- data/lib/stripe_mock/instance.rb +10 -3
- data/lib/stripe_mock/request_handlers/balance_transactions.rb +2 -2
- data/lib/stripe_mock/request_handlers/helpers/subscription_helpers.rb +1 -1
- data/lib/stripe_mock/request_handlers/helpers/token_helpers.rb +1 -1
- data/lib/stripe_mock/request_handlers/invoices.rb +6 -1
- data/lib/stripe_mock/request_handlers/payment_intents.rb +175 -0
- data/lib/stripe_mock/request_handlers/payment_methods.rb +138 -0
- data/lib/stripe_mock/request_handlers/products.rb +1 -0
- data/lib/stripe_mock/request_handlers/setup_intents.rb +93 -0
- data/lib/stripe_mock/request_handlers/subscriptions.rb +17 -4
- data/lib/stripe_mock/request_handlers/validators/param_validators.rb +95 -9
- data/lib/stripe_mock/test_strategies/base.rb +42 -8
- data/lib/stripe_mock/test_strategies/live.rb +23 -12
- data/lib/stripe_mock/test_strategies/mock.rb +6 -2
- data/lib/stripe_mock/version.rb +1 -1
- data/lib/stripe_mock/webhook_fixtures/charge.failed.json +166 -38
- data/lib/stripe_mock/webhook_fixtures/customer.created.json +1 -0
- data/lib/stripe_mock/webhook_fixtures/customer.updated.json +1 -0
- data/lib/stripe_mock/webhook_fixtures/product.created.json +34 -0
- data/lib/stripe_mock/webhook_fixtures/product.deleted.json +34 -0
- data/lib/stripe_mock/webhook_fixtures/product.updated.json +38 -0
- data/spec/instance_spec.rb +6 -6
- data/spec/server_spec.rb +2 -1
- data/spec/shared_stripe_examples/account_examples.rb +1 -1
- data/spec/shared_stripe_examples/balance_transaction_examples.rb +3 -3
- data/spec/shared_stripe_examples/bank_examples.rb +3 -3
- data/spec/shared_stripe_examples/card_examples.rb +4 -4
- data/spec/shared_stripe_examples/charge_examples.rb +9 -22
- data/spec/shared_stripe_examples/coupon_examples.rb +1 -1
- data/spec/shared_stripe_examples/customer_examples.rb +44 -30
- data/spec/shared_stripe_examples/dispute_examples.rb +2 -2
- data/spec/shared_stripe_examples/error_mock_examples.rb +8 -7
- data/spec/shared_stripe_examples/external_account_examples.rb +3 -3
- data/spec/shared_stripe_examples/invoice_examples.rb +41 -39
- data/spec/shared_stripe_examples/invoice_item_examples.rb +1 -1
- data/spec/shared_stripe_examples/payment_intent_examples.rb +137 -0
- data/spec/shared_stripe_examples/payment_method_examples.rb +185 -0
- data/spec/shared_stripe_examples/payout_examples.rb +2 -2
- data/spec/shared_stripe_examples/plan_examples.rb +135 -92
- data/spec/shared_stripe_examples/product_examples.rb +155 -0
- data/spec/shared_stripe_examples/refund_examples.rb +25 -21
- data/spec/shared_stripe_examples/setup_intent_examples.rb +68 -0
- data/spec/shared_stripe_examples/subscription_examples.rb +281 -310
- data/spec/shared_stripe_examples/subscription_items_examples.rb +3 -2
- data/spec/shared_stripe_examples/transfer_examples.rb +6 -6
- data/spec/shared_stripe_examples/webhook_event_examples.rb +11 -11
- data/spec/spec_helper.rb +3 -4
- data/spec/stripe_mock_spec.rb +2 -2
- data/spec/support/shared_contexts/stripe_validator_spec.rb +8 -0
- data/spec/support/stripe_examples.rb +3 -0
- data/stripe-ruby-mock.gemspec +2 -2
- metadata +47 -27
- data/spec/shared_stripe_examples/product_example.rb +0 -65
@@ -0,0 +1,34 @@
|
|
1
|
+
{
|
2
|
+
"created": 1326853478,
|
3
|
+
"livemode": false,
|
4
|
+
"id": "evt_00000000000000",
|
5
|
+
"type": "product.created",
|
6
|
+
"object": "event",
|
7
|
+
"data": {
|
8
|
+
"object": {
|
9
|
+
"id": "prod_00000000000000",
|
10
|
+
"object": "product",
|
11
|
+
"active": true,
|
12
|
+
"attributes": [
|
13
|
+
],
|
14
|
+
"caption": null,
|
15
|
+
"created": 1558795883,
|
16
|
+
"deactivate_on": [
|
17
|
+
],
|
18
|
+
"description": null,
|
19
|
+
"images": [
|
20
|
+
],
|
21
|
+
"livemode": false,
|
22
|
+
"metadata": {
|
23
|
+
},
|
24
|
+
"name": "Test Product",
|
25
|
+
"package_dimensions": null,
|
26
|
+
"shippable": null,
|
27
|
+
"statement_descriptor": null,
|
28
|
+
"type": "service",
|
29
|
+
"unit_label": null,
|
30
|
+
"updated": 1558795883,
|
31
|
+
"url": null
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
{
|
2
|
+
"created": 1326853478,
|
3
|
+
"livemode": false,
|
4
|
+
"id": "evt_00000000000000",
|
5
|
+
"type": "product.deleted",
|
6
|
+
"object": "event",
|
7
|
+
"data": {
|
8
|
+
"object": {
|
9
|
+
"id": "prod_00000000000000",
|
10
|
+
"object": "product",
|
11
|
+
"active": true,
|
12
|
+
"attributes": [
|
13
|
+
],
|
14
|
+
"caption": null,
|
15
|
+
"created": 1558795883,
|
16
|
+
"deactivate_on": [
|
17
|
+
],
|
18
|
+
"description": null,
|
19
|
+
"images": [
|
20
|
+
],
|
21
|
+
"livemode": false,
|
22
|
+
"metadata": {
|
23
|
+
},
|
24
|
+
"name": "Test Product",
|
25
|
+
"package_dimensions": null,
|
26
|
+
"shippable": null,
|
27
|
+
"statement_descriptor": null,
|
28
|
+
"type": "service",
|
29
|
+
"unit_label": null,
|
30
|
+
"updated": 1558795883,
|
31
|
+
"url": null
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
{
|
2
|
+
"created": 1326853478,
|
3
|
+
"livemode": false,
|
4
|
+
"id": "evt_00000000000000",
|
5
|
+
"type": "product.updated",
|
6
|
+
"object": "event",
|
7
|
+
"data": {
|
8
|
+
"object": {
|
9
|
+
"id": "prod_00000000000000",
|
10
|
+
"object": "product",
|
11
|
+
"active": true,
|
12
|
+
"attributes": [
|
13
|
+
],
|
14
|
+
"caption": null,
|
15
|
+
"created": 1558795883,
|
16
|
+
"deactivate_on": [
|
17
|
+
],
|
18
|
+
"description": null,
|
19
|
+
"images": [
|
20
|
+
],
|
21
|
+
"livemode": false,
|
22
|
+
"metadata": {
|
23
|
+
},
|
24
|
+
"name": "Test Product",
|
25
|
+
"package_dimensions": null,
|
26
|
+
"shippable": null,
|
27
|
+
"statement_descriptor": null,
|
28
|
+
"type": "service",
|
29
|
+
"unit_label": null,
|
30
|
+
"updated": 1558795883,
|
31
|
+
"url": null
|
32
|
+
},
|
33
|
+
"previous_attributes": {
|
34
|
+
"name": "Product Test",
|
35
|
+
"updated": 1558873981
|
36
|
+
}
|
37
|
+
}
|
38
|
+
}
|
data/spec/instance_spec.rb
CHANGED
@@ -13,13 +13,13 @@ describe StripeMock::Instance do
|
|
13
13
|
after { StripeMock.stop }
|
14
14
|
|
15
15
|
it "handles both string and symbol hash keys" do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
symbol_params = stripe_helper.create_product_params(
|
17
|
+
:name => "Symbol Product",
|
18
|
+
"type" => "service"
|
19
19
|
)
|
20
|
-
res, api_key = StripeMock.instance.mock_request('post', '/v1/
|
21
|
-
expect(res.data[:
|
22
|
-
expect(res.data[:
|
20
|
+
res, api_key = StripeMock.instance.mock_request('post', '/v1/products', api_key: 'api_key', params: symbol_params)
|
21
|
+
expect(res.data[:name]).to eq('Symbol Product')
|
22
|
+
expect(res.data[:type]).to eq('service')
|
23
23
|
end
|
24
24
|
|
25
25
|
it "exits gracefully on an unrecognized handler url" do
|
data/spec/server_spec.rb
CHANGED
@@ -19,6 +19,7 @@ describe 'StripeMock Server', :mock_server => true do
|
|
19
19
|
|
20
20
|
after { StripeMock.stop_client(:clear_server_data => true) }
|
21
21
|
|
22
|
+
let(:product) { stripe_helper.create_product }
|
22
23
|
|
23
24
|
it "uses an RPC client for mock requests" do
|
24
25
|
charge = Stripe::Charge.create(
|
@@ -51,7 +52,7 @@ describe 'StripeMock Server', :mock_server => true do
|
|
51
52
|
|
52
53
|
|
53
54
|
it "returns a response with symbolized hash keys" do
|
54
|
-
stripe_helper.create_plan(id: 'x')
|
55
|
+
stripe_helper.create_plan(id: 'x', product: product.id)
|
55
56
|
response, api_key = StripeMock.redirect_to_mock_server('get', '/v1/plans/x', api_key: 'xxx')
|
56
57
|
response.data.keys.each {|k| expect(k).to be_a(Symbol) }
|
57
58
|
end
|
@@ -15,7 +15,7 @@ shared_examples 'Account API' do
|
|
15
15
|
expect(account.id).to match /acct\_/
|
16
16
|
end
|
17
17
|
it 'retrieves all' do
|
18
|
-
accounts = Stripe::Account.
|
18
|
+
accounts = Stripe::Account.list
|
19
19
|
|
20
20
|
expect(accounts).to be_a Stripe::ListObject
|
21
21
|
expect(accounts.data.count).to satisfy { |n| n >= 1 }
|
@@ -26,7 +26,7 @@ shared_examples 'Balance Transaction API' do
|
|
26
26
|
describe "listing balance transactions" do
|
27
27
|
|
28
28
|
it "retrieves all balance transactions" do
|
29
|
-
disputes = Stripe::BalanceTransaction.
|
29
|
+
disputes = Stripe::BalanceTransaction.list
|
30
30
|
|
31
31
|
expect(disputes.count).to eq(10)
|
32
32
|
expect(disputes.map &:id).to include('txn_05RsQX2eZvKYlo2C0FRTGSSA','txn_15RsQX2eZvKYlo2C0ERTYUIA', 'txn_25RsQX2eZvKYlo2C0ZXCVBNM', 'txn_35RsQX2eZvKYlo2C0QAZXSWE', 'txn_45RsQX2eZvKYlo2C0EDCVFRT', 'txn_55RsQX2eZvKYlo2C0OIKLJUY', 'txn_65RsQX2eZvKYlo2C0ASDFGHJ', 'txn_75RsQX2eZvKYlo2C0EDCXSWQ', 'txn_85RsQX2eZvKYlo2C0UJMCDET', 'txn_95RsQX2eZvKYlo2C0EDFRYUI')
|
@@ -38,7 +38,7 @@ shared_examples 'Balance Transaction API' do
|
|
38
38
|
transfer_id = Stripe::Transfer.create({ amount: 2730, currency: "usd" })
|
39
39
|
|
40
40
|
# verify transfer currently has no balance transactions
|
41
|
-
transfer_transactions = Stripe::BalanceTransaction.
|
41
|
+
transfer_transactions = Stripe::BalanceTransaction.list({transfer: transfer_id})
|
42
42
|
expect(transfer_transactions.count).to eq(0)
|
43
43
|
|
44
44
|
# verify we can create a new balance transaction associated with the transfer
|
@@ -55,7 +55,7 @@ shared_examples 'Balance Transaction API' do
|
|
55
55
|
stripe_helper.upsert_stripe_object(:balance_transaction, {id: existing_txn_id, transfer: transfer_id})
|
56
56
|
|
57
57
|
# now verify that only these balance transactions are retrieved with the transfer
|
58
|
-
transfer_transactions = Stripe::BalanceTransaction.
|
58
|
+
transfer_transactions = Stripe::BalanceTransaction.list({transfer: transfer_id})
|
59
59
|
expect(transfer_transactions.count).to eq(2)
|
60
60
|
expect(transfer_transactions.map &:id).to include(new_txn_id, existing_txn_id)
|
61
61
|
end
|
@@ -77,7 +77,7 @@ shared_examples 'Bank API' do
|
|
77
77
|
let!(:bank) { customer.sources.create(source: bank_token) }
|
78
78
|
|
79
79
|
it "can retrieve all customer's banks" do
|
80
|
-
retrieved = customer.sources.
|
80
|
+
retrieved = customer.sources.list
|
81
81
|
expect(retrieved.count).to eq(1)
|
82
82
|
end
|
83
83
|
|
@@ -174,7 +174,7 @@ shared_examples 'Bank API' do
|
|
174
174
|
|
175
175
|
customer = Stripe::Customer.retrieve('test_customer_bank')
|
176
176
|
|
177
|
-
list = customer.sources.
|
177
|
+
list = customer.sources.list
|
178
178
|
|
179
179
|
expect(list.object).to eq("list")
|
180
180
|
expect(list.count).to eq(2)
|
@@ -191,7 +191,7 @@ shared_examples 'Bank API' do
|
|
191
191
|
Stripe::Customer.create(id: 'no_banks')
|
192
192
|
customer = Stripe::Customer.retrieve('no_banks')
|
193
193
|
|
194
|
-
list = customer.sources.
|
194
|
+
list = customer.sources.list
|
195
195
|
|
196
196
|
expect(list.object).to eq("list")
|
197
197
|
expect(list.count).to eq(0)
|
@@ -134,7 +134,7 @@ shared_examples 'Card API' do
|
|
134
134
|
let!(:card) { customer.sources.create(source: card_token) }
|
135
135
|
|
136
136
|
it "can retrieve all customer's cards" do
|
137
|
-
retrieved = customer.sources.
|
137
|
+
retrieved = customer.sources.list
|
138
138
|
expect(retrieved.count).to eq(1)
|
139
139
|
end
|
140
140
|
|
@@ -198,7 +198,7 @@ shared_examples 'Card API' do
|
|
198
198
|
let!(:card) { recipient.cards.create(card: card_token) }
|
199
199
|
|
200
200
|
it "can retrieve all recipient's cards" do
|
201
|
-
retrieved = recipient.cards.
|
201
|
+
retrieved = recipient.cards.list
|
202
202
|
expect(retrieved.count).to eq(1)
|
203
203
|
end
|
204
204
|
|
@@ -279,7 +279,7 @@ shared_examples 'Card API' do
|
|
279
279
|
|
280
280
|
customer = Stripe::Customer.retrieve('test_customer_card')
|
281
281
|
|
282
|
-
list = customer.sources.
|
282
|
+
list = customer.sources.list
|
283
283
|
|
284
284
|
expect(list.object).to eq("list")
|
285
285
|
expect(list.count).to eq(2)
|
@@ -296,7 +296,7 @@ shared_examples 'Card API' do
|
|
296
296
|
Stripe::Customer.create(id: 'no_cards')
|
297
297
|
customer = Stripe::Customer.retrieve('no_cards')
|
298
298
|
|
299
|
-
list = customer.sources.
|
299
|
+
list = customer.sources.list
|
300
300
|
|
301
301
|
expect(list.object).to eq("list")
|
302
302
|
expect(list.count).to eq(0)
|
@@ -278,20 +278,6 @@ shared_examples 'Charge API' do
|
|
278
278
|
}.not_to raise_error
|
279
279
|
end
|
280
280
|
|
281
|
-
it "marks a charge as safe" do
|
282
|
-
original = Stripe::Charge.create({
|
283
|
-
amount: 777,
|
284
|
-
currency: 'USD',
|
285
|
-
source: stripe_helper.generate_card_token
|
286
|
-
})
|
287
|
-
charge = Stripe::Charge.retrieve(original.id)
|
288
|
-
|
289
|
-
charge.mark_as_safe
|
290
|
-
|
291
|
-
updated = Stripe::Charge.retrieve(original.id)
|
292
|
-
expect(updated.fraud_details[:user_report]).to eq "safe"
|
293
|
-
end
|
294
|
-
|
295
281
|
it "does not lose data when updating a charge" do
|
296
282
|
original = Stripe::Charge.create({
|
297
283
|
amount: 777,
|
@@ -357,28 +343,29 @@ shared_examples 'Charge API' do
|
|
357
343
|
end
|
358
344
|
|
359
345
|
it "stores charges for a customer in memory" do
|
360
|
-
|
346
|
+
charges = Stripe::Charge.list(customer: @customer.id)
|
347
|
+
expect(charges.map(&:id)).to eq([@charge.id])
|
361
348
|
end
|
362
349
|
|
363
350
|
it "stores all charges in memory" do
|
364
|
-
expect(Stripe::Charge.
|
351
|
+
expect(Stripe::Charge.list.data.map(&:id).reverse).to eq([@charge.id, @charge2.id])
|
365
352
|
end
|
366
353
|
|
367
354
|
it "defaults count to 10 charges" do
|
368
355
|
11.times { Stripe::Charge.create(amount: 1, currency: 'usd', source: stripe_helper.generate_card_token) }
|
369
356
|
|
370
|
-
expect(Stripe::Charge.
|
357
|
+
expect(Stripe::Charge.list.data.count).to eq(10)
|
371
358
|
end
|
372
359
|
|
373
360
|
it "is marked as having more when more objects exist" do
|
374
361
|
11.times { Stripe::Charge.create(amount: 1, currency: 'usd', source: stripe_helper.generate_card_token) }
|
375
362
|
|
376
|
-
expect(Stripe::Charge.
|
363
|
+
expect(Stripe::Charge.list.has_more).to eq(true)
|
377
364
|
end
|
378
365
|
|
379
366
|
context "when passing limit" do
|
380
367
|
it "gets that many charges" do
|
381
|
-
expect(Stripe::Charge.
|
368
|
+
expect(Stripe::Charge.list(limit: 1).count).to eq(1)
|
382
369
|
end
|
383
370
|
end
|
384
371
|
end
|
@@ -398,13 +385,13 @@ shared_examples 'Charge API' do
|
|
398
385
|
Stripe::Charge.create(customer: cus.id, amount: 100, currency: "usd")
|
399
386
|
end
|
400
387
|
|
401
|
-
|
388
|
+
all_charges = Stripe::Charge.list
|
402
389
|
default_limit = 10
|
403
|
-
half = Stripe::Charge.
|
390
|
+
half = Stripe::Charge.list(starting_after: all_charges.data.at(1).id)
|
404
391
|
|
405
392
|
expect(half).to be_a(Stripe::ListObject)
|
406
393
|
expect(half.data.count).to eq(default_limit)
|
407
|
-
expect(half.data.first.id).to eq(
|
394
|
+
expect(half.data.first.id).to eq(all_charges.data.at(2).id)
|
408
395
|
end
|
409
396
|
|
410
397
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
shared_examples 'Customer API' do
|
4
|
+
let(:product_params) { {id: "prod_CCC", name: "My Product", type: "service"} }
|
5
|
+
let(:product) { stripe_helper.create_product(product_params) }
|
4
6
|
|
5
7
|
def gen_card_tk
|
6
8
|
stripe_helper.generate_card_token
|
@@ -15,6 +17,7 @@ shared_examples 'Customer API' do
|
|
15
17
|
expect(customer.id).to match(/^test_cus/)
|
16
18
|
expect(customer.email).to eq('johnny@appleseed.com')
|
17
19
|
expect(customer.description).to eq('a description')
|
20
|
+
expect(customer.preferred_locales).to eq([])
|
18
21
|
|
19
22
|
expect(customer.sources.count).to eq(1)
|
20
23
|
expect(customer.sources.data.length).to eq(1)
|
@@ -24,6 +27,17 @@ shared_examples 'Customer API' do
|
|
24
27
|
expect { customer.source }.to raise_error
|
25
28
|
end
|
26
29
|
|
30
|
+
it "creates a stripe customer with a default payment method" do
|
31
|
+
customer = Stripe::Customer.create({
|
32
|
+
email: 'johnny@appleseed.com',
|
33
|
+
invoice_settings: {
|
34
|
+
default_payment_method: "pm_1ExEuFL2DI6wht39WNJgbybl"
|
35
|
+
},
|
36
|
+
description: "a description"
|
37
|
+
})
|
38
|
+
expect(customer.invoice_settings.default_payment_method).to eq("pm_1ExEuFL2DI6wht39WNJgbybl")
|
39
|
+
end
|
40
|
+
|
27
41
|
it "creates a stripe customer with multiple cards and updates the default card" do
|
28
42
|
card_a = gen_card_tk
|
29
43
|
card_b = gen_card_tk
|
@@ -88,7 +102,7 @@ shared_examples 'Customer API' do
|
|
88
102
|
end
|
89
103
|
|
90
104
|
it 'creates a customer with a plan' do
|
91
|
-
plan = stripe_helper.create_plan(id: 'silver')
|
105
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id)
|
92
106
|
customer = Stripe::Customer.create(id: 'test_cus_plan', source: gen_card_tk, :plan => 'silver')
|
93
107
|
|
94
108
|
customer = Stripe::Customer.retrieve('test_cus_plan')
|
@@ -101,23 +115,29 @@ shared_examples 'Customer API' do
|
|
101
115
|
end
|
102
116
|
|
103
117
|
it "creates a customer with a plan (string/symbol agnostic)" do
|
104
|
-
|
105
|
-
customer = Stripe::Customer.create(id: 'test_cus_plan', source: gen_card_tk, :plan => :string_id)
|
118
|
+
stripe_helper.create_plan(id: 'silver', product: product.id)
|
106
119
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
customer
|
120
|
+
Stripe::Customer.create(id: 'cust_SLV1', source: gen_card_tk, :plan => 'silver')
|
121
|
+
customer = Stripe::Customer.retrieve('cust_SLV1')
|
122
|
+
expect(customer.subscriptions.count).to eq(1)
|
123
|
+
expect(customer.subscriptions.data.length).to eq(1)
|
124
|
+
expect(customer.subscriptions).to_not be_nil
|
125
|
+
expect(customer.subscriptions.first.plan.id).to eq('silver')
|
126
|
+
expect(customer.subscriptions.first.customer).to eq(customer.id)
|
112
127
|
|
113
|
-
|
114
|
-
|
128
|
+
Stripe::Customer.create(id: 'cust_SLV2', source: gen_card_tk, :plan => :silver)
|
129
|
+
customer = Stripe::Customer.retrieve('cust_SLV2')
|
130
|
+
expect(customer.subscriptions.count).to eq(1)
|
131
|
+
expect(customer.subscriptions.data.length).to eq(1)
|
132
|
+
expect(customer.subscriptions).to_not be_nil
|
133
|
+
expect(customer.subscriptions.first.plan.id).to eq('silver')
|
134
|
+
expect(customer.subscriptions.first.customer).to eq(customer.id)
|
115
135
|
end
|
116
136
|
|
117
137
|
context "create customer" do
|
118
138
|
|
119
139
|
it "with a trial when trial_end is set" do
|
120
|
-
plan = stripe_helper.create_plan(id: 'no_trial', amount: 999)
|
140
|
+
plan = stripe_helper.create_plan(id: 'no_trial', product: product.id, amount: 999)
|
121
141
|
trial_end = Time.now.utc.to_i + 3600
|
122
142
|
customer = Stripe::Customer.create(id: 'test_cus_trial_end', source: gen_card_tk, plan: 'no_trial', trial_end: trial_end)
|
123
143
|
|
@@ -133,7 +153,7 @@ shared_examples 'Customer API' do
|
|
133
153
|
end
|
134
154
|
|
135
155
|
it 'overrides trial period length when trial_end is set' do
|
136
|
-
plan = stripe_helper.create_plan(id: 'silver', amount: 999, trial_period_days: 14)
|
156
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id, amount: 999, trial_period_days: 14)
|
137
157
|
trial_end = Time.now.utc.to_i + 3600
|
138
158
|
customer = Stripe::Customer.create(id: 'test_cus_trial_end', source: gen_card_tk, plan: 'silver', trial_end: trial_end)
|
139
159
|
|
@@ -148,7 +168,7 @@ shared_examples 'Customer API' do
|
|
148
168
|
end
|
149
169
|
|
150
170
|
it 'creates a customer when trial_end is set and no source', live: true do
|
151
|
-
plan = stripe_helper.create_plan(id: 'silver', amount: 999)
|
171
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id, amount: 999)
|
152
172
|
trial_end = Time.now.utc.to_i + 3600
|
153
173
|
customer = Stripe::Customer.create(plan: 'silver', trial_end: trial_end)
|
154
174
|
expect(customer.subscriptions.count).to eq(1)
|
@@ -161,7 +181,7 @@ shared_examples 'Customer API' do
|
|
161
181
|
end
|
162
182
|
|
163
183
|
it "returns no trial when trial_end is set to 'now'" do
|
164
|
-
plan = stripe_helper.create_plan(id: 'silver', amount: 999, trial_period_days: 14)
|
184
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id, amount: 999, trial_period_days: 14)
|
165
185
|
customer = Stripe::Customer.create(id: 'test_cus_trial_end', source: gen_card_tk, plan: 'silver', trial_end: "now")
|
166
186
|
|
167
187
|
customer = Stripe::Customer.retrieve('test_cus_trial_end')
|
@@ -176,7 +196,7 @@ shared_examples 'Customer API' do
|
|
176
196
|
end
|
177
197
|
|
178
198
|
it "returns an error if trial_end is set to a past time" do
|
179
|
-
plan = stripe_helper.create_plan(id: 'silver', amount: 999)
|
199
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id, amount: 999)
|
180
200
|
expect {
|
181
201
|
Stripe::Customer.create(id: 'test_cus_trial_end', source: gen_card_tk, plan: 'silver', trial_end: Time.now.utc.to_i - 3600)
|
182
202
|
}.to raise_error {|e|
|
@@ -206,7 +226,7 @@ shared_examples 'Customer API' do
|
|
206
226
|
end
|
207
227
|
|
208
228
|
it 'cannot create a customer with an existing plan, but no card token' do
|
209
|
-
plan = stripe_helper.create_plan(id: 'p')
|
229
|
+
plan = stripe_helper.create_plan(id: 'p', product: product.id)
|
210
230
|
expect {
|
211
231
|
customer = Stripe::Customer.create(id: 'test_cus_no_plan', :plan => 'p')
|
212
232
|
}.to raise_error {|e|
|
@@ -235,7 +255,7 @@ shared_examples 'Customer API' do
|
|
235
255
|
discount = Stripe::Customer.retrieve(customer.id).discount
|
236
256
|
expect(discount).to_not be_nil
|
237
257
|
expect(discount.coupon).to_not be_nil
|
238
|
-
expect(discount.end).to be_within(
|
258
|
+
expect(discount.end).to be_within(10).of (DateTime.now >> 12).to_time.to_i
|
239
259
|
end
|
240
260
|
after { Stripe::Coupon.retrieve(coupon.id).delete }
|
241
261
|
after { Stripe::Customer.retrieve(customer.id).delete }
|
@@ -307,7 +327,7 @@ shared_examples 'Customer API' do
|
|
307
327
|
Stripe::Customer.create({ email: 'one@one.com' })
|
308
328
|
Stripe::Customer.create({ email: 'two@two.com' })
|
309
329
|
|
310
|
-
all = Stripe::Customer.
|
330
|
+
all = Stripe::Customer.list
|
311
331
|
expect(all.count).to eq(2)
|
312
332
|
expect(all.map &:email).to include('one@one.com', 'two@two.com')
|
313
333
|
end
|
@@ -317,8 +337,9 @@ shared_examples 'Customer API' do
|
|
317
337
|
email = original.email
|
318
338
|
|
319
339
|
coupon = Stripe::Coupon.create(id: "10PERCENT", duration: 'once')
|
320
|
-
original.description
|
321
|
-
original.
|
340
|
+
original.description = 'new desc'
|
341
|
+
original.preferred_locales = %w(fr en)
|
342
|
+
original.coupon = coupon.id
|
322
343
|
original.save
|
323
344
|
|
324
345
|
expect(original.email).to eq(email)
|
@@ -328,6 +349,7 @@ shared_examples 'Customer API' do
|
|
328
349
|
customer = Stripe::Customer.retrieve("test_customer_update")
|
329
350
|
expect(customer.email).to eq(original.email)
|
330
351
|
expect(customer.description).to eq('new desc')
|
352
|
+
expect(customer.preferred_locales).to eq(%w(fr en))
|
331
353
|
expect(customer.discount.coupon).to be_a Stripe::Coupon
|
332
354
|
end
|
333
355
|
|
@@ -391,7 +413,7 @@ shared_examples 'Customer API' do
|
|
391
413
|
end
|
392
414
|
|
393
415
|
it "still has subscriptions after save when subscriptions unchanged" do
|
394
|
-
plan = stripe_helper.create_plan(id: 'silver')
|
416
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id)
|
395
417
|
original = Stripe::Customer.create(source: gen_card_tk, plan: 'silver')
|
396
418
|
subscription = original.subscriptions.data.first
|
397
419
|
subscription_id = subscription.id
|
@@ -404,7 +426,7 @@ shared_examples 'Customer API' do
|
|
404
426
|
end
|
405
427
|
|
406
428
|
it "should add a customer to a subscription" do
|
407
|
-
plan = stripe_helper.create_plan(id: 'silver')
|
429
|
+
plan = stripe_helper.create_plan(id: 'silver', product: product.id)
|
408
430
|
customer = Stripe::Customer.create(source: gen_card_tk)
|
409
431
|
customer.subscriptions.create(plan: plan.id)
|
410
432
|
|
@@ -417,14 +439,6 @@ shared_examples 'Customer API' do
|
|
417
439
|
expect(customer.deleted).to eq(true)
|
418
440
|
end
|
419
441
|
|
420
|
-
it 'works with the update_subscription method' do
|
421
|
-
stripe_helper.create_plan(id: 'silver')
|
422
|
-
cus = Stripe::Customer.create(source: gen_card_tk)
|
423
|
-
expect {
|
424
|
-
cus.update_subscription(plan: 'silver')
|
425
|
-
}.not_to raise_error
|
426
|
-
end
|
427
|
-
|
428
442
|
it "deletes a stripe customer discount" do
|
429
443
|
original = Stripe::Customer.create(id: 'test_customer_update')
|
430
444
|
|