add guard to granting credits and add spec (#2926)
This commit is contained in:
parent
e33c376789
commit
27bd5ed4e2
2 changed files with 19 additions and 3 deletions
|
|
@ -14,7 +14,8 @@ class CreditsController < ApplicationController
|
|||
|
||||
def create
|
||||
@number_to_purchase = params[:credit][:number_to_purchase].to_i
|
||||
make_payment
|
||||
return unless make_payment
|
||||
|
||||
credit_objects = []
|
||||
@number_to_purchase.times do
|
||||
if params[:user_type] == "organization"
|
||||
|
|
@ -34,9 +35,11 @@ class CreditsController < ApplicationController
|
|||
find_or_create_card
|
||||
update_user_stripe_info
|
||||
create_charge
|
||||
true
|
||||
rescue Stripe::CardError => e
|
||||
flash[:error] = e.message
|
||||
redirect_to "/credits/purchase"
|
||||
false
|
||||
end
|
||||
|
||||
def find_or_create_customer
|
||||
|
|
|
|||
|
|
@ -43,11 +43,11 @@ RSpec.describe "Credits", type: :request do
|
|||
it "creates unspent credits" do
|
||||
post "/credits", params: {
|
||||
credit: {
|
||||
number_to_purchase: 20
|
||||
number_to_purchase: 25
|
||||
},
|
||||
stripe_token: stripe_helper.generate_card_token
|
||||
}
|
||||
expect(user.credits.where(spent: false).size).to eq(20)
|
||||
expect(user.credits.where(spent: false).size).to eq(25)
|
||||
end
|
||||
|
||||
it "makes a valid Stripe charge" do
|
||||
|
|
@ -142,5 +142,18 @@ RSpec.describe "Credits", type: :request do
|
|||
expect(org_admin.credits.where(spent: false).size).to eq 0
|
||||
end
|
||||
end
|
||||
|
||||
context "when payment fails" do
|
||||
it "does not reward credits" do
|
||||
StripeMock.prepare_error(Stripe::CardError.new(2, 3, 4), :new_charge)
|
||||
post "/credits", params: {
|
||||
credit: {
|
||||
number_to_purchase: 25
|
||||
},
|
||||
stripe_token: stripe_helper.generate_card_token
|
||||
}
|
||||
expect(user.credits.where(spent: false).size).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue