mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
93 lines
2.8 KiB
Ruby
93 lines
2.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Spree::Address do
|
|
let(:address) { build(:address) }
|
|
let(:enterprise_address) { build(:address, enterprise: build(:enterprise)) }
|
|
|
|
describe "associations" do
|
|
it { is_expected.to have_one(:enterprise) }
|
|
end
|
|
|
|
describe "delegation" do
|
|
it { is_expected.to delegate(:name).to(:state).with_prefix }
|
|
end
|
|
|
|
describe "destroy" do
|
|
it "can be deleted" do
|
|
expect { address.destroy }.to_not raise_error
|
|
end
|
|
|
|
it "cannot be deleted with associated enterprise" do
|
|
expect do
|
|
enterprise_address.destroy
|
|
end.to raise_error ActiveRecord::DeleteRestrictionError
|
|
end
|
|
end
|
|
|
|
describe "#full_name_reverse" do
|
|
it "joins last name and first name" do
|
|
address.firstname = "Jane"
|
|
address.lastname = "Doe"
|
|
expect(address.full_name_reverse).to eq("Doe Jane")
|
|
end
|
|
|
|
it "is last name when first name is blank" do
|
|
address.firstname = ""
|
|
address.lastname = "Doe"
|
|
expect(address.full_name_reverse).to eq("Doe")
|
|
end
|
|
|
|
it "is first name when last name is blank" do
|
|
address.firstname = "Jane"
|
|
address.lastname = ""
|
|
expect(address.full_name_reverse).to eq("Jane")
|
|
end
|
|
end
|
|
|
|
describe "geocode address" do
|
|
it "should include address1, address2, zipcode, city, state and country" do
|
|
expect(address.geocode_address).to include(address.address1)
|
|
expect(address.geocode_address).to include(address.address2)
|
|
expect(address.geocode_address).to include(address.zipcode)
|
|
expect(address.geocode_address).to include(address.city)
|
|
expect(address.geocode_address).to include(address.state.name)
|
|
expect(address.geocode_address).to include(address.country.name)
|
|
end
|
|
|
|
it "should not include empty fields" do
|
|
address.address2 = nil
|
|
address.city = ""
|
|
|
|
expect(address.geocode_address.split(',').length).to eql(4)
|
|
end
|
|
end
|
|
|
|
describe "full address" do
|
|
let(:address) { FactoryBot.build(:address) }
|
|
|
|
it "should include address1, address2, zipcode, city and state" do
|
|
expect(address.full_address).to include(address.address1)
|
|
expect(address.full_address).to include(address.address2)
|
|
expect(address.full_address).to include(address.zipcode)
|
|
expect(address.full_address).to include(address.city)
|
|
expect(address.full_address).to include(address.state.name)
|
|
expect(address.full_address).not_to include(address.country.name)
|
|
end
|
|
|
|
it "should not include empty fields" do
|
|
address.address2 = nil
|
|
address.city = ""
|
|
|
|
expect(address.full_address.split(',').length).to eql(3)
|
|
end
|
|
end
|
|
|
|
describe "setters" do
|
|
it "lets us set a country" do
|
|
expect do
|
|
Spree::Address.new.country = "A country"
|
|
end.to raise_error ActiveRecord::AssociationTypeMismatch
|
|
end
|
|
end
|
|
end
|