Skip to content

Commit

Permalink
add direction abbr options with tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tylerreichle committed Oct 22, 2017
1 parent 07929b4 commit d92b012
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 24 deletions.
40 changes: 28 additions & 12 deletions lib/address.js
Original file line number Diff line number Diff line change
Expand Up @@ -231,46 +231,62 @@ function Address (faker) {
* direction
*
* @method faker.address.direction
* @param {Boolean} useAbbr return direction abbreviation. defaults to false
*/
this.direction = function () {
return faker.random.arrayElement(faker.definitions.address.direction);
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.",
"sampleResults": ["NW", "S", "SW", "E"]
"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 () {
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.slice(0, 4))
faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(0, 4))
);
}

this.cardinalDirection.schema = {
"description": "Generates a cardinal direction.",
"sampleResults": ["N", "S", "E", "W"]
"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 () {
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.slice(4, 8))
faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(4, 8))
);
}

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

return this;
Expand Down
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", "direction"],
"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
16 changes: 8 additions & 8 deletions lib/locales/en/address/direction.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
module["exports"] = [
"N",
"E",
"S",
"W",
"NE",
"NW",
"SE",
"SW"
"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"
];
1 change: 1 addition & 0 deletions lib/locales/en/address/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ 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");
30 changes: 27 additions & 3 deletions test/address.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,29 +310,53 @@ describe("address.js", function () {

describe("direction()", function () {
it("returns random direction", function () {
sinon.stub(faker.address, 'direction').returns('N');
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('W');
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('NW');
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();
})
Expand Down

0 comments on commit d92b012

Please sign in to comment.