Sha256: 2f0ca691c88e5c77417f76287651ce6b127d1ddcd39a8ad05d63743339c622f5

Contents?: true

Size: 1.46 KB

Versions: 34

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

require 'rails_helper'

RSpec.describe Spree::WalletPaymentSource, type: :model do
  subject { Spree::WalletPaymentSource }

  describe "validation" do
    context 'with a non-PaymentSource model' do
      with_model 'NonPaymentSource', scope: :all do
        model do
          # We have to set this up or else `inverse_of` prevents us from testing our code
          has_many :wallet_payment_sources, class_name: 'Spree::WalletPaymentSource', as: :payment_source, inverse_of: :payment_source
        end
      end

      let(:payment_source) { NonPaymentSource.create! }

      it "errors when `payment_source` is not a `Spree::PaymentSource`" do
        wallet_payment_source = Spree::WalletPaymentSource.new(
          payment_source: payment_source,
          user: create(:user)
        )

        expect(wallet_payment_source).not_to be_valid
        expect(wallet_payment_source.errors.messages).to eq(
          { payment_source: ["has to be a Spree::PaymentSource"] }
        )
      end
    end

    it "is valid with a `credit_card` as `payment_source`" do
      valid_attrs = {
        payment_source: create(:credit_card),
        user: create(:user)
      }
      expect(subject.new(valid_attrs)).to be_valid
    end

    it "is valid with `store_credit` as `payment_source`" do
      valid_attrs = {
        payment_source: create(:store_credit),
        user: create(:user)
      }
      expect(subject.new(valid_attrs)).to be_valid
    end
  end
end

Version data entries

34 entries across 34 versions & 2 rubygems

Version Path
solidus_core-2.8.6 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.6.6 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.7.4 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.8.5 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.7.3 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.6.5 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.8.4 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.8.3 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.7.2 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.6.4 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.8.2 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.8.1 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.6.3 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.8.0 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.7.1 spec/models/spree/wallet_payment_source_spec.rb
solidus_core-2.6.2 spec/models/spree/wallet_payment_source_spec.rb
solidus_core_devise_token_auth-2.8.0.alpha.14 spec/models/spree/wallet_payment_source_spec.rb
solidus_core_devise_token_auth-2.8.0.alpha.13 spec/models/spree/wallet_payment_source_spec.rb
solidus_core_devise_token_auth-2.8.0.alpha.12 spec/models/spree/wallet_payment_source_spec.rb
solidus_core_devise_token_auth-2.8.0.alpha.11 spec/models/spree/wallet_payment_source_spec.rb