Files
openfoodnetwork/spec/features/admin/payments_spec.rb
Luis Ramos 677f31ffa8 Make payment source_views/gateway work with nil credit card
This will happen if user deletes a saved credit card used previously. In this case, the admin payment details page will render empty details and the payment amount
2020-02-26 11:55:17 +00:00

65 lines
1.7 KiB
Ruby

require 'spec_helper'
feature '
As an admin
I want to manage payments
' do
include AuthenticationWorkflow
let(:order) { create(:completed_order_with_fees) }
scenario "visiting the payment form" do
quick_login_as_admin
visit spree.new_admin_order_payment_path order
expect(page).to have_content "New Payment"
end
context "with sensitive payment fee" do
before do
payment_method = create(:payment_method, distributors: [order.distributor])
# This calculator doesn't handle a `nil` order well.
# That has been useful in finding bugs. ;-)
payment_method.calculator = Spree::Calculator::FlatPercentItemTotal.new
payment_method.save!
end
scenario "visiting the payment form" do
quick_login_as_admin
visit spree.new_admin_order_payment_path order
expect(page).to have_content "New Payment"
end
end
context "with a StripeSCA payment method" do
before do
stripe_payment_method = create(:stripe_sca_payment_method, distributors: [order.distributor])
order.payments << create(:payment, payment_method: stripe_payment_method, order: order)
end
it "renders the payment details" do
quick_login_as_admin
visit spree.admin_order_payments_path order
page.click_link("StripeSCA")
expect(page).to have_content order.payments.last.source.last_digits
end
context "with a deleted credit card" do
before do
order.payments.last.update_attribute(:source, nil)
end
it "renders the payment details" do
quick_login_as_admin
visit spree.admin_order_payments_path order
page.click_link("StripeSCA")
expect(page).to have_content order.payments.last.amount
end
end
end
end