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

Version Path
spree_core-3.3.0.rc1 spec/models/spree/reimbursement_type/original_payment_spec.rb
spree_core-3.2.1 spec/models/spree/reimbursement_type/original_payment_spec.rb
spree_core-3.2.0 spec/models/spree/reimbursement_type/original_payment_spec.rb
spree_core-3.2.0.rc3 spec/models/spree/reimbursement_type/original_payment_spec.rb
spree_core-3.2.0.rc2 spec/models/spree/reimbursement_type/original_payment_spec.rb
spree_core-3.2.0.rc1 spec/models/spree/reimbursement_type/original_payment_spec.rb