Sha256: e30d903cff7f2745b61fc86c1d6ec904fba191a6c1580edeae8ebc1164b6aa0e

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

require 'spec_helper'

describe 'acts_as_address' do
  def klass
    described_class
  end

  # These models' table only have a single column for state and country.
  # This tests both the default (zero-config) behavior and how the same column can be used for
  # non-default (name or code).
  describe AddressWithNameOnly do
    it do
      expect(klass.state_name_attribute).to eq :state
      expect(klass.state_code_attribute).to eq nil
      expect(klass.country_name_attribute).to eq :country
      expect(klass.country_code_attribute).to eq nil
    end
  end

  describe AddressWithCodeOnly do
    it do
      expect(klass.state_name_attribute).to eq  nil
      expect(klass.state_code_attribute).to eq :state
      expect(klass.country_name_attribute).to eq nil
      expect(klass.country_code_attribute).to eq :country
    end
  end

  # You can't use the same column for both name and code. If config tries to do that, which one
  # takes precedence?
  describe 'name_attribute == code_attribute' do
    let(:klass) do
      Class.new(ApplicationRecord) do
        self.table_name = 'addresses'
        acts_as_address(
          country: {
            name_attribute: 'country',
            code_attribute: 'country',
          }
        )
      end
    end
    let(:address) { klass.new }
    it 'name takes precedence' do
      expect(klass.country_name_attribute).to eq :country
      expect(klass.country_code_attribute).to eq nil
    end
  end

  describe 'address lines' do
    describe Address do
      it do
        expect(klass.multi_line_address?).to eq true
        expect(klass.address_attributes).to eq [:address]
      end
    end

    describe AddressWithSeparateAddressColumns do
      it do
        expect(klass.multi_line_address?).to eq false
        expect(klass.address_attributes).to eq [:address_1, :address_2, :address_3]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
address_concern-2.1.1 spec/models/acts_as_address_spec.rb
address_concern-2.1.0 spec/models/acts_as_address_spec.rb