diff --git a/lib/ups/builders/address_builder.rb b/lib/ups/builders/address_builder.rb index 6ee3533..f023c85 100644 --- a/lib/ups/builders/address_builder.rb +++ b/lib/ups/builders/address_builder.rb @@ -20,6 +20,7 @@ class AddressBuilder < BuilderBase # @option opts [String] :state State # @option opts [String] :postal_code Zip or Postal Code # @option opts [String] :country Country + # @option opts [Boolean] :residential_address Whether destination is considered residential # @raise [InvalidAttributeError] If the passed :state is nil or an # empty string and the :country is IE def initialize(opts = {}) @@ -132,6 +133,7 @@ def to_xml address << state address << postal_code address << country + address << Element.new('ResidentialAddress') if opts[:residential_address] end end end diff --git a/spec/ups/builders/address_builder_spec.rb b/spec/ups/builders/address_builder_spec.rb index 779d588..051e94c 100644 --- a/spec/ups/builders/address_builder_spec.rb +++ b/spec/ups/builders/address_builder_spec.rb @@ -114,4 +114,18 @@ end end end + + describe 'residential address' do + it 'is not a residential address by default' do + address = UPS::Builders::AddressBuilder.new(address_line_1: 'Googleplex', city: 'Mountain View', state: 'California', postal_code: '94043', country: 'US') + + expect(address.to_xml.locate('ResidentialAddress')).must_equal([]) + end + + it 'is indicates when specified as a residential address' do + address = UPS::Builders::AddressBuilder.new(address_line_1: 'Googleplex', city: 'Mountain View', state: 'California', postal_code: '94043', country: 'US', residential_address: true) + + expect(address.to_xml.locate('ResidentialAddress')).wont_equal([]) + end + end end