Skip to content

Commit

Permalink
add more robust tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenny committed Jul 3, 2019
1 parent d25219c commit 8bbdf1f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 28 deletions.
33 changes: 19 additions & 14 deletions carriers/usps.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const async = require('async');
const moment = require('moment-timezone');
const parser = require('xml2js');
const request = require('request');

const checkDigit = require('../util/checkDigit');
const geography = require('../util/geography');

// Remove these words from cities to turn cities like `DISTRIBUTION CENTER INDIANAPOLIS` into `INDIANAPOLIS`
Expand All @@ -22,26 +22,31 @@ function USPS(options) {
// remove whitespace
trackingNumber = trackingNumber.replace(/\s/g, '');

if (/^(94001)\d{17}$/.test(trackingNumber)){
if ([/^[A-Z]{2}\d{9}[A-Z]{2}$/, /^926129\d{16}$/, /^927489\d{16}$/].some(regex => regex.test(trackingNumber))) {
return true;
}
if (/^(92055)\d{17}$/.test(trackingNumber)){
return true;
if (/^\d{20}$/.test(trackingNumber)) {
return checkDigit(trackingNumber, [3, 1], 10);
}
if (/^(94073)\d{17}$/.test(trackingNumber)){
return true;
if (/^02\d{18}$/.test(trackingNumber)) {
return checkDigit(`91${trackingNumber}`, [3, 1], 10);
}
if (/^(93033)\d{17}$/.test(trackingNumber)){
return true;
if (/^(91|92|93|94|95|96)\d{20}$/.test(trackingNumber)) {
return checkDigit(trackingNumber, [3, 1], 10);
}
if (/^(92701)\d{17}$/.test(trackingNumber)){
return true;
if (/^\d{26}$/.test(trackingNumber)) {
return checkDigit(trackingNumber, [3, 1], 10);
}
if (/^(92088)\d{17}$/.test(trackingNumber)){
return true;
if (/^420\d{27}$/.test(trackingNumber)) {
return checkDigit(trackingNumber.match(/^420\d{5}(\d{22})$/)[1], [3, 1], 10);
}
if (/^(92021)\d{17}$/.test(trackingNumber)){
return true;

if (/^420\d{31}$/.test(trackingNumber)) {
if (checkDigit(trackingNumber.match(/^420\d{9}(\d{22})$/)[1], [3, 1], 10)){
return true;
}else if (checkDigit(trackingNumber.match(/^420\d{5}(\d{26})$/)[1], [3, 1], 10)){
return true;
}
}

return false;
Expand Down
21 changes: 7 additions & 14 deletions test/carriers/usps.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,13 @@ describe('usps.isTrackingNumberValid', function() {
'9400 1118 9956 1482 6100 74',
'9400 1118 9922 3837 8204 90',
'9400 1118 9922 3837 8611 41',
'9400 1000 0000 0000 0000 00',
'9205 5000 0000 0000 0000 00',
'9407 3000 0000 0000 0000 00',
'9303 3000 0000 0000 0000 00',
'9208 8000 0000 0000 0000 00',
'9270 1000 0000 0000 0000 00',
'9202 1000 0000 0000 0000 00',
'94001 11111111111111110',
'92055 11111111111111111',
'94073 11111111111111111',
'93033 11111111111111111',
'92701 11111111111111111',
'92088 11111111111111111',
'92021 11111111111111111'
'9400111699000271800200',
'9405511699000273008898',
'9400111899223830191139',
'9400111899223830191054',
'9400111899223830191368',
'9405511899223830661741',
'9405503699300049053172'
];

it('should detect valid USPS tracking numbers', function() {
Expand Down

0 comments on commit 8bbdf1f

Please sign in to comment.