78 lines
2.1 KiB
Ruby
78 lines
2.1 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Address do
|
|
describe "#format" do
|
|
it "prints the address in a single line" do
|
|
address = Address.new("100 Test Lane", "Suite 1", "New York", "NY", "10001", "US")
|
|
|
|
expect(address.to_s).to eq("100 Test Lane, Suite 1, New York, NY 10001, US")
|
|
end
|
|
|
|
it "prints the address condensed into two lines" do
|
|
address = Address.new("100 Test Lane", "Suite 1", "New York", "NY", "10001", "US")
|
|
|
|
actual = address.to_s(format: :condensed)
|
|
expected = <<~END
|
|
100 Test Lane, Suite 1
|
|
New York, NY 10001, US
|
|
END
|
|
|
|
expect(actual).to eq(expected.chomp)
|
|
end
|
|
|
|
it "prints the address in full postal format" do
|
|
address = Address.new("100 Test Lane", "Suite 1", "New York", "NY", "10001", "US")
|
|
|
|
actual = address.to_s(format: :full)
|
|
expected = <<~END
|
|
100 Test Lane
|
|
Suite 1
|
|
New York, NY 10001
|
|
US
|
|
END
|
|
|
|
expect(actual).to eq(expected.chomp)
|
|
end
|
|
|
|
context "when there is no 2nd street line" do
|
|
it "does not add extra commas to the single line format" do
|
|
address = Address.new("100 Test Lane", "", "New York", "NY", "10001", "US")
|
|
|
|
expect(address.to_s).to eq("100 Test Lane, New York, NY 10001, US")
|
|
end
|
|
|
|
it "does not add extra newlines to the full format" do
|
|
address = Address.new("100 Test Lane", "", "New York", "NY", "10001", "US")
|
|
|
|
actual = address.to_s(format: :full)
|
|
expected = <<~END
|
|
100 Test Lane
|
|
New York, NY 10001
|
|
US
|
|
END
|
|
|
|
expect(actual).to eq(expected.chomp)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#present?" do
|
|
it "returns false when no parts of the address are present" do
|
|
address = Address.new("", "", "", "", "", "")
|
|
|
|
expect(address).not_to be_present
|
|
end
|
|
it "returns true when any part of the address is present" do
|
|
%w(street1 street2 city state zip country).each do |part|
|
|
address = Address.new("", "", "", "", "", "")
|
|
|
|
expect(address).not_to be_present
|
|
|
|
address.public_send("#{part}=", "value")
|
|
|
|
expect(address).to be_present
|
|
end
|
|
end
|
|
end
|
|
end
|