aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Donovan <[email protected]>2013-01-06 23:49:15 -0800
committerBryan Donovan <[email protected]>2013-01-06 23:49:15 -0800
commita0c614c620125efa0553aec2b470c8d8539b8ec5 (patch)
treefe9a9e3524e20299800446f00af3628befcbf9f0
parent1a635e01e7e4899b0fd8f1746259d4598103c2c3 (diff)
downloadfaker-a0c614c620125efa0553aec2b470c8d8539b8ec5.tar.xz
faker-a0c614c620125efa0553aec2b470c8d8539b8ec5.zip
tests for streetAddress()
-rw-r--r--lib/address.js12
-rw-r--r--lib/definitions.js2
-rw-r--r--test/address.unit.js55
3 files changed, 63 insertions, 6 deletions
diff --git a/lib/address.js b/lib/address.js
index 0011a1d4..d1892748 100644
--- a/lib/address.js
+++ b/lib/address.js
@@ -32,12 +32,15 @@ exports.streetName = function () {
}
};
-exports.streetAddress = function (i) {
- if (typeof i == 'undefined') { i = false; }
+//
+// TODO: change all these methods that accept a boolean to instead accept an options hash.
+//
+exports.streetAddress = function (useFullAddress) {
+ if (useFullAddress === undefined) { useFullAddress = false; }
var address = "";
switch (random.number(2)) {
case 0:
- address = Helpers.replaceSymbolWithNumber("#####") + " " + this.streetName();
+ address = Helpers.replaceSymbolWithNumber("#####") + " " + this.streetName();
break;
case 1:
address = Helpers.replaceSymbolWithNumber("####") + " " + this.streetName();
@@ -46,8 +49,7 @@ exports.streetAddress = function (i) {
address = Helpers.replaceSymbolWithNumber("###") + " " + this.streetName();
break;
}
- var full_address = i ? address + " " + this.secondaryAddress() : address;
- return full_address;
+ return useFullAddress ? (address + " " + this.secondaryAddress()) : address;
};
exports.secondaryAddress = function () {
diff --git a/lib/definitions.js b/lib/definitions.js
index 8678bf63..c6ffa02f 100644
--- a/lib/definitions.js
+++ b/lib/definitions.js
@@ -101,7 +101,7 @@ exports.bs_adjective = function () {return ["implement", "utilize", "integrate",
exports.bs_buzz = function () {return ["clicks-and-mortar", "value-added", "vertical", "proactive", "robust", "revolutionary", "scalable", "leading-edge", "innovative", "intuitive", "strategic", "e-business", "mission-critical", "sticky", "one-to-one", "24/7", "end-to-end", "global", "B2B", "B2C", "granular", "frictionless", "virtual", "viral", "dynamic", "24/365", "best-of-breed", "killer", "magnetic", "bleeding-edge", "web-enabled", "interactive", "dot-com", "sexy", "back-end", "real-time", "efficient", "front-end", "distributed", "seamless", "extensible", "turn-key", "world-class", "open-source", "cross-platform", "cross-media", "synergistic", "bricks-and-clicks", "out-of-the-box", "enterprise", "integrated", "impactful", "wireless", "transparent", "next-generation", "cutting-edge", "user-centric", "visionary", "customized", "ubiquitous", "plug-and-play", "collaborative", "compelling", "holistic", "rich"]; };
-exports.bs_noun = function () {return ["synergies", "web-readiness", "paradigms", "markets", "partnerships", "infrastructures", "platforms", "initiatives", "channels", "eyeballs", "communities", "ROI", "solutions", "e-tailers", "e-services", "action-items", "portals", "niches", "technologies", "content", "vortals", "supply-chains", "convergence", "relationships", "architectures", "interfaces", "e-markets", "e-commerce", "systems", "bandwidth", "infomediaries", "models", "mindshare", "deliverables", "users", "schemas", "networks", "applications", "metrics", "e-business", "functionalities", "experiences", "web services", "methodologies"]; };
+exports.bs_noun = function () {return ["synergies", "web-readiness", "paradigms", "markets", "partnerships", "infrastructures", "platforms", "initiatives", "channels", "eyeballs", "communities", "ROI", "solutions", "e-tailers", "e-services", "action-items", "portals", "niches", "technologies", "content", "vortals", "supply-chains", "convergence", "relationships", "architectures", "interfaces", "e-markets", "e-commerce", "systems", "bandwidth", "infomediaries", "models", "mindshare", "deliverables", "users", "schemas", "networks", "applications", "metrics", "e-business", "functionalities", "experiences", "web services", "methodologies", "stakeholders"]; };
exports.domain_suffix = function () {return ["co.uk", "com", "us", "uk", "ca", "biz", "info", "name"]; };
diff --git a/test/address.unit.js b/test/address.unit.js
index c85ad019..07b5c43f 100644
--- a/test/address.unit.js
+++ b/test/address.unit.js
@@ -102,4 +102,59 @@ describe("name.js", function () {
assert.ok(random.street_suffix.calledOnce);
});
});
+
+ describe("streetAddress()", function () {
+ beforeEach(function () {
+ sinon.spy(Faker.Address, 'streetName');
+ sinon.spy(Faker.Address, 'secondaryAddress');
+ });
+
+ afterEach(function () {
+ Faker.Address.streetName.restore();
+ Faker.Address.secondaryAddress.restore();
+ });
+
+ it("occasionally returns a 5-digit street number", function () {
+ sinon.stub(random, 'number').returns(0);
+ var address = Faker.Address.streetAddress();
+ var parts = address.split(' ');
+
+ assert.equal(parts[0].length, 5);
+ assert.ok(Faker.Address.streetName.called);
+
+ random.number.restore();
+ });
+
+ it("occasionally returns a 4-digit street number", function () {
+ sinon.stub(random, 'number').returns(1);
+ var address = Faker.Address.streetAddress();
+ var parts = address.split(' ');
+
+ assert.equal(parts[0].length, 4);
+ assert.ok(Faker.Address.streetName.called);
+
+ random.number.restore();
+ });
+
+ it("occasionally returns a 3-digit street number", function () {
+ sinon.stub(random, 'number').returns(2);
+ var address = Faker.Address.streetAddress();
+ var parts = address.split(' ');
+
+ assert.equal(parts[0].length, 3);
+ assert.ok(Faker.Address.streetName.called);
+ assert.ok(!Faker.Address.secondaryAddress.called);
+
+ random.number.restore();
+ });
+
+ context("when useFullAddress is true", function () {
+ it("adds a secondary address to the result", function () {
+ var address = Faker.Address.streetAddress(true);
+ var parts = address.split(' ');
+
+ assert.ok(Faker.Address.secondaryAddress.called);
+ });
+ });
+ });
});