Files
openfoodnetwork/spec/features/admin/payments_spec.rb
filipefurtad0 6f694e2cab Standardise spec block naming
The `feature` and `scenario` names are aliases only available in feature
specs and not needed. It's confusing to have different names and we can
easily move feature specs to system specs when using standard names.
2021-09-28 08:24:05 +10:00

68 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
describe '
As an admin
I want to manage payments
' do
include AuthenticationHelper
let(:order) { create(:completed_order_with_fees) }
describe "payments/new" do
it "displays the order balance as the default payment amount" do
login_as_admin_and_visit spree.new_admin_order_payment_path order
expect(page).to have_content I18n.t(:new_payment)
expect(page).to have_field(:payment_amount, with: order.outstanding_balance.to_f)
end
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 = Calculator::FlatPercentItemTotal.new
payment_method.save!
end
it "renders the new payment page" do
login_as_admin_and_visit spree.new_admin_order_payment_path order
expect(page).to have_content I18n.t(:new_payment)
end
end
context "creating an order's first payment via admin", js: true do
before do
order.update_columns(
state: "payment",
payment_state: nil,
shipment_state: nil,
completed_at: nil
)
end
it "creates the payment, completes the order, and updates payment and shipping states" do
login_as_admin_and_visit spree.new_admin_order_payment_path order
expect(page).to have_content "New Payment"
within "#new_payment" do
find('input[type="radio"]').click
end
click_button "Update"
expect(page).to have_content "Payments"
order.reload
expect(order.state).to eq "complete"
expect(order.payment_state).to eq "balance_due"
expect(order.shipment_state).to eq "pending"
end
end
end