Sha256: 370dc53fc765cf3d3ad28dfe7861f3c9a88227915986c60b9bee757c152d0b6a

Contents?: true

Size: 1.75 KB

Versions: 16

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'

describe Spree::Country, type: :model do
  let(:america) { create :country }
  let(:canada)  { create :country, name: 'Canada', iso_name: 'CANADA', numcode: '124' }

  describe 'Callbacks' do
    it { is_expected.to callback(:ensure_not_default).before(:destroy) }
  end

  describe 'Associations' do
    it { is_expected.to have_many(:addresses).dependent(:restrict_with_error) }
  end

  describe 'Validations' do
    it { is_expected.to validate_presence_of(:name) }
    it { is_expected.to validate_presence_of(:iso_name) }
    it { is_expected.to validate_uniqueness_of(:iso_name).case_insensitive }
    it { is_expected.to validate_uniqueness_of(:name).case_insensitive }
  end

  describe '.default' do
    context 'when default_country_id config is set' do
      before { Spree::Config[:default_country_id] = canada.id }
      it 'will return the country from the config' do
        expect(described_class.default.id).to eql canada.id
      end
    end

    context 'config is not set though record for america exists' do
      before { america.touch }
      it 'will return the US' do
        expect(described_class.default.id).to eql america.id
      end
    end
  end

  describe 'ensure default country in not deleted' do
    before { Spree::Config[:default_country_id] = america.id }

    context 'will not destroy country if it is default' do
      subject { america.destroy }
      it { is_expected.to be_falsy }

      context 'error should be default country cannot be deleted' do
        before { subject }
        it { expect(america.errors[:base]).to include(Spree.t(:default_country_cannot_be_deleted)) }
      end
    end

    context 'will destroy if it is not a default' do
      it { expect(canada.destroy).to be_truthy }
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
spree_core-3.3.0.rc1 spec/models/spree/country_spec.rb
spree_core-3.1.5 spec/models/spree/country_spec.rb
spree_core-3.2.1 spec/models/spree/country_spec.rb
spree_core-3.2.0 spec/models/spree/country_spec.rb
spree_core-3.1.4 spec/models/spree/country_spec.rb
spree_core-3.2.0.rc3 spec/models/spree/country_spec.rb
spree_core-3.2.0.rc2 spec/models/spree/country_spec.rb
spree_core-3.2.0.rc1 spec/models/spree/country_spec.rb
spree_core-3.1.3 spec/models/spree/country_spec.rb
spree_core-3.1.2 spec/models/spree/country_spec.rb
spree_core-3.1.1 spec/models/spree/country_spec.rb
spree_core-3.1.0 spec/models/spree/country_spec.rb
spree_core-3.1.0.rc4 spec/models/spree/country_spec.rb
spree_core-3.1.0.rc3 spec/models/spree/country_spec.rb
spree_core-3.1.0.rc2 spec/models/spree/country_spec.rb
spree_core-3.1.0.rc1 spec/models/spree/country_spec.rb