payola-payments 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/payola/checkout_button.js +8 -1
- data/app/assets/javascripts/payola/subscription_form_onestep.js +13 -2
- data/app/assets/javascripts/payola/subscription_form_twostep.js +10 -1
- data/app/controllers/concerns/payola/async_behavior.rb +14 -5
- data/app/controllers/payola/subscriptions_controller.rb +16 -3
- data/app/controllers/payola/transactions_controller.rb +1 -1
- data/app/models/concerns/payola/plan.rb +1 -1
- data/app/models/payola/subscription.rb +7 -1
- data/app/services/payola/change_subscription_quantity.rb +25 -0
- data/app/services/payola/charge_card.rb +8 -4
- data/app/services/payola/create_subscription.rb +1 -0
- data/app/services/payola/start_subscription.rb +48 -12
- data/app/views/payola/subscriptions/_change_plan.html.erb +1 -1
- data/config/database.yml.ci +6 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20141213205847_add_active_to_payola_coupon.rb +5 -0
- data/lib/payola.rb +4 -4
- data/lib/payola/engine.rb +1 -1
- data/lib/payola/version.rb +1 -1
- data/lib/payola/worker.rb +1 -1
- data/spec/concerns/plan_spec.rb +9 -0
- data/spec/concerns/sellable_spec.rb +1 -1
- data/spec/controllers/payola/subscriptions_controller_spec.rb +41 -13
- data/spec/controllers/payola/transactions_controller_spec.rb +7 -5
- data/spec/dummy/app/models/user.rb +2 -0
- data/spec/dummy/app/views/subscribe/index.html.erb +2 -0
- data/spec/dummy/config/environments/test.rb +5 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20141204170622_create_users.rb +8 -0
- data/spec/dummy/db/schema.rb +16 -10
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +131 -0
- data/spec/dummy/log/test.log +75119 -0
- data/spec/factories/subscription_plan.rb +2 -2
- data/spec/mailers/payola/receipt_mailer_spec.rb +6 -1
- data/spec/models/payola/coupon_spec.rb +27 -0
- data/spec/payola_spec.rb +2 -2
- data/spec/services/payola/change_subscription_plan_spec.rb +0 -1
- data/spec/services/payola/change_subscription_quantity_spec.rb +29 -0
- data/spec/services/payola/charge_card_spec.rb +9 -0
- data/spec/services/payola/start_subscription_spec.rb +37 -0
- data/spec/worker_spec.rb +1 -1
- metadata +15 -4
@@ -8,8 +8,8 @@ FactoryGirl.define do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
factory :subscription_plan_without_interval_count do
|
11
|
-
sequence(:name) { |n| "Foo #{n}" }
|
12
|
-
sequence(:stripe_id) { |n| "foo-#{n}" }
|
11
|
+
sequence(:name) { |n| "Foo Without Interval #{n}" }
|
12
|
+
sequence(:stripe_id) { |n| "foo-without-interval-#{n}" }
|
13
13
|
amount 100
|
14
14
|
interval "month"
|
15
15
|
end
|
@@ -1,18 +1,23 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'docverter'
|
2
3
|
|
3
4
|
module Payola
|
4
5
|
describe ReceiptMailer do
|
5
6
|
let(:sale) { create(:sale) }
|
6
7
|
|
8
|
+
before do
|
9
|
+
Payola.pdf_receipt = false
|
10
|
+
end
|
11
|
+
|
7
12
|
describe '#receipt' do
|
8
13
|
it 'should send a receipt' do
|
9
|
-
Payola.pdf_receipt = false
|
10
14
|
mail = Payola::ReceiptMailer.receipt(sale.guid)
|
11
15
|
expect(mail.subject).to eq 'Purchase Receipt'
|
12
16
|
end
|
13
17
|
|
14
18
|
it 'should send a receipt with a pdf' do
|
15
19
|
Payola.pdf_receipt = true
|
20
|
+
expect(Docverter::Conversion).to receive(:run).and_return('pdf')
|
16
21
|
mail = Payola::ReceiptMailer.receipt(sale.guid)
|
17
22
|
expect(mail.attachments["receipt-#{sale.guid}.pdf"]).to_not be nil
|
18
23
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Payola
|
4
|
+
describe Coupon do
|
5
|
+
describe "validations" do
|
6
|
+
it "should validate uniqueness of coupon code" do
|
7
|
+
c1 = Coupon.create(code: 'abc')
|
8
|
+
expect(c1.valid?).to be_truthy
|
9
|
+
|
10
|
+
c2 = Coupon.new(code: 'abc')
|
11
|
+
expect(c2.valid?).to be_falsey
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "active" do
|
16
|
+
it "should allow active flag" do
|
17
|
+
c1 = Coupon.create(code: 'abc', active: false)
|
18
|
+
expect(c1.active?).to be_falsey
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should be true by default" do
|
22
|
+
c1 = Coupon.create(code: 'abc')
|
23
|
+
expect(c1.active?).to be_truthy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/spec/payola_spec.rb
CHANGED
@@ -13,13 +13,13 @@ module Payola
|
|
13
13
|
it "should set publishable key from env" do
|
14
14
|
ENV['STRIPE_PUBLISHABLE_KEY'] = 'some_key'
|
15
15
|
Payola.reset!
|
16
|
-
expect(Payola.publishable_key).to eq 'some_key'
|
16
|
+
expect(Payola.publishable_key.call).to eq 'some_key'
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should set secret key from env" do
|
20
20
|
ENV['STRIPE_SECRET_KEY'] = 'some_secret'
|
21
21
|
Payola.reset!
|
22
|
-
expect(Payola.secret_key).to eq 'some_secret'
|
22
|
+
expect(Payola.secret_key.call).to eq 'some_secret'
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Payola
|
4
|
+
describe ChangeSubscriptionQuantity do
|
5
|
+
let(:stripe_helper) { StripeMock.create_test_helper }
|
6
|
+
|
7
|
+
describe "#call" do
|
8
|
+
before do
|
9
|
+
@plan = create(:subscription_plan)
|
10
|
+
|
11
|
+
token = StripeMock.generate_card_token({})
|
12
|
+
@subscription = create(:subscription, quantity: 1, stripe_token: token)
|
13
|
+
StartSubscription.call(@subscription)
|
14
|
+
Payola::ChangeSubscriptionQuantity.call(@subscription, 2)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should change the quantity on the stripe subscription" do
|
18
|
+
customer = Stripe::Customer.retrieve(@subscription.stripe_customer_id)
|
19
|
+
sub = customer.subscriptions.retrieve(@subscription.stripe_id)
|
20
|
+
|
21
|
+
expect(sub.quantity).to eq 2
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should change the quantity on the payola subscription" do
|
25
|
+
expect(@subscription.reload.quantity).to eq 2
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -10,6 +10,15 @@ module Payola
|
|
10
10
|
expect(sale.reload.stripe_customer_id).to_not be_nil
|
11
11
|
end
|
12
12
|
|
13
|
+
it "should not create a customer if one already exists" do
|
14
|
+
customer = Stripe::Customer.create
|
15
|
+
sale = create(:sale, state: 'processing', stripe_customer_id: customer.id)
|
16
|
+
expect(Stripe::Customer).to receive(:retrieve).and_return(customer)
|
17
|
+
ChargeCard.call(sale)
|
18
|
+
expect(sale.reload.stripe_customer_id).to eq customer.id
|
19
|
+
expect(sale.state).to eq 'finished'
|
20
|
+
end
|
21
|
+
|
13
22
|
it "should create a charge" do
|
14
23
|
sale = create(:sale, state: 'processing', stripe_token: stripe_helper.generate_card_token)
|
15
24
|
ChargeCard.call(sale)
|
@@ -4,6 +4,8 @@ module Payola
|
|
4
4
|
describe StartSubscription do
|
5
5
|
let(:stripe_helper) { StripeMock.create_test_helper }
|
6
6
|
let(:token){ StripeMock.generate_card_token({}) }
|
7
|
+
let(:user){ User.create }
|
8
|
+
|
7
9
|
describe "#call" do
|
8
10
|
it "should create a customer" do
|
9
11
|
plan = create(:subscription_plan)
|
@@ -31,6 +33,41 @@ module Payola
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
36
|
+
it "should re-use an existing customer" do
|
37
|
+
plan = create(:subscription_plan)
|
38
|
+
subscription = create(:subscription, state: 'processing', plan: plan, stripe_token: token, owner: user)
|
39
|
+
StartSubscription.call(subscription)
|
40
|
+
CancelSubscription.call(subscription)
|
41
|
+
|
42
|
+
subscription2 = create(:subscription, state: 'processing', plan: plan, owner: user)
|
43
|
+
StartSubscription.call(subscription2)
|
44
|
+
expect(subscription2.reload.stripe_customer_id).to_not be_nil
|
45
|
+
expect(subscription2.reload.stripe_customer_id).to eq subscription.reload.stripe_customer_id
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should create an invoice item with a setup fee" do
|
49
|
+
plan = create(:subscription_plan)
|
50
|
+
subscription = create(:subscription, state: 'processing', plan: plan, stripe_token: token, owner: user, setup_fee: 100)
|
51
|
+
StartSubscription.call(subscription)
|
52
|
+
|
53
|
+
ii = Stripe::InvoiceItem.all(customer: subscription.stripe_customer_id).first
|
54
|
+
expect(ii).to_not be_nil
|
55
|
+
expect(ii.amount).to eq 100
|
56
|
+
expect(ii.description).to eq "Setup Fee"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should allow the plan to override the setup fee description" do
|
60
|
+
plan = create(:subscription_plan)
|
61
|
+
subscription = create(:subscription, state: 'processing', plan: plan, stripe_token: token, owner: user, setup_fee: 100)
|
62
|
+
|
63
|
+
expect(plan).to receive(:setup_fee_description).with(subscription).and_return('Random Mystery Fee')
|
64
|
+
StartSubscription.call(subscription)
|
65
|
+
|
66
|
+
ii = Stripe::InvoiceItem.all(customer: subscription.stripe_customer_id).first
|
67
|
+
expect(ii).to_not be_nil
|
68
|
+
expect(ii.amount).to eq 100
|
69
|
+
expect(ii.description).to eq 'Random Mystery Fee'
|
70
|
+
end
|
34
71
|
end
|
35
72
|
end
|
36
73
|
end
|
data/spec/worker_spec.rb
CHANGED
@@ -26,7 +26,7 @@ module Payola
|
|
26
26
|
expect(Payola::Worker::Sidekiq).to receive(:can_run?).and_return(false)
|
27
27
|
expect(Payola::Worker::SuckerPunch).to receive(:can_run?).and_return(false)
|
28
28
|
|
29
|
-
expect { Payola::Worker.autofind }.to raise_error("No
|
29
|
+
expect { Payola::Worker.autofind }.to raise_error("No eligible background worker systems found.")
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: payola-payments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pete Keen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 4.0.7
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 4.0.7
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: stripe_event
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -199,6 +199,7 @@ files:
|
|
199
199
|
- app/models/payola/subscription.rb
|
200
200
|
- app/services/payola/cancel_subscription.rb
|
201
201
|
- app/services/payola/change_subscription_plan.rb
|
202
|
+
- app/services/payola/change_subscription_quantity.rb
|
202
203
|
- app/services/payola/charge_card.rb
|
203
204
|
- app/services/payola/create_plan.rb
|
204
205
|
- app/services/payola/create_sale.rb
|
@@ -231,6 +232,7 @@ files:
|
|
231
232
|
- app/views/payola/transactions/new.html.erb
|
232
233
|
- app/views/payola/transactions/show.html.erb
|
233
234
|
- app/views/payola/transactions/wait.html.erb
|
235
|
+
- config/database.yml.ci
|
234
236
|
- config/routes.rb
|
235
237
|
- db/migrate/20141001170138_create_payola_sales.rb
|
236
238
|
- db/migrate/20141001203541_create_payola_stripe_webhooks.rb
|
@@ -250,6 +252,7 @@ files:
|
|
250
252
|
- db/migrate/20141114154223_add_signed_custom_fields_to_payola_subscription.rb
|
251
253
|
- db/migrate/20141114163841_add_addresses_to_payola_subscription.rb
|
252
254
|
- db/migrate/20141122020755_add_setup_fee_to_payola_subscriptions.rb
|
255
|
+
- db/migrate/20141213205847_add_active_to_payola_coupon.rb
|
253
256
|
- lib/generators/payola/install_generator.rb
|
254
257
|
- lib/generators/payola/templates/initializer.rb
|
255
258
|
- lib/payola-payments.rb
|
@@ -282,6 +285,7 @@ files:
|
|
282
285
|
- spec/dummy/app/models/product.rb
|
283
286
|
- spec/dummy/app/models/subscription_plan.rb
|
284
287
|
- spec/dummy/app/models/subscription_plan_without_interval_count.rb
|
288
|
+
- spec/dummy/app/models/user.rb
|
285
289
|
- spec/dummy/app/views/buy/index.html.erb
|
286
290
|
- spec/dummy/app/views/home/index.html.erb
|
287
291
|
- spec/dummy/app/views/layouts/application.html.erb
|
@@ -316,6 +320,7 @@ files:
|
|
316
320
|
- spec/dummy/db/migrate/20141029140518_create_owners.rb
|
317
321
|
- spec/dummy/db/migrate/20141105010234_create_subscription_plans.rb
|
318
322
|
- spec/dummy/db/migrate/20141120170744_create_subscription_plan_without_interval_counts.rb
|
323
|
+
- spec/dummy/db/migrate/20141204170622_create_users.rb
|
319
324
|
- spec/dummy/db/schema.rb
|
320
325
|
- spec/dummy/db/test.sqlite3
|
321
326
|
- spec/dummy/log/development.log
|
@@ -362,12 +367,14 @@ files:
|
|
362
367
|
- spec/helpers/payola/price_helper_spec.rb
|
363
368
|
- spec/mailers/payola/admin_mailer_spec.rb
|
364
369
|
- spec/mailers/payola/receipt_mailer_spec.rb
|
370
|
+
- spec/models/payola/coupon_spec.rb
|
365
371
|
- spec/models/payola/sale_spec.rb
|
366
372
|
- spec/models/payola/stripe_webhook_spec.rb
|
367
373
|
- spec/models/payola/subscription_spec.rb
|
368
374
|
- spec/payola_spec.rb
|
369
375
|
- spec/services/payola/cancel_subscription_spec.rb
|
370
376
|
- spec/services/payola/change_subscription_plan_spec.rb
|
377
|
+
- spec/services/payola/change_subscription_quantity_spec.rb
|
371
378
|
- spec/services/payola/charge_card_spec.rb
|
372
379
|
- spec/services/payola/create_plan_spec.rb
|
373
380
|
- spec/services/payola/create_sale_spec.rb
|
@@ -426,6 +433,7 @@ test_files:
|
|
426
433
|
- spec/dummy/app/models/product.rb
|
427
434
|
- spec/dummy/app/models/subscription_plan.rb
|
428
435
|
- spec/dummy/app/models/subscription_plan_without_interval_count.rb
|
436
|
+
- spec/dummy/app/models/user.rb
|
429
437
|
- spec/dummy/app/views/buy/index.html.erb
|
430
438
|
- spec/dummy/app/views/home/index.html.erb
|
431
439
|
- spec/dummy/app/views/layouts/application.html.erb
|
@@ -460,6 +468,7 @@ test_files:
|
|
460
468
|
- spec/dummy/db/migrate/20141029140518_create_owners.rb
|
461
469
|
- spec/dummy/db/migrate/20141105010234_create_subscription_plans.rb
|
462
470
|
- spec/dummy/db/migrate/20141120170744_create_subscription_plan_without_interval_counts.rb
|
471
|
+
- spec/dummy/db/migrate/20141204170622_create_users.rb
|
463
472
|
- spec/dummy/db/schema.rb
|
464
473
|
- spec/dummy/db/test.sqlite3
|
465
474
|
- spec/dummy/log/development.log
|
@@ -508,12 +517,14 @@ test_files:
|
|
508
517
|
- spec/helpers/payola/price_helper_spec.rb
|
509
518
|
- spec/mailers/payola/admin_mailer_spec.rb
|
510
519
|
- spec/mailers/payola/receipt_mailer_spec.rb
|
520
|
+
- spec/models/payola/coupon_spec.rb
|
511
521
|
- spec/models/payola/sale_spec.rb
|
512
522
|
- spec/models/payola/stripe_webhook_spec.rb
|
513
523
|
- spec/models/payola/subscription_spec.rb
|
514
524
|
- spec/payola_spec.rb
|
515
525
|
- spec/services/payola/cancel_subscription_spec.rb
|
516
526
|
- spec/services/payola/change_subscription_plan_spec.rb
|
527
|
+
- spec/services/payola/change_subscription_quantity_spec.rb
|
517
528
|
- spec/services/payola/charge_card_spec.rb
|
518
529
|
- spec/services/payola/create_plan_spec.rb
|
519
530
|
- spec/services/payola/create_sale_spec.rb
|