mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Provide credit card brand to Pin Payments
Spree replaced the Ruby code providing the credit card brand with a jquery plugin providing it on the checkout screen. I re-added Ruby code because it's easier and more robust than updating the user interface with new Javascript.
This commit is contained in:
@@ -12,6 +12,8 @@ module Checkout
|
||||
|
||||
move_payment_source_to_payment_attributes!
|
||||
|
||||
fill_in_card_type
|
||||
|
||||
set_amount_in_payments_attributes
|
||||
|
||||
construct_saved_card_attributes if @params[:order][:existing_card_id]
|
||||
@@ -31,6 +33,18 @@ module Checkout
|
||||
@params[:order][:payments_attributes].first[:source_attributes] = payment_source_params
|
||||
end
|
||||
|
||||
def fill_in_card_type
|
||||
payment = params[:order][:payments_attributes]&.first&.dig(:source_attributes)
|
||||
|
||||
return if payment&.dig(:number).blank?
|
||||
|
||||
payment[:cc_type] ||= card_brand(payment[:number])
|
||||
end
|
||||
|
||||
def card_brand(number)
|
||||
ActiveMerchant::Billing::CreditCard.brand?(number)
|
||||
end
|
||||
|
||||
def delete_payment_source_params!
|
||||
@params.delete(:payment_source)[
|
||||
@params[:order][:payments_attributes].first[:payment_method_id].underscore
|
||||
|
||||
@@ -36,6 +36,26 @@ describe Checkout::FormDataAdapter do
|
||||
end
|
||||
end
|
||||
|
||||
describe "and a credit card is provided" do
|
||||
before do
|
||||
params[:order][:payments_attributes].first[:source_attributes] = {number: "4444333322221111"}
|
||||
end
|
||||
|
||||
it "fills in missing credit card brand" do
|
||||
expect(adapter.params[:order][:payments_attributes].first[:source_attributes][:cc_type]).to eq "visa"
|
||||
end
|
||||
|
||||
it "leaves an existing credit card brand" do
|
||||
params[:order][:payments_attributes].first[:source_attributes][:cc_type] = "test"
|
||||
expect(adapter.params[:order][:payments_attributes].first[:source_attributes][:cc_type]).to eq "test"
|
||||
end
|
||||
|
||||
it "doesn't touch the credit card brand without a number" do
|
||||
params[:order][:payments_attributes].first[:source_attributes][:number] = ""
|
||||
expect(adapter.params[:order][:payments_attributes].first[:source_attributes].key?(:cc_type)).to eq false
|
||||
end
|
||||
end
|
||||
|
||||
describe "and existing credit card is provided" do
|
||||
before { params[:order][:existing_card_id] = credit_card.id }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user