Skip to content

Commit

Permalink
Merge pull request #564 from tylerreichle/add-directions
Browse files Browse the repository at this point in the history
add directions to Address namespace
  • Loading branch information
Marak authored Oct 22, 2017
2 parents b78fdff + d92b012 commit ce92b3a
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 5 deletions.
69 changes: 65 additions & 4 deletions lib/address.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ function Address (faker) {
* order to build the city name.
*
* If no format string is provided one of the following is randomly used:
*
*
* * `{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}`
* * `{{address.cityPrefix}} {{name.firstName}}`
* * `{{name.firstName}}{{address.citySuffix}}`
Expand Down Expand Up @@ -131,7 +131,7 @@ function Address (faker) {
this.streetSuffix = function () {
return faker.random.arrayElement(faker.definitions.address.street_suffix);
}

/**
* streetPrefix
*
Expand Down Expand Up @@ -226,9 +226,70 @@ function Address (faker) {
min = min || -180
return faker.random.number({max: max, min:min, precision:0.0001}).toFixed(4);
}


/**
* direction
*
* @method faker.address.direction
* @param {Boolean} useAbbr return direction abbreviation. defaults to false
*/
this.direction = function (useAbbr) {
if (typeof useAbbr === 'undefined' || useAbbr === false) {
return faker.random.arrayElement(faker.definitions.address.direction);
}
return faker.random.arrayElement(faker.definitions.address.direction_abbr);
}

this.direction.schema = {
"description": "Generates a direction. Use optional useAbbr bool to return abbrevation",
"sampleResults": ["Northwest", "South", "SW", "E"]
};

/**
* cardinal direction
*
* @method faker.address.cardinalDirection
* @param {Boolean} useAbbr return direction abbreviation. defaults to false
*/
this.cardinalDirection = function (useAbbr) {
if (typeof useAbbr === 'undefined' || useAbbr === false) {
return (
faker.random.arrayElement(faker.definitions.address.direction.slice(0, 4))
);
}
return (
faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(0, 4))
);
}

this.cardinalDirection.schema = {
"description": "Generates a cardinal direction. Use optional useAbbr boolean to return abbrevation",
"sampleResults": ["North", "South", "E", "W"]
};

/**
* ordinal direction
*
* @method faker.address.ordinalDirection
* @param {Boolean} useAbbr return direction abbreviation. defaults to false
*/
this.ordinalDirection = function (useAbbr) {
if (typeof useAbbr === 'undefined' || useAbbr === false) {
return (
faker.random.arrayElement(faker.definitions.address.direction.slice(4, 8))
);
}
return (
faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(4, 8))
);
}

this.ordinalDirection.schema = {
"description": "Generates an ordinal direction. Use optional useAbbr boolean to return abbrevation",
"sampleResults": ["Northwest", "Southeast", "SW", "NE"]
};

return this;
}


module.exports = Address;
2 changes: 1 addition & 1 deletion lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ function Faker (opts) {

var _definitions = {
"name": ["first_name", "last_name", "prefix", "suffix", "gender", "title", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"],
"address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "country_code", "state", "state_abbr", "street_prefix", "postcode"],
"address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "country_code", "state", "state_abbr", "street_prefix", "postcode", "direction", "direction_abbr"],
"company": ["adjective", "noun", "descriptor", "bs_adjective", "bs_noun", "bs_verb", "suffix"],
"lorem": ["words"],
"hacker": ["abbreviation", "adjective", "noun", "verb", "ingverb", "phrase"],
Expand Down
10 changes: 10 additions & 0 deletions lib/locales/en/address/direction.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module["exports"] = [
"North",
"East",
"South",
"West",
"Northeast",
"Northwest",
"Southeast",
"Southwest"
];
10 changes: 10 additions & 0 deletions lib/locales/en/address/direction_abbr.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module["exports"] = [
"N",
"E",
"S",
"W",
"NE",
"NW",
"SE",
"SW"
];
2 changes: 2 additions & 0 deletions lib/locales/en/address/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ address.city = require("./city");
address.street_name = require("./street_name");
address.street_address = require("./street_address");
address.default_country = require("./default_country");
address.direction = require("./direction");
address.direction_abbr = require("./direction_abbr");
53 changes: 53 additions & 0 deletions test/address.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -308,4 +308,57 @@ describe("address.js", function () {
});
});

describe("direction()", function () {
it("returns random direction", function () {
sinon.stub(faker.address, 'direction').returns('North');
var direction = faker.address.direction();

assert.equal(direction, 'North');
faker.address.direction.restore();
})

it("returns abbreviation when useAbbr is true", function () {
sinon.stub(faker.address, 'direction').returns('N');
var direction = faker.address.direction(true);

assert.equal(direction, 'N');
faker.address.direction.restore();
})
})

describe("ordinalDirection()", function () {
it("returns random ordinal direction", function () {
sinon.stub(faker.address, 'ordinalDirection').returns('West');
var ordinalDirection = faker.address.ordinalDirection();

assert.equal(ordinalDirection, 'West');
faker.address.ordinalDirection.restore();
})

it("returns abbreviation when useAbbr is true", function () {
sinon.stub(faker.address, 'ordinalDirection').returns('W');
var ordinalDirection = faker.address.ordinalDirection(true);

assert.equal(ordinalDirection, 'W');
faker.address.ordinalDirection.restore();
})
})

describe("cardinalDirection()", function () {
it("returns random cardinal direction", function () {
sinon.stub(faker.address, 'cardinalDirection').returns('Northwest');
var cardinalDirection = faker.address.cardinalDirection();

assert.equal(cardinalDirection, 'Northwest');
faker.address.cardinalDirection.restore();
})

it("returns abbreviation when useAbbr is true", function () {
sinon.stub(faker.address, 'cardinalDirection').returns('NW');
var cardinalDirection = faker.address.cardinalDirection(true);

assert.equal(cardinalDirection, 'NW');
faker.address.cardinalDirection.restore();
})
})
});

0 comments on commit ce92b3a

Please sign in to comment.