Skip to content

Commit

Permalink
Cleanup from 4ad9a07
Browse files Browse the repository at this point in the history
  • Loading branch information
freshlogic committed Sep 17, 2020
1 parent 4ad9a07 commit 4408563
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 30 deletions.
41 changes: 17 additions & 24 deletions carriers/ups.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,24 +159,17 @@ function UPS(options) {
activitiesList = getActivities(packageInfo);
}

async.mapLimit(Array.from(new Set(activitiesList.map(activity => [activity.location, activity.GMTTime]))), 10, function(info, callback) {
const location = info[0];
const gmt = info[1] != null;
if (!location) {
callback();
} else if (gmt) {
callback(null, location);
} else {
geography.parseLocation(location, options, function(err, address) {
if (err || !address) {
return callback(err);
}
// Get the activity locations for all activities that don't have a GMTDate or GMTTime
async.mapLimit(Array.from(new Set(activitiesList.filter(activity => (!activity.GMTDate || !activity.GMTTime) && activity.location).map(activity => activity.location))), 10, function(location, callback) {
geography.parseLocation(location, options, function(err, address) {
if (err || !address) {
return callback(err);
}

address.location = location;
address.location = location;

callback(null, address);
});
}
callback(null, address);
});
}, function(err, addresses) {
if (err) {
return callback(err);
Expand All @@ -189,23 +182,23 @@ function UPS(options) {
address = addresses.find(a => a && a.location === activity.location);
}

let timezone = activity.GMTTime
? 'UTC'
: 'America/New_York';
let timezone = 'America/New_York';

if (address && address.timezone) {
timezone = address.timezone;
}

const ts = activity.GMTTime
? `${activity.GMTDate} ${activity.GMTTime}`
: `${activity.Date} ${activity.Time}`;
const event = {
address: activity.address,
date: moment.tz(ts, 'YYYYMMDD HHmmss', timezone).toDate(),
description: activity.Description || (activity.Status && activity.Status.Description) || (activity.Status && activity.Status.StatusType && activity.Status.StatusType.Description)
};

if (activity.GMTDate && activity.GMTTime) {
event.date = moment.tz(`${activity.GMTDate} ${activity.GMTTime}`, 'YYYY-MM-DD HH.mm.ss', 'UTC').toDate();
} else {
event.date = moment.tz(`${activity.Date} ${activity.Time}`, 'YYYYMMDD HHmmss', timezone).toDate();
}

// Ensure event is after minDate (used to prevent data from reused tracking numbers)
if (event.date < _options.minDate) {
return;
Expand Down Expand Up @@ -246,4 +239,4 @@ function UPS(options) {
}
}

module.exports = UPS;
module.exports = UPS;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,5 @@
"type": "git",
"url": "https://github.com/mediocre/bloodhound.git"
},
"version": "1.5.2"
"version": "1.5.3"
}
10 changes: 5 additions & 5 deletions test/carriers/ups.js
Original file line number Diff line number Diff line change
Expand Up @@ -212,24 +212,24 @@ describe('UPS', function() {
const expectedEvents = [
{
address: {
city: 'Atlanta',
city: 'ANYTOWN',
state: 'GA',
country: 'US',
zip: '30340'
},
date: new Date('1999-06-10T16:00:00.000Z'),
date: new Date('2019-04-15T15:40:17.000Z'),
description: 'DELIVERED'
},
{
address: {},
date: new Date('1999-06-08T16:00:00.000Z'),
date: new Date('2019-04-15T15:40:17.000Z'),
description: 'BILLING INFORMATION RECEIVED. SHIPMENT DATE PENDING.'
}
];

assert.strictEqual(actual.carrier, 'UPS');
assert.strictEqual(actual.deliveredAt.valueOf(), new Date('1999-06-10T16:00:00.000Z').valueOf());
assert.strictEqual(actual.shippedAt.valueOf(), new Date('1999-06-10T16:00:00.000Z').valueOf());
assert.strictEqual(actual.deliveredAt.valueOf(), new Date('2019-04-15T15:40:17.000Z').valueOf());
assert.strictEqual(actual.shippedAt.valueOf(), new Date('2019-04-15T15:40:17.000Z').valueOf());
assert.strictEqual(actual.url, 'https://www.ups.com/track?tracknum=1Z12345E0205271688');
assert.strictEqual(actual.events.length, expectedEvents.length);
expectedEvents.every(expectedEvent => assert(actual.events.some(e => areEventsEqual(expectedEvent, e))));
Expand Down

0 comments on commit 4408563

Please sign in to comment.