Sha256: e3af117f55162d47bdab9e6176819df03aeae96184856b1faa9d3cd5172281ed

Contents?: true

Size: 1.63 KB

Versions: 8

Compression:

Stored size: 1.63 KB

Contents

require 'spec_helper'

RSpec.describe Addresses::Zipcode, type: :model do
  describe 'validation' do
    it { is_expected.to validate_presence_of(:number) }
    it { is_expected.to validate_presence_of(:city_id) }
    it { is_expected.to validate_presence_of(:state_id) }
    it { is_expected.to validate_presence_of(:street) }
  end

  describe 'association' do
    it { is_expected.to belong_to(:city) }
    it { is_expected.to belong_to(:neighborhood) }
    it { is_expected.to have_many(:addresses) }
  end

  describe '.find_or_create_by_service', :vcr do
    context 'when the zipcode exists in database' do
      let!(:zipcode) { create :zipcode }
      let!(:searched_zipcode) { Addresses::Zipcode.find_or_create_by_service(zipcode.number) }

      it { expect(searched_zipcode).to eq(zipcode) }
    end

    context 'when the zipcode not exists in database' do
      context 'but the zipcode was found in web service' do
        let!(:searched_zipcode) { Addresses::Zipcode.find_or_create_by_service('05012010') }

        it { expect(searched_zipcode).to be_a_instance_of(Addresses::Zipcode) }
        it { expect(searched_zipcode.number).to eq('05012010') }
        it { expect(searched_zipcode.street).to eq('Rua Ministro Gastão Mesquita') }
      end

      context 'and the zipcode was not found in web service' do
        let!(:searched_zipcode) { Addresses::Zipcode.find_or_create_by_service('99999999') }
        it { expect(searched_zipcode).to be_nil }
      end
    end
  end

  describe '#to_s' do
    let!(:zipcode) { create :zipcode }
    it { expect(zipcode.to_s).to eq("Street name, Neighborhood name. City name - State acronym") }
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
addresses-1.0.11 spec/models/addresses/zipcode_spec.rb
addresses-1.0.9 spec/models/addresses/zipcode_spec.rb
addresses-1.0.8 spec/models/addresses/zipcode_spec.rb
addresses-1.0.7 spec/models/addresses/zipcode_spec.rb
addresses-1.0.6 spec/models/addresses/zipcode_spec.rb
addresses-1.0.5 spec/models/addresses/zipcode_spec.rb
addresses-1.0.4 spec/models/addresses/zipcode_spec.rb
addresses-1.0.3 spec/models/addresses/zipcode_spec.rb