diff --git a/lib/Business/UPS.pm b/lib/Business/UPS.pm index 540996d..22a51f8 100644 --- a/lib/Business/UPS.pm +++ b/lib/Business/UPS.pm @@ -119,7 +119,7 @@ sub UPStrack { $retValue{'Shipped To'} = join( ', ', @parts ) if @parts; } - my $delivery_date = $track->{scheduledDeliveryDate} || $track->{deliveredDate}; + my $delivery_date = $track->{deliveredDate} || $track->{scheduledDeliveryDate}; $retValue{'Delivery Date'} = $delivery_date if $delivery_date; $retValue{'Signed By'} = $track->{receivedBy} if $track->{receivedBy}; $retValue{'Location'} = $track->{leftAt} if $track->{leftAt}; diff --git a/t/upstrack.t b/t/upstrack.t index be380d3..89c7a57 100644 --- a/t/upstrack.t +++ b/t/upstrack.t @@ -384,4 +384,30 @@ subtest 'UPStrack dies on undef tracking number' => sub { like( $@, qr/tracking/i, 'dies on undef tracking number' ); }; +# Response with BOTH scheduledDeliveryDate and deliveredDate +my $both_dates_json = <<'JSON'; +{ + "trackDetails": [ + { + "trackingNumber": "1Z999AA10123456784", + "packageStatus": "Delivered", + "scheduledDeliveryDate": "Thursday, 01/15/2026", + "deliveredDate": "Wednesday, 01/14/2026", + "receivedBy": "JONES" + } + ] +} +JSON + +subtest 'UPStrack prefers deliveredDate over scheduledDeliveryDate' => sub { + @mock_responses = ( + MockResponse->new( success => 1, content => $both_dates_json ), + ); + + my %result = UPStrack("1Z999AA10123456784"); + + is( $result{'Delivery Date'}, 'Wednesday, 01/14/2026', + 'actual delivery date wins over scheduled date' ); +}; + done_testing();