Skip to content

Commit

Permalink
Added UPS support for out_for_delivery status
Browse files Browse the repository at this point in the history
  • Loading branch information
jbrowning committed May 10, 2012
1 parent e42308a commit 4d9f4a5
Show file tree
Hide file tree
Showing 3 changed files with 179 additions and 2 deletions.
4 changes: 4 additions & 0 deletions lib/active_shipping/shipping/carriers/ups.rb
Expand Up @@ -317,6 +317,10 @@ def parse_tracking_response(response, options={})
status_description = status_node.get_text('Description').to_s
status = TRACKING_STATUS_CODES[status_code]

if status_description =~ /out.*delivery/i
status = :out_for_delivery
end

origin, destination = %w{Shipper ShipTo}.map do |location|
location_from_address_node(first_shipment.elements["#{location}/Address"])
end
Expand Down
165 changes: 165 additions & 0 deletions test/fixtures/xml/ups/out_for_delivery_shipment.xml
@@ -0,0 +1,165 @@
<?xml version="1.0"?>
<TrackResponse>
<Response>
<ResponseStatusCode>1</ResponseStatusCode>
<ResponseStatusDescription>Success</ResponseStatusDescription>
</Response>
<Shipment>
<Shipper>
<ShipperNumber>W22A28</ShipperNumber>
<Address>
<AddressLine1>1050 S COLUMBIA AVE</AddressLine1>
<City>CAMPBELLSVILLE</City>
<StateProvinceCode>KY</StateProvinceCode>
<PostalCode>42718 2454</PostalCode>
<CountryCode>US</CountryCode>
</Address>
</Shipper>
<ShipTo>
<Address>
<City>CYPRESS</City>
<StateProvinceCode>TX</StateProvinceCode>
<PostalCode>774332681</PostalCode>
<CountryCode>US</CountryCode>
</Address>
</ShipTo>
<ShipmentWeight>
<UnitOfMeasurement>
<Code>LBS</Code>
</UnitOfMeasurement>
<Weight>1.20</Weight>
</ShipmentWeight>
<Service>
<Code>003</Code>
<Description>GROUND</Description>
</Service>
<ReferenceNumber>
<Code>01</Code>
<Value>643293013</Value>
</ReferenceNumber>
<ShipmentIdentificationNumber>
1ZW22A280305086608</ShipmentIdentificationNumber>
<PickupDate>20120508</PickupDate>
<ScheduledDeliveryDate>20120511</ScheduledDeliveryDate>
<Package>
<TrackingNumber>1ZW22A280305086608</TrackingNumber>
<RescheduledDeliveryDate>20120510</RescheduledDeliveryDate>
<Activity>
<ActivityLocation>
<Address>
<City>STAFFORD</City>
<StateProvinceCode>TX</StateProvinceCode>
<CountryCode>US</CountryCode>
</Address>
</ActivityLocation>
<Status>
<StatusType>
<Code>I</Code>
<Description>OUT FOR DELIVERY</Description>
</StatusType>
<StatusCode>
<Code>DS</Code>
</StatusCode>
</Status>
<Date>20120510</Date>
<Time>043400</Time>
</Activity>
<Activity>
<ActivityLocation>
<Address>
<City>STAFFORD</City>
<StateProvinceCode>TX</StateProvinceCode>
<CountryCode>US</CountryCode>
</Address>
</ActivityLocation>
<Status>
<StatusType>
<Code>I</Code>
<Description>ARRIVAL SCAN</Description>
</StatusType>
<StatusCode>
<Code>AR</Code>
</StatusCode>
</Status>
<Date>20120510</Date>
<Time>000200</Time>
</Activity>
<Activity>
<ActivityLocation>
<Address>
<City>MESQUITE</City>
<StateProvinceCode>TX</StateProvinceCode>
<CountryCode>US</CountryCode>
</Address>
</ActivityLocation>
<Status>
<StatusType>
<Code>I</Code>
<Description>DEPARTURE SCAN</Description>
</StatusType>
<StatusCode>
<Code>DP</Code>
</StatusCode>
</Status>
<Date>20120509</Date>
<Time>200300</Time>
</Activity>
<Activity>
<ActivityLocation>
<Address>
<City>MESQUITE</City>
<StateProvinceCode>TX</StateProvinceCode>
<CountryCode>US</CountryCode>
</Address>
</ActivityLocation>
<Status>
<StatusType>
<Code>I</Code>
<Description>ORIGIN SCAN</Description>
</StatusType>
<StatusCode>
<Code>OR</Code>
</StatusCode>
</Status>
<Date>20120509</Date>
<Time>141800</Time>
</Activity>
<Activity>
<ActivityLocation>
<Address>
<CountryCode>US</CountryCode>
</Address>
</ActivityLocation>
<Status>
<StatusType>
<Code>M</Code>
<Description>BILLING INFORMATION RECEIVED</Description>
</StatusType>
<StatusCode>
<Code>MP</Code>
</StatusCode>
</Status>
<Date>20120508</Date>
<Time>230354</Time>
</Activity>
<Message>
<Code>02</Code>
<Description>Rescheduled</Description>
</Message>
<PackageWeight>
<UnitOfMeasurement>
<Code>LBS</Code>
</UnitOfMeasurement>
<Weight>1.20</Weight>
</PackageWeight>
<ReferenceNumber>
<Code>01</Code>
<Value>FN3-4603152-0261546</Value>
</ReferenceNumber>
<ReferenceNumber>
<Code>01</Code>
<Value>DTG4MDX2R</Value>
</ReferenceNumber>
</Package>
</Shipment>
</TrackResponse>
12 changes: 10 additions & 2 deletions test/unit/carriers/ups_test.rb
Expand Up @@ -11,6 +11,7 @@ def setup
:password => 'password'
)
@tracking_response = xml_fixture('ups/shipment_from_tiger_direct')

end

def test_initialize_options_requirements
Expand Down Expand Up @@ -45,7 +46,7 @@ def test_find_tracking_info_should_return_correct_status
@carrier.expects(:commit).returns(@tracking_response)
assert_equal :delivered, @carrier.find_tracking_info('1Z5FX0076803466397').status
end

def test_find_tracking_info_should_return_correct_status_code
@carrier.expects(:commit).returns(@tracking_response)
assert_equal 'd', @carrier.find_tracking_info('1Z5FX0076803466397').status_code.downcase
Expand All @@ -56,6 +57,12 @@ def test_find_tracking_info_should_return_correct_status_description
assert_equal 'delivered', @carrier.find_tracking_info('1Z5FX0076803466397').status_description.downcase
end

def test_find_tracking_info_should_have_an_out_for_delivery_status
out_for_delivery_tracking_response = xml_fixture('ups/out_for_delivery_shipment')
@carrier.expects(:commit).returns(out_for_delivery_tracking_response)
assert_equal :out_for_delivery, @carrier.find_tracking_info('1Z5FX0076803466397').status
end

def test_find_tracking_info_should_return_destination_address
@carrier.expects(:commit).returns(@tracking_response)
result = @carrier.find_tracking_info('1Z5FX0076803466397')
Expand Down Expand Up @@ -102,7 +109,8 @@ def test_find_tracking_info_should_have_correct_names_for_shipment_events
"OUT FOR DELIVERY",
"DELIVERED" ], response.shipment_events.map(&:name)
end



def test_add_origin_and_destination_data_to_shipment_events_where_appropriate
@carrier.expects(:commit).returns(@tracking_response)
response = @carrier.find_tracking_info('1Z5FX0076803466397')
Expand Down

0 comments on commit 4d9f4a5

Please sign in to comment.