Sha256: 0d7c6c3a38326e03dcb8543dbdb034b1e14cae6dcb9d71674f86e42b1ab97812
Contents?: true
Size: 1.79 KB
Versions: 6
Compression:
Stored size: 1.79 KB
Contents
require 'spec_helper' module Spree describe ReimbursementType::OriginalPayment, type: :model do let(:reimbursement) { create(:reimbursement, return_items_count: 1) } let(:return_item) { reimbursement.return_items.first } let(:payment) { reimbursement.order.payments.first } let(:simulate) { false } let!(:default_refund_reason) { Spree::RefundReason.find_or_create_by!(name: Spree::RefundReason::RETURN_PROCESSING_REASON, mutable: false) } subject { Spree::ReimbursementType::OriginalPayment.reimburse(reimbursement, [return_item], simulate)} before { reimbursement.update!(total: reimbursement.calculated_total) } describe ".reimburse" do context "simulate is true" do let(:simulate) { true } it "returns an array of readonly refunds" do expect(subject.map(&:class)).to eq [Spree::Refund] expect(subject.map(&:readonly?)).to eq [true] end end context "simulate is false" do it 'performs the refund' do expect { subject }.to change { payment.refunds.count }.by(1) expect(payment.refunds.sum(:amount)).to eq reimbursement.return_items.to_a.sum(&:total) end end context 'when no credit is allowed on the payment' do before do expect_any_instance_of(Spree::Payment).to receive(:credit_allowed).and_return 0 end it 'returns an empty array' do expect(subject).to eq [] end end context 'when a payment is negative' do before do expect_any_instance_of(Spree::Payment).to receive(:amount).and_return -100 end it 'returns an empty array' do expect(subject).to eq [] end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems