From b9978821b6efdfcf0816969bfa9c44a3fe91dde0 Mon Sep 17 00:00:00 2001 From: Mikhail Fedosov Date: Sat, 16 Mar 2013 02:46:24 +0400 Subject: fix #35: Add latitude/longitude fields (address.geo.[lat/lng]) --- Faker.js | 44 +++++++++++++++++++++++++++++++++++--------- MinFaker.js | 31 ++++++++++++++++--------------- Readme.md | 2 +- examples/js/Faker.js | 44 +++++++++++++++++++++++++++++++++++--------- lib/address.js | 30 ++++++++++++++++++++++++------ lib/helpers.js | 12 ++++++++++-- test/address.unit.js | 31 +++++++++++++++++++++++++++++++ 7 files changed, 152 insertions(+), 42 deletions(-) diff --git a/Faker.js b/Faker.js index 10e563f8..580af73f 100644 --- a/Faker.js +++ b/Faker.js @@ -17,7 +17,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************** AUTOGENERATED @ 1363365965687 *************** +/*************** AUTOGENERATED @ 1363387531615 *************** WARNING: THIS FILE WAS AUTOGENERATED BY THE FAKER BUILD SCRIPT MODIFYING THIS FILE IS FINE, BUT YOU REALLY SHOULD BE MODIFYING THE LIBRARY DIRECTLY AND REGENERATING THIS FILE USING BUILD.js!!!! @@ -72,25 +72,35 @@ Faker.Address.zipCodeFormat = function (format) { }; Faker.Address.city = function () { + var result; switch (Faker.random.number(4)) { case 0: - return Faker.random.city_prefix() + " " + Faker.random.first_name() + Faker.random.city_suffix(); + result = Faker.random.city_prefix() + " " + Faker.random.first_name() + Faker.random.city_suffix(); + break; case 1: - return Faker.random.city_prefix() + " " + Faker.random.first_name(); + result = Faker.random.city_prefix() + " " + Faker.random.first_name(); + break; case 2: - return Faker.random.first_name() + Faker.random.city_suffix(); + result = Faker.random.first_name() + Faker.random.city_suffix(); + break; case 3: - return Faker.random.last_name() + Faker.random.city_suffix(); + result = Faker.random.last_name() + Faker.random.city_suffix(); + break; } + return result; }; Faker.Address.streetName = function () { + var result; switch (Faker.random.number(2)) { case 0: - return Faker.random.last_name() + " " + Faker.random.street_suffix(); + result = Faker.random.last_name() + " " + Faker.random.street_suffix(); + break; case 1: - return Faker.random.first_name() + " " + Faker.random.street_suffix(); + result = Faker.random.first_name() + " " + Faker.random.street_suffix(); + break; } + return result; }; Faker.Address.streetAddress = function (useFullAddress) { @@ -135,6 +145,14 @@ Faker.Address.usState = function (useAbbr) { return useAbbr ? Faker.random.us_state_abbr() : Faker.random.us_state(); }; +Faker.Address.latitude = function () { + return (Faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4); + }; + +Faker.Address.longitude = function () { + return (Faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4); + }; + Faker.PhoneNumber = {}; Faker.PhoneNumber.phoneNumber = function () { return Helpers.replaceSymbolWithNumber(Faker.random.phone_formats()); @@ -301,7 +319,11 @@ Faker.Helpers.createCard = function () { "city": Faker.Address.city(), "ukCounty": Faker.Address.ukCounty(), "ukCountry": Faker.Address.ukCountry(), - "zipcode": Faker.Address.zipCode() + "zipcode": Faker.Address.zipCode(), + "geo": { + "lat": Faker.Address.latitude(), + "lng": Faker.Address.longitude() + } }, "phone": Faker.PhoneNumber.phoneNumber(), "website": Faker.Internet.domainName(), @@ -342,7 +364,11 @@ Faker.Helpers.userCard = function () { "street": Faker.Address.streetName(true), "suite": Faker.Address.secondaryAddress(), "city": Faker.Address.city(), - "zipcode": Faker.Address.zipCode() + "zipcode": Faker.Address.zipCode(), + "geo": { + "lat": Faker.Address.latitude(), + "lng": Faker.Address.longitude() + } }, "phone": Faker.PhoneNumber.phoneNumber(), "website": Faker.Internet.domainName(), diff --git a/MinFaker.js b/MinFaker.js index 0202e70d..3bdc4674 100644 --- a/MinFaker.js +++ b/MinFaker.js @@ -1,18 +1,19 @@ !function(){var a={version:"0.5.5",Name:{}};a.Name.firstName=function(){return a.random.first_name()};a.Name.lastName=function(){return a.random.last_name()};a.Name.findName=function(){switch(a.random.number(8)){case 0:return a.random.name_prefix()+" "+this.firstName()+" "+this.lastName();case 1:return this.firstName()+" "+this.lastName()+" "+a.random.name_suffix()}return this.firstName()+" "+this.lastName()};a.Address={};a.Address.zipCode=function(){return e.replaceSymbolWithNumber(a.random.array_element(["#####", -"#####-####"]))};a.Address.zipCodeFormat=function(a){return e.replaceSymbolWithNumber(["#####","#####-####"][a])};a.Address.city=function(){switch(a.random.number(4)){case 0:return a.random.city_prefix()+" "+a.random.first_name()+a.random.city_suffix();case 1:return a.random.city_prefix()+" "+a.random.first_name();case 2:return a.random.first_name()+a.random.city_suffix();case 3:return a.random.last_name()+a.random.city_suffix()}};a.Address.streetName=function(){switch(a.random.number(2)){case 0:return a.random.last_name()+ -" "+a.random.street_suffix();case 1:return a.random.first_name()+" "+a.random.street_suffix()}};a.Address.streetAddress=function(c){void 0===c&&(c=!1);var d="";switch(a.random.number(3)){case 0:d=e.replaceSymbolWithNumber("#####")+" "+this.streetName();break;case 1:d=e.replaceSymbolWithNumber("####")+" "+this.streetName();break;case 2:d=e.replaceSymbolWithNumber("###")+" "+this.streetName()}return c?d+" "+this.secondaryAddress():d};a.Address.secondaryAddress=function(){return e.replaceSymbolWithNumber(a.random.array_element(["Apt. ###", -"Suite ###"]))};a.Address.brState=function(c){return c?a.random.br_state_abbr():a.random.br_state()};a.Address.ukCounty=function(){return a.random.uk_county()};a.Address.ukCountry=function(){return a.random.uk_country()};a.Address.usState=function(c){return c?a.random.us_state_abbr():a.random.us_state()};a.PhoneNumber={};a.PhoneNumber.phoneNumber=function(){return e.replaceSymbolWithNumber(a.random.phone_formats())};a.PhoneNumber.phoneNumberFormat=function(a){return e.replaceSymbolWithNumber(b.phone_formats()[a])}; -a.Internet={};a.Internet.email=function(){return a.Helpers.slugify(this.userName())+"@"+a.Helpers.slugify(this.domainName())};a.Internet.userName=function(){var c;switch(a.random.number(2)){case 0:c=a.random.first_name();break;case 1:c=a.random.first_name()+a.random.array_element([".","_"])+a.random.last_name()}return c};a.Internet.domainName=function(){return this.domainWord()+"."+a.random.domain_suffix()};a.Internet.domainWord=function(){return a.random.first_name().toLowerCase()};a.Internet.ip= -function(){for(var a=[],d=0;4>d;d++)a[d]=(254*Math.random()+1).toFixed(0);return a.join(".")};a.Company={};a.Company.suffixes=function(){return["Inc","and Sons","LLC","Group","and Daughters"]};a.Company.companyName=function(c){switch(c?c:a.random.number(3)){case 0:return a.Name.lastName()+" "+this.companySuffix();case 1:return a.Name.lastName()+"-"+a.Name.lastName();case 2:return a.Name.lastName()+", "+a.Name.lastName()+" and "+a.Name.lastName()}};a.Company.companySuffix=function(){return a.random.array_element(this.suffixes())}; -a.Company.catchPhrase=function(){return a.random.catch_phrase_adjective()+" "+a.random.catch_phrase_descriptor()+" "+a.random.catch_phrase_noun()};a.Company.bs=function(){return a.random.bs_adjective()+" "+a.random.bs_buzz()+" "+a.random.bs_noun()};a.Lorem={};a.Lorem.words=function(a){"undefined"==typeof a&&(a=3);return e.shuffle(b.lorem()).slice(0,a)};a.Lorem.sentence=function(c){"undefined"==typeof c&&(c=3);return this.words(c+a.random.number(7)).join(" ")};a.Lorem.sentences=function(a){"undefined"== -typeof a&&(a=3);var d=[];for(a;0d;d++)a[d]=(254*Math.random()+1).toFixed(0);return a.join(".")};a.Company={};a.Company.suffixes=function(){return["Inc","and Sons","LLC","Group","and Daughters"]};a.Company.companyName=function(b){switch(b?b:a.random.number(3)){case 0:return a.Name.lastName()+" "+this.companySuffix();case 1:return a.Name.lastName()+ +"-"+a.Name.lastName();case 2:return a.Name.lastName()+", "+a.Name.lastName()+" and "+a.Name.lastName()}};a.Company.companySuffix=function(){return a.random.array_element(this.suffixes())};a.Company.catchPhrase=function(){return a.random.catch_phrase_adjective()+" "+a.random.catch_phrase_descriptor()+" "+a.random.catch_phrase_noun()};a.Company.bs=function(){return a.random.bs_adjective()+" "+a.random.bs_buzz()+" "+a.random.bs_noun()};a.Lorem={};a.Lorem.words=function(a){"undefined"==typeof a&&(a=3); +return e.shuffle(c.lorem()).slice(0,a)};a.Lorem.sentence=function(b){"undefined"==typeof b&&(b=3);return this.words(b+a.random.number(7)).join(" ")};a.Lorem.sentences=function(a){"undefined"==typeof a&&(a=3);var d=[];for(a;0
  • Name
    • firstName
    • lastName
    • findName
  • Address
    • zipCode
    • zipCodeFormat
    • city
    • streetName
    • streetAddress
    • secondaryAddress
    • brState
    • ukCounty
    • ukCountry
    • usState
  • PhoneNumber
    • phoneNumber
    • phoneNumberFormat
  • Internet
    • email
    • userName
    • domainName
    • domainWord
    • ip
  • Company
    • suffixes
    • companyName
    • companySuffix
    • catchPhrase
    • bs
  • Lorem
    • words
    • sentence
    • sentences
    • paragraph
    • paragraphs
  • Helpers
    • randomNumber
    • randomize
    • slugify
    • replaceSymbolWithNumber
    • shuffle
    • createCard
    • userCard
  • random
    • number
    • array_element
    • city_prefix
    • city_suffix
    • street_suffix
    • br_state
    • br_state_abbr
    • us_state
    • us_state_abbr
    • uk_county
    • uk_country
    • first_name
    • last_name
    • name_prefix
    • name_suffix
    • catch_phrase_adjective
    • catch_phrase_descriptor
    • catch_phrase_noun
    • bs_adjective
    • bs_buzz
    • bs_noun
    • phone_formats
    • domain_suffix
  • definitions
    • first_name
    • last_name
    • name_prefix
    • name_suffix
    • br_state
    • br_state_abbr
    • us_state
    • us_state_abbr
    • city_prefix
    • city_suffix
    • street_suffix
    • uk_county
    • uk_country
    • catch_phrase_adjective
    • catch_phrase_descriptor
    • catch_phrase_noun
    • bs_adjective
    • bs_buzz
    • bs_noun
    • domain_suffix
    • lorem
    • phone_formats
  • +
    • Name
      • firstName
      • lastName
      • findName
    • Address
      • zipCode
      • zipCodeFormat
      • city
      • streetName
      • streetAddress
      • secondaryAddress
      • brState
      • ukCounty
      • ukCountry
      • usState
      • latitude
      • longitude
    • PhoneNumber
      • phoneNumber
      • phoneNumberFormat
    • Internet
      • email
      • userName
      • domainName
      • domainWord
      • ip
    • Company
      • suffixes
      • companyName
      • companySuffix
      • catchPhrase
      • bs
    • Lorem
      • words
      • sentence
      • sentences
      • paragraph
      • paragraphs
    • Helpers
      • randomNumber
      • randomize
      • slugify
      • replaceSymbolWithNumber
      • shuffle
      • createCard
      • userCard
    • random
      • number
      • array_element
      • city_prefix
      • city_suffix
      • street_suffix
      • br_state
      • br_state_abbr
      • us_state
      • us_state_abbr
      • uk_county
      • uk_country
      • first_name
      • last_name
      • name_prefix
      • name_suffix
      • catch_phrase_adjective
      • catch_phrase_descriptor
      • catch_phrase_noun
      • bs_adjective
      • bs_buzz
      • bs_noun
      • phone_formats
      • domain_suffix
    • definitions
      • first_name
      • last_name
      • name_prefix
      • name_suffix
      • br_state
      • br_state_abbr
      • us_state
      • us_state_abbr
      • city_prefix
      • city_suffix
      • street_suffix
      • uk_county
      • uk_country
      • catch_phrase_adjective
      • catch_phrase_descriptor
      • catch_phrase_noun
      • bs_adjective
      • bs_buzz
      • bs_noun
      • domain_suffix
      • lorem
      • phone_formats
    ## Tests npm install . make test diff --git a/examples/js/Faker.js b/examples/js/Faker.js index 10e563f8..580af73f 100644 --- a/examples/js/Faker.js +++ b/examples/js/Faker.js @@ -17,7 +17,7 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************** AUTOGENERATED @ 1363365965687 *************** +/*************** AUTOGENERATED @ 1363387531615 *************** WARNING: THIS FILE WAS AUTOGENERATED BY THE FAKER BUILD SCRIPT MODIFYING THIS FILE IS FINE, BUT YOU REALLY SHOULD BE MODIFYING THE LIBRARY DIRECTLY AND REGENERATING THIS FILE USING BUILD.js!!!! @@ -72,25 +72,35 @@ Faker.Address.zipCodeFormat = function (format) { }; Faker.Address.city = function () { + var result; switch (Faker.random.number(4)) { case 0: - return Faker.random.city_prefix() + " " + Faker.random.first_name() + Faker.random.city_suffix(); + result = Faker.random.city_prefix() + " " + Faker.random.first_name() + Faker.random.city_suffix(); + break; case 1: - return Faker.random.city_prefix() + " " + Faker.random.first_name(); + result = Faker.random.city_prefix() + " " + Faker.random.first_name(); + break; case 2: - return Faker.random.first_name() + Faker.random.city_suffix(); + result = Faker.random.first_name() + Faker.random.city_suffix(); + break; case 3: - return Faker.random.last_name() + Faker.random.city_suffix(); + result = Faker.random.last_name() + Faker.random.city_suffix(); + break; } + return result; }; Faker.Address.streetName = function () { + var result; switch (Faker.random.number(2)) { case 0: - return Faker.random.last_name() + " " + Faker.random.street_suffix(); + result = Faker.random.last_name() + " " + Faker.random.street_suffix(); + break; case 1: - return Faker.random.first_name() + " " + Faker.random.street_suffix(); + result = Faker.random.first_name() + " " + Faker.random.street_suffix(); + break; } + return result; }; Faker.Address.streetAddress = function (useFullAddress) { @@ -135,6 +145,14 @@ Faker.Address.usState = function (useAbbr) { return useAbbr ? Faker.random.us_state_abbr() : Faker.random.us_state(); }; +Faker.Address.latitude = function () { + return (Faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4); + }; + +Faker.Address.longitude = function () { + return (Faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4); + }; + Faker.PhoneNumber = {}; Faker.PhoneNumber.phoneNumber = function () { return Helpers.replaceSymbolWithNumber(Faker.random.phone_formats()); @@ -301,7 +319,11 @@ Faker.Helpers.createCard = function () { "city": Faker.Address.city(), "ukCounty": Faker.Address.ukCounty(), "ukCountry": Faker.Address.ukCountry(), - "zipcode": Faker.Address.zipCode() + "zipcode": Faker.Address.zipCode(), + "geo": { + "lat": Faker.Address.latitude(), + "lng": Faker.Address.longitude() + } }, "phone": Faker.PhoneNumber.phoneNumber(), "website": Faker.Internet.domainName(), @@ -342,7 +364,11 @@ Faker.Helpers.userCard = function () { "street": Faker.Address.streetName(true), "suite": Faker.Address.secondaryAddress(), "city": Faker.Address.city(), - "zipcode": Faker.Address.zipCode() + "zipcode": Faker.Address.zipCode(), + "geo": { + "lat": Faker.Address.latitude(), + "lng": Faker.Address.longitude() + } }, "phone": Faker.PhoneNumber.phoneNumber(), "website": Faker.Internet.domainName(), diff --git a/lib/address.js b/lib/address.js index cae5e449..9f9a5082 100644 --- a/lib/address.js +++ b/lib/address.js @@ -12,25 +12,35 @@ var address = { }, city: function () { + var result; switch (Faker.random.number(4)) { case 0: - return Faker.random.city_prefix() + " " + Faker.random.first_name() + Faker.random.city_suffix(); + result = Faker.random.city_prefix() + " " + Faker.random.first_name() + Faker.random.city_suffix(); + break; case 1: - return Faker.random.city_prefix() + " " + Faker.random.first_name(); + result = Faker.random.city_prefix() + " " + Faker.random.first_name(); + break; case 2: - return Faker.random.first_name() + Faker.random.city_suffix(); + result = Faker.random.first_name() + Faker.random.city_suffix(); + break; case 3: - return Faker.random.last_name() + Faker.random.city_suffix(); + result = Faker.random.last_name() + Faker.random.city_suffix(); + break; } + return result; }, streetName: function () { + var result; switch (Faker.random.number(2)) { case 0: - return Faker.random.last_name() + " " + Faker.random.street_suffix(); + result = Faker.random.last_name() + " " + Faker.random.street_suffix(); + break; case 1: - return Faker.random.first_name() + " " + Faker.random.street_suffix(); + result = Faker.random.first_name() + " " + Faker.random.street_suffix(); + break; } + return result; }, // @@ -76,6 +86,14 @@ var address = { usState: function (useAbbr) { return useAbbr ? Faker.random.us_state_abbr() : Faker.random.us_state(); + }, + + latitude: function () { + return (Faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4); + }, + + longitude: function () { + return (Faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4); } }; diff --git a/lib/helpers.js b/lib/helpers.js index 750155c5..78aeab75 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -52,7 +52,11 @@ exports.createCard = function () { "city": Faker.Address.city(), "ukCounty": Faker.Address.ukCounty(), "ukCountry": Faker.Address.ukCountry(), - "zipcode": Faker.Address.zipCode() + "zipcode": Faker.Address.zipCode(), + "geo": { + "lat": Faker.Address.latitude(), + "lng": Faker.Address.longitude() + } }, "phone": Faker.PhoneNumber.phoneNumber(), "website": Faker.Internet.domainName(), @@ -94,7 +98,11 @@ exports.userCard = function () { "street": Faker.Address.streetName(true), "suite": Faker.Address.secondaryAddress(), "city": Faker.Address.city(), - "zipcode": Faker.Address.zipCode() + "zipcode": Faker.Address.zipCode(), + "geo": { + "lat": Faker.Address.latitude(), + "lng": Faker.Address.longitude() + } }, "phone": Faker.PhoneNumber.phoneNumber(), "website": Faker.Internet.domainName(), diff --git a/test/address.unit.js b/test/address.unit.js index 5c515a5c..a6e33c0b 100644 --- a/test/address.unit.js +++ b/test/address.unit.js @@ -259,4 +259,35 @@ describe("address.js", function () { }); }); }); + + describe("latitude()", function () { + it("returns random latitude", function () { + for (var i = 0; i < 100; i++) { + sinon.spy(Faker.random, 'number'); + var latitude = Faker.Address.latitude(); + assert.ok(typeof latitude === 'string'); + var latitude_float = parseFloat(latitude); + assert.ok(latitude_float >= -90.0); + assert.ok(latitude_float <= 90.0); + assert.ok(Faker.random.number.called); + Faker.random.number.restore(); + } + }); + }); + + describe("longitude()", function () { + it("returns random longitude", function () { + for (var i = 0; i < 100; i++) { + sinon.spy(Faker.random, 'number'); + var longitude = Faker.Address.longitude(); + assert.ok(typeof longitude === 'string'); + var longitude_float = parseFloat(longitude); + assert.ok(longitude_float >= -180.0); + assert.ok(longitude_float <= 180.0); + assert.ok(Faker.random.number.called); + Faker.random.number.restore(); + } + }); + }); + }); -- cgit v1.2.3