Skip to content

Commit

Permalink
Add test to capture issue #577
Browse files Browse the repository at this point in the history
SPD have appended extra characters to a small number of postcodes -
causing those postcodes to be unqueryable
  • Loading branch information
cblanc committed Aug 23, 2020
1 parent 1eab750 commit 2e71de7
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 14 deletions.
35 changes: 21 additions & 14 deletions test/scottish_postcode.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,32 +19,32 @@ describe("Scottish Postcode Model", () => {
const testPostcodeLarge = "ML11 0GH";
const testPostcodeSmall = "G82 1JW";

before(function(done) {
before(function (done) {
this.timeout(0);
series([clearPostcodeDb, seedPostcodeDb], done);
});

after(clearPostcodeDb);

describe("#setupTable", () => {
before(function(done) {
before(function (done) {
this.timeout(0);
ScottishPostcode._destroyRelation(error => {
ScottishPostcode._destroyRelation((error) => {
if (error) return done(error);
ScottishPostcode._setupTable(seedFilePath, done);
});
});

after(function(done) {
after(function (done) {
this.timeout(0);
ScottishPostcode._destroyRelation(error => {
ScottishPostcode._destroyRelation((error) => {
if (error) return done(error);
ScottishPostcode._setupTable(seedFilePath, done);
});
});

describe("#_createRelation", () => {
it(`creates a relation that matches ${ScottishPostcode.relation} schema`, done => {
it(`creates a relation that matches ${ScottishPostcode.relation} schema`, (done) => {
const query = `
SELECT
column_name, data_type, character_maximum_length, collation_name
Expand All @@ -54,7 +54,7 @@ describe("Scottish Postcode Model", () => {
ScottishPostcode._query(query, (error, result) => {
if (error) return done(error);
const impliedSchema = {};
result.rows.forEach(columnInfo => {
result.rows.forEach((columnInfo) => {
let columnName, dataType;
[columnName, dataType] = inferSchemaData(columnInfo);
impliedSchema[columnName] = dataType;
Expand All @@ -66,14 +66,21 @@ describe("Scottish Postcode Model", () => {
});

describe("#seedData", () => {
it("loads correct data from data directory", done => {
it("loads correct data from data directory", (done) => {
const query = `SELECT count(*) FROM ${ScottishPostcode.relation}`;
ScottishPostcode._query(query, (error, result) => {
if (error) return done(error);
assert.isTrue(result.rows[0].count > 0);
done();
});
});
it("loads postcodes suffixed with additional character", (done) => {
ScottishPostcode.find("PA31 8UA", (error, result) => {
if (error) return done(error);
assert.isNotNull(result);
done();
});
});
});
});

Expand All @@ -100,7 +107,7 @@ describe("Scottish Postcode Model", () => {
});

describe("#find", () => {
it("should return postcode with the right attributes for large user", done => {
it("should return postcode with the right attributes for large user", (done) => {
ScottishPostcode.find(testPostcodeLarge, (error, result) => {
if (error) return done(error);
assert.deepEqual(result, {
Expand All @@ -114,7 +121,7 @@ describe("Scottish Postcode Model", () => {
});
});

it("should return postcode with the right attributes for small users", done => {
it("should return postcode with the right attributes for small users", (done) => {
ScottishPostcode.find(testPostcodeSmall, (error, result) => {
if (error) return done(error);
assert.deepEqual(result, {
Expand All @@ -128,23 +135,23 @@ describe("Scottish Postcode Model", () => {
});
});

it("should return null for null/undefined postcode search", done => {
it("should return null for null/undefined postcode search", (done) => {
ScottishPostcode.find(null, (error, result) => {
if (error) return done(error);
assert.isNull(result);
done();
});
});

it("returns null if invalid postcode", done => {
it("returns null if invalid postcode", (done) => {
ScottishPostcode.find("1", (error, result) => {
if (error) return done(error);
assert.isNull(result);
done();
});
});

it("should be insensitive to space", done => {
it("should be insensitive to space", (done) => {
ScottishPostcode.find(
testPostcodeLarge.replace(/\s/, ""),
(error, result) => {
Expand All @@ -155,7 +162,7 @@ describe("Scottish Postcode Model", () => {
);
});

it("should return null if postcode does not exist", done => {
it("should return null if postcode does not exist", (done) => {
ScottishPostcode.find("ID11QD", (error, result) => {
if (error) return done(error);
assert.isNull(result);
Expand Down
2 changes: 2 additions & 0 deletions test/seed/SmallUser.csv
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,5 @@
"PA20 9BA","PA20","PA20 9",1/8/1973 00:00:00,,"208889","664416",55.83501986,-5.05330374,"N","S12000035","S14000005","S17000011","S16000083","S13002523","S08000022","S08000008","08","S37000004","S00094213","S00004763","6332AC07C","S01007350","S01000733","S02001382","S02000133",40,49,45,63,45,56,"1458","S30000036","UKM6","UKM63","S19001816","164001","506","S20001449","164","S35000726","S09000003","019","32","32",,"S12000035",,,,"S22000058","4","5","Y",1,
"EH41 4JZ","EH41","EH41 4",11/7/2011 00:00:00,,"350023","664926",55.87489737,-2.80032623,"N","S12000010","S14000020","S17000015","S16000102","S13002912","S08000024","S08000010","05","S37000010","S00102365","S00012406","6228AT12B","S01008248","S01001551","S02001547","S02000288",,,,,,,"4461","S30000005","UKM7","UKM73",,,,,,"S35000870","S09000002","000","28","28",,"S12000010",,,"S11000003","S22000059","5","6","Y",1,
"KY13 8GG","KY13","KY13 8",30/6/2016 00:00:00,,"311666","702764",56.20924110,-3.42566487,"N","S12000048","S14000050","S17000013","S16000138","S13003132","S08000030","S08000013","03","S37000033","S00126336","S00034434","6453AK07A","S01011838","S01004979","S02002220","S02000950",,,,,,,"6721","S30000043","UKM7","UKM77","S19001635","308001","339","S20001308","308","S35000490","S09000005","000","53","53",,"S12000048",,,"S11000005","S22000074","3","3","Y",1,
"PA31 8UAB","PA31","PA31 8",7/7/2004 00:00:00,,"179709","708103",56.214350030,-5.554182280,"Y","S12000035","S14000005","S17000011","S16000083","S13002518","S08000022","S08000008","08","S37000004","S00094054","S00004613","6332AR16B","S01007313","S01000803","S02001375","S02000145",0,0,,,,,"3967","S30000036","UKM6","UKM63",,,,,,"S35000177","S09000003","157","32","32",,"S12000035",,,,"S22000086","6","8","N",,
"PA31 8UAA","PA31","PA31 8",7/7/2004 00:00:00,,"179562","707515",56.209009330,-5.556059030,"Y","S12000035","S14000005","S17000011","S16000083","S13002518","S08000022","S08000008","08","S37000004","S00094054","S00004613","6332AR16B","S01007313","S01000803","S02001375","S02000145",9,18,,,,,"3967","S30000036","UKM6","UKM63",,,,,,"S35000177","S09000003","000","32","32",,"S12000035",,,,"S22000086","6","8","N",,

0 comments on commit 2e71de7

Please sign in to comment.