From bc8ae3449d0cfae5c9df0ce48f32ca1cb87b2360 Mon Sep 17 00:00:00 2001 From: Rimian Perkins Date: Sat, 14 Sep 2019 21:00:56 +1000 Subject: [PATCH] send the customer to the payment api --- app/controllers/patrons_controller.rb | 3 ++- .../discourse_patrons/patrons_controller_spec.rb | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/patrons_controller.rb b/app/controllers/patrons_controller.rb index f1ea435..2ababd5 100644 --- a/app/controllers/patrons_controller.rb +++ b/app/controllers/patrons_controller.rb @@ -32,10 +32,11 @@ module DiscoursePatrons description: SiteSetting.discourse_patrons_payment_description, receipt_email: params[:receipt_email], confirm: true, + customer: user_id ) Payment.create( - user_id: user_id, + user_id: response[:customer], payment_intent_id: response[:id], receipt_email: response[:receipt_email], url: response[:charges][:url], diff --git a/spec/controllers/discourse_patrons/patrons_controller_spec.rb b/spec/controllers/discourse_patrons/patrons_controller_spec.rb index 35dcf1c..e29bce3 100644 --- a/spec/controllers/discourse_patrons/patrons_controller_spec.rb +++ b/spec/controllers/discourse_patrons/patrons_controller_spec.rb @@ -41,20 +41,23 @@ module DiscoursePatrons end describe 'create' do + let!(:current_user) { Fabricate(:user) } + let(:payment) do { id: 'xyz-1234', charges: { url: '/v1/charges?payment_intent=xyz-1234' }, amount: 9000, receipt_email: 'hello@example.com', - currency: 'aud' + currency: 'aud', + customer: current_user.id } end before do SiteSetting.stubs(:discourse_patrons_currency).returns('AUD') SiteSetting.stubs(:discourse_patrons_secret_key).returns('xyz-678') - controller.stubs(:current_user).returns(Fabricate(:user)) + controller.stubs(:current_user).returns(current_user) end it 'responds ok' do @@ -96,6 +99,12 @@ module DiscoursePatrons expect(response).to have_http_status(200) end + it 'has the customer id' do + ::Stripe::PaymentIntent.expects(:create).with(has_entry(:customer, current_user.id)).returns(payment) + post :create, params: {}, format: :json + expect(response).to have_http_status(200) + end + it 'has a receipt email' do ::Stripe::PaymentIntent.expects(:create).with(has_entry(:receipt_email, 'hello@example.com')).returns(payment) post :create, params: { receipt_email: 'hello@example.com' }, format: :json