From 3418839d8b818485331ef7931dea1de26c751da2 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Tue, 10 Mar 2015 13:57:02 +0000 Subject: Add Commerce functions from https://github.com/stympy/faker into javascript --- index.js | 14 ++++++- lib/commerce.js | 81 +++++++++++++++++++++++++++++++++++ lib/locales/en.js | 32 ++++++++++++-- test/all.functional.js | 4 +- test/commerce.unit.js | 112 +++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 238 insertions(+), 5 deletions(-) create mode 100644 lib/commerce.js create mode 100644 test/commerce.unit.js diff --git a/index.js b/index.js index f3bc4291..d9a5c50e 100644 --- a/index.js +++ b/index.js @@ -29,6 +29,7 @@ exports.date = require('./lib/date'); exports.random = require('./lib/random'); exports.finance = require('./lib/finance'); exports.hacker = require('./lib/hacker'); +exports.commerce = require('./lib/commerce'); var locales = exports.locales = require('./lib/locales'); @@ -40,6 +41,8 @@ exports.localeFallback = "en"; exports.definitions = {}; +var _stringDefinitions = ["title", "separator"]; + var _definitions = { "name": ["first_name", "last_name", "prefix", "suffix"], "address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "state", "state_abbr"], @@ -48,9 +51,18 @@ var _definitions = { "hacker": ["abbreviation", "adjective", "noun", "verb", "ingverb"], "phone_number": ["formats"], "finance": ["account_type", "transaction_type", "currency"], - "internet": ["avatar_uri", "domain_suffix", "free_email", "password"] + "internet": ["avatar_uri", "domain_suffix", "free_email", "password"], + "commerce": ["color", "department", "product_name", "price"] }; +_stringDefinitions.forEach(function(d) { + if (typeof locales[exports.locale][d] === "undefined") { + exports.definitions[d] = locales[exports.localeFallback][d]; + } else { + exports.definitions[d] = locales[exports.locale][d]; + } +}); + // Create a Getter for all definitions.foo.bar propetries Object.keys(_definitions).forEach(function(d){ if (typeof exports.definitions[d] === "undefined") { diff --git a/lib/commerce.js b/lib/commerce.js new file mode 100644 index 00000000..20b736bc --- /dev/null +++ b/lib/commerce.js @@ -0,0 +1,81 @@ +var faker = require('../index'); + +var commerce = { + + color: function() { + return faker.random.array_element(faker.definitions.commerce.color); + }, + + department: function(max, fixedAmount) { + max = max || 3; + + var num = Math.floor((Math.random() * max) + 1); + if(fixedAmount) { + num = max; + } + + var categories = faker.commerce.categories(num); + + console.log("NUMBER: " + num); + + if(num > 1) { + return faker.commerce.mergeCategories(categories); + } + + return categories[0]; + }, + + productName: function() { + return faker.commerce.productAdjective() + " " + + faker.commerce.productMaterial() + " " + + faker.commerce.product(); + }, + + price: function(min, max, dec, symbol) { + min = min || 0; + max = max || 1000; + dec = dec || 2; + symbol = symbol || ''; + + if(min < 0 || max < 0) { + return symbol + 0.00; + } + + return symbol + (Math.round((Math.random() * (max - min) + min) * Math.pow(10, dec)) / Math.pow(10, dec)).toFixed(dec); + }, + + categories: function(num) { + var categories = []; + + do { + var category = faker.random.array_element(faker.definitions.commerce.department); + if(categories.indexOf(category) === -1) { + categories.push(category); + } + } while(categories.length < num); + + return categories; + }, + + mergeCategories: function(categories) { + var separator = faker.definitions.separator; + var commaSeparated = categories.slice(0, -1).join(', '); + + return [commaSeparated, categories[categories.length - 1]].join(separator); + }, + + productAdjective: function() { + return faker.random.array_element(faker.definitions.commerce.product_name.adjective); + }, + + productMaterial: function() { + return faker.random.array_element(faker.definitions.commerce.product_name.material); + }, + + product: function() { + return faker.random.array_element(faker.definitions.commerce.product_name.product); + } + +}; + +module.exports = commerce; \ No newline at end of file diff --git a/lib/locales/en.js b/lib/locales/en.js index d79cb828..a7d70e8f 100644 --- a/lib/locales/en.js +++ b/lib/locales/en.js @@ -7723,7 +7723,14 @@ en.commerce = { "Fantastic", "Practical", "Sleek", - "Awesome" + "Awesome", + "Generic", + "Handcrafted", + "Handmade", + "Licensed", + "Refined", + "Unbranded", + "Tasty" ], "material": [ "Steel", @@ -7732,18 +7739,37 @@ en.commerce = { "Plastic", "Cotton", "Granite", - "Rubber" + "Rubber", + "Metal", + "Soft", + "Fresh", + "Frozen", ], "product": [ "Chair", "Car", "Computer", + "Keyboard", + "Mouse", + "Bike", + "Ball", "Gloves", "Pants", "Shirt", "Table", "Shoes", - "Hat" + "Hat", + "Towels", + "Soap", + "Tuna", + "Chicken", + "Fish", + "Cheese", + "Bacon", + "Pizza", + "Salad", + "Sausages", + "Chips" ] } }; diff --git a/test/all.functional.js b/test/all.functional.js index 1a2e836a..966987e3 100644 --- a/test/all.functional.js +++ b/test/all.functional.js @@ -22,7 +22,9 @@ var modules = { phone: ['phoneNumber'], - finance: ['account', 'accountName', 'mask', 'amount', 'transactionType', 'currencyCode', 'currencyName', 'currencySymbol'] + finance: ['account', 'accountName', 'mask', 'amount', 'transactionType', 'currencyCode', 'currencyName', 'currencySymbol'], + + commerce: ['color', 'department', 'productName', 'price'] }; describe("functional tests", function () { diff --git a/test/commerce.unit.js b/test/commerce.unit.js new file mode 100644 index 00000000..856c3be6 --- /dev/null +++ b/test/commerce.unit.js @@ -0,0 +1,112 @@ +if(typeof module !== 'undefined') { + var assert = require('assert'), + sinon = require('sinon'), + faker = require('../index'); +} + +describe("commerce.js", function() { + + describe("color()", function() { + it("returns random value from commerce.color array", function() { + var color = faker.commerce.color(); + assert.ok(faker.definitions.commerce.color.indexOf(color) !== -1); + }); + }); + + describe("department(max, fixedValue)", function() { + it("should use the default amounts when not passing arguments", function() { + var department = faker.commerce.department(); + + assert.ok(department.split(" ").length <= 4); + }); + + it("should return only one value if we specify a maximum of one", function() { + sinon.spy(faker.random, 'array_element'); + + var department = faker.commerce.department(1); + + assert.strictEqual(department.split(" ").length, 1); + assert.ok(faker.random.array_element.calledOnce); + + faker.random.array_element.restore(); + }); + + it("should return the maxiumum value if we specify the fixed value", function() { + sinon.spy(faker.random, 'array_element'); + + var department = faker.commerce.department(5, true); + + console.log(department); + + // account for the separator + assert.strictEqual(department.split(" ").length, 6); + // Sometimes it will generate duplicates that aren't used in the final string, + // so we check if array_element has been called exactly or more than 5 times + assert.ok(faker.random.array_element.callCount >= 5); + + faker.random.array_element.restore(); + }) + }); + + describe("productName()", function() { + it("returns name comprising of an adjective, material and product", function() { + sinon.spy(faker.random, 'array_element'); + sinon.spy(faker.commerce, 'productAdjective'); + sinon.spy(faker.commerce, 'productMaterial'); + sinon.spy(faker.commerce, 'product'); + var name = faker.commerce.productName(); + + assert.ok(name.split(' ').length >= 3); + assert.ok(faker.random.array_element.calledThrice); + assert.ok(faker.commerce.productAdjective.calledOnce); + assert.ok(faker.commerce.productMaterial.calledOnce); + assert.ok(faker.commerce.product.calledOnce); + + faker.random.array_element.restore(); + faker.commerce.productAdjective.restore(); + faker.commerce.productMaterial.restore(); + faker.commerce.product.restore(); + }); + }); + + describe("price(min, max, dec, symbol", function() { + it("should use the default amounts when not passing arguments", function() { + var price = faker.commerce.price(); + + assert.ok(price); + assert.equal((price > 0), true, "the amount should be greater than 0"); + assert.equal((price < 1001), true, "the amount should be less than 1000"); + }); + + it("should use the default decimal location when not passing arguments", function() { + var price = faker.commerce.price(); + + var decimal = "."; + var expected = price.length - 3; + var actual = price.indexOf(decimal); + + assert.equal(actual, expected, "The expected location of the decimal is " + expected + " but it was " + actual + " amount " + price); + }); + + it("should not include a currency symbol by default", function () { + + var amount = faker.commerce.price(); + + var regexp = new RegExp(/[0-9.]/); + + var expected = true; + var actual = regexp.test(amount); + + assert.equal(actual, expected, 'The expected match should not include a currency symbol'); + }); + + it("it should handle negative amounts, but return 0", function () { + + var amount = faker.commerce.price(-200, -1); + + assert.ok(amount); + assert.equal((amount == 0.00), true, "the amount should equal 0"); + }); + }); + +}); \ No newline at end of file -- cgit v1.2.3 From 0f50ab4fa9c2ad3fdc93a1e070a3630a877bfc9b Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Tue, 10 Mar 2015 13:59:19 +0000 Subject: Removed trailing comma --- lib/locales/en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/locales/en.js b/lib/locales/en.js index a7d70e8f..ef0123a1 100644 --- a/lib/locales/en.js +++ b/lib/locales/en.js @@ -7743,7 +7743,7 @@ en.commerce = { "Metal", "Soft", "Fresh", - "Frozen", + "Frozen" ], "product": [ "Chair", -- cgit v1.2.3 From 5b20b2a1cfa783518c50412c35ac0877ab6ca65e Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Tue, 10 Mar 2015 13:59:56 +0000 Subject: 2.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4f5cfd7f..2610e742 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "faker", "description": "Generate massive amounts of fake contextual data", - "version": "2.1.2", + "version": "2.2.0", "contributors": [ "Marak Squires ", "Matthew Bergman " -- cgit v1.2.3 From b225be4ddc5842eabd2c3eddd42aa178db66fb05 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Tue, 10 Mar 2015 14:35:12 +0000 Subject: Updated README to an actual markdown format. --- Readme.md | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 186 insertions(+), 33 deletions(-) diff --git a/Readme.md b/Readme.md index 4eb761a7..e4001b47 100644 --- a/Readme.md +++ b/Readme.md @@ -1,32 +1,34 @@ # faker.js - generate massive amounts of fake data in the browser and node.js - + +![faker.js](http://imgur.com/KiinQ.png) [![Build Status](https://travis-ci.org/Marak/faker.js.svg?branch=master)](https://travis-ci.org/Marak/Faker.js) ## Demo -http://marak.com/faker.js/ +[Demo Site](http://marak.com/faker.js/">http://marak.com/faker.js/) ## USAGE -### browser - +### browser - - + - -### node.js - + -### usage +### node.js - var faker = require('./faker'); + var faker = require('./faker'); - var randomName = faker.name.findName(); // Rowan Nikolaus - var randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz - var randomCard = faker.helpers.createCard(); // random contact card containing many properties + var randomName = faker.name.findName(); + // OUTPUTS: Rowan Nikolaus + var randomEmail = faker.internet.email(); + // OUTPUTS: Kassandra.Haley@erich.biz + var randomCard = faker.helpers.createCard(); + // OUTPUTS: An object containing many properties ### Localization @@ -36,34 +38,186 @@ The default language is set to English. Setting a new locale is simple: -```js -// sets locale to de -faker.locale = "de"; -``` + // sets locale to de + faker.locale = "de"; + Read further for complete list of locales. ## API -
  • name
    • firstName
    • lastName
    • findName
    • prefix
    • suffix
  • address
    • zipCode
    • city
    • cityPrefix
    • citySuffix
    • streetName
    • streetAddress
    • streetSuffix
    • secondaryAddress
    • county
    • country
    • state
    • stateAbbr
    • latitude
    • longitude
  • phone
    • phoneNumber
    • phoneNumberFormat
    • phoneFormats
  • internet
    • avatar
    • email
    • userName
    • domainName
    • domainSuffix
    • domainWord
    • ip
    • userAgent
    • color
    • password
  • company
    • suffixes
    • companyName
    • companySuffix
    • catchPhrase
    • bs
    • catchPhraseAdjective
    • catchPhraseDescriptor
    • catchPhraseNoun
    • bsAdjective
    • bsBuzz
    • bsNoun
  • image
    • image
    • avatar
    • imageUrl
    • abstract
    • animals
    • business
    • cats
    • city
    • food
    • nightlife
    • fashion
    • people
    • nature
    • sports
    • technics
    • transport
  • lorem
    • words
    • sentence
    • sentences
    • paragraph
    • paragraphs
  • helpers
    • randomNumber
    • randomize
    • slugify
    • replaceSymbolWithNumber
    • shuffle
    • mustache
    • createCard
    • contextualCard
    • userCard
    • createTransaction
  • date
    • past
    • future
    • between
    • recent
  • random
    • number
    • array_element
    • object_element
  • finance
    • account
    • accountName
    • mask
    • amount
    • transactionType
    • currencyCode
    • currencyName
    • currencySymbol
  • hacker
    • abbreviation
    • adjective
    • noun
    • verb
    • ingverb
    • phrase
  • locales
    • de
    • de_AT
    • de_CH
    • en
    • en_AU
    • en_BORK
    • en_CA
    • en_GB
    • en_IND
    • en_US
    • en_au_ocker
    • es
    • fa
    • fr
    • it
    • ja
    • ko
    • nb_NO
    • nep
    • nl
    • pl
    • pt_BR
    • ru
    • sk
    • sv
    • vi
    • zh_CN
  • locale
    • 0
    • 1
  • localeFallback
    • 0
    • 1
  • definitions
    • name
    • address
    • company
    • lorem
    • hacker
    • phone_number
    • finance
    • internet
+* name + * firstName + * lastName + * findName + * prefix + * suffix +* address + * zipCode + * city + * cityPrefix + * citySuffix + * streetName + * streetAddress + * streetSuffix + * secondaryAddress + * county + * country + * state + * stateAbbr + * latitude + * longitude +* phone + * phoneNumber + * phoneNumberFormat + * phoneFormats +* internet + * avatar + * email + * userName + * domainName + * domainSuffix + * domainWord + * ip + * userAgent + * color + * password +* company + * suffixes + * companyName + * companySuffix + * catchPhrase + * catchPhraseAdjective + * catchPhraseDescriptor + * catchPhraseNoun + * bsAdjective + * bsBuzz + * bsNoun +* commerce + * color + * department + * productName + * price +* image + * image + * avatar + * imageUrl + * abstract + * animals + * business + * cats + * city + * food + * nightlife + * fashion + * people + * nature + * sports + * technics + * transport +* lorem + * words + * sentence + * sentences + * paragraph + * paragraphs +* helpers + * randomNumber + * randomize + * slugify + * replaceSymbolWithNumber + * shuffle + * mustache + * createCard + * contextualCard + * userCard + * createTransaction +* date + * past + * future + * between + * recent +* random + * number + * array_element + * object_element +* finance + * account + * accountName + * mask + * amount + * transactionType + * currencyCode + * currencyName + * currencySymbol +* hacker + * abbreviation + * adjective + * noun + * verb + * ingverb + * phrase +* locales + * de + * de_AT + * de_CH + * en + * en_AU + * en_BORK + * en_CA + * en_GB + * en_IND + * en_US + * en_au_ocker + * es + * fa + * fr + * it + * ja + * ko + * nb_NO + * nep + * nl + * pl + * pt_BR + * ru + * sk + * sv + * vi + * zh_CN +* locale + * 0 + * 1 +* localeFallback + * 0 + * 1 +* definitions + * name + * address + * company + * lorem + * hacker + * phone_number + * finance + * internet + * commerce ## Tests - npm install . - make test + + npm install . + make test -You can view a code coverage report generated in coverage/lcov-report/index.html. +You can view a code coverage report generated in `coverage/lcov-report/index.html`. ## Authors -####Matthew Bergman & Marak Squires +#### Matthew Bergman & Marak Squires -
Copyright (c) 2014 Matthew Bergman & Marak Squires http://github.com/marak/faker.js/ -
-faker.js was inspired by and has used data definitions from -
- https://github.com/stympy/faker/ - Copyright (c) 2007-2010 Benjamin Curtis
- http://search.cpan.org/~jasonk/Data-Faker-0.07/ - Copyright 2004-2005 by Jason Kohles
+faker.js was inspired by and has used data definitions from: + +* [https://github.com/stympy/faker/](https://github.com/stympy/faker/) - Copyright (c) 2007-2010 Benjamin Curtis
+* [http://search.cpan.org/~jasonk/Data-Faker-0.07/](http://search.cpan.org/~jasonk/Data-Faker-0.07/) - Copyright 2004-2005 by Jason Kohles Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -72,11 +226,10 @@ without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -
-The above copyright notice and this permission notice shall be + +* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -- cgit v1.2.3 From 7c59554cb17cd031e1348b1115ae86c72af73149 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Tue, 10 Mar 2015 14:35:22 +0000 Subject: 2.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2610e742..95631353 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "faker", "description": "Generate massive amounts of fake contextual data", - "version": "2.2.0", + "version": "2.2.1", "contributors": [ "Marak Squires ", "Matthew Bergman " -- cgit v1.2.3 From 75caacff0bacf3cfbe180c58ff980f965ac8a975 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Thu, 12 Mar 2015 10:22:10 +0000 Subject: removes a console.log when generating a price --- lib/commerce.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/commerce.js b/lib/commerce.js index 20b736bc..76ec4beb 100644 --- a/lib/commerce.js +++ b/lib/commerce.js @@ -16,8 +16,6 @@ var commerce = { var categories = faker.commerce.categories(num); - console.log("NUMBER: " + num); - if(num > 1) { return faker.commerce.mergeCategories(categories); } -- cgit v1.2.3 From 6db5cdaf206abd31208e2c5c3b79dbf73d144a10 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Thu, 12 Mar 2015 10:24:30 +0000 Subject: Replaces symbols in domain words so it generates output for all locales --- lib/internet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internet.js b/lib/internet.js index c0d92ec5..58611267 100644 --- a/lib/internet.js +++ b/lib/internet.js @@ -42,7 +42,7 @@ var internet = { }, domainWord: function () { - return faker.name.firstName().replace(/([^A-Z0-9._%+-])/ig, '').toLowerCase(); + return faker.name.firstName().replace(/([\\~#&*{}/:<>?|\"])/ig, '').toLowerCase(); }, ip: function () { -- cgit v1.2.3 From b6629e42a114b87e82130bc1e7cb01b202af8291 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Thu, 12 Mar 2015 10:31:57 +0000 Subject: Adjusted the random test on an object as the random number generator is inclusive of the max number, so sometimes the test would fail. --- test/random.unit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/random.unit.js b/test/random.unit.js index da1274fd..a67e42fd 100644 --- a/test/random.unit.js +++ b/test/random.unit.js @@ -17,7 +17,7 @@ describe("random.js", function () { it("returns a random number given a maximum value as Object", function() { var options = { max: 10 }; - assert.ok(faker.random.number(options) < options.max); + assert.ok(faker.random.number(options) <= options.max); }); it("returns a random number between a range", function() { -- cgit v1.2.3 From e5fb353890fabb36f5929656879199d2da0d064e Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Thu, 12 Mar 2015 10:35:20 +0000 Subject: npm version updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 95631353..5025fd55 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "faker", "description": "Generate massive amounts of fake contextual data", - "version": "2.2.1", + "version": "2.2.2", "contributors": [ "Marak Squires ", "Matthew Bergman " -- cgit v1.2.3 From 4f5cb5cddad356abad010b746dede809263b95c7 Mon Sep 17 00:00:00 2001 From: "rob.scott" Date: Thu, 12 Mar 2015 14:38:18 +0000 Subject: Updated README, specifically the API documentation so that every function has its usage and output --- Readme.md | 582 ++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 417 insertions(+), 165 deletions(-) diff --git a/Readme.md b/Readme.md index e4001b47..8a4e2ce5 100644 --- a/Readme.md +++ b/Readme.md @@ -14,21 +14,18 @@ ### node.js var faker = require('./faker'); - var randomName = faker.name.findName(); - // OUTPUTS: Rowan Nikolaus - var randomEmail = faker.internet.email(); - // OUTPUTS: Kassandra.Haley@erich.biz - var randomCard = faker.helpers.createCard(); - // OUTPUTS: An object containing many properties + var randomName = faker.name.findName(); // => OUTPUTS: Rowan Nikolaus + var randomEmail = faker.internet.email(); // => OUTPUTS: Kassandra.Haley@erich.biz + var randomCard = faker.helpers.createCard(); // => OUTPUTS: An object containing many properties ### Localization @@ -45,161 +42,416 @@ Read further for complete list of locales. ## API -* name - * firstName - * lastName - * findName - * prefix - * suffix -* address - * zipCode - * city - * cityPrefix - * citySuffix - * streetName - * streetAddress - * streetSuffix - * secondaryAddress - * county - * country - * state - * stateAbbr - * latitude - * longitude -* phone - * phoneNumber - * phoneNumberFormat - * phoneFormats -* internet - * avatar - * email - * userName - * domainName - * domainSuffix - * domainWord - * ip - * userAgent - * color - * password -* company - * suffixes - * companyName - * companySuffix - * catchPhrase - * catchPhraseAdjective - * catchPhraseDescriptor - * catchPhraseNoun - * bsAdjective - * bsBuzz - * bsNoun -* commerce - * color - * department - * productName - * price -* image - * image - * avatar - * imageUrl - * abstract - * animals - * business - * cats - * city - * food - * nightlife - * fashion - * people - * nature - * sports - * technics - * transport -* lorem - * words - * sentence - * sentences - * paragraph - * paragraphs -* helpers - * randomNumber - * randomize - * slugify - * replaceSymbolWithNumber - * shuffle - * mustache - * createCard - * contextualCard - * userCard - * createTransaction -* date - * past - * future - * between - * recent -* random - * number - * array_element - * object_element -* finance - * account - * accountName - * mask - * amount - * transactionType - * currencyCode - * currencyName - * currencySymbol -* hacker - * abbreviation - * adjective - * noun - * verb - * ingverb - * phrase -* locales - * de - * de_AT - * de_CH - * en - * en_AU - * en_BORK - * en_CA - * en_GB - * en_IND - * en_US - * en_au_ocker - * es - * fa - * fr - * it - * ja - * ko - * nb_NO - * nep - * nl - * pl - * pt_BR - * ru - * sk - * sv - * vi - * zh_CN -* locale - * 0 - * 1 -* localeFallback - * 0 - * 1 -* definitions - * name - * address - * company - * lorem - * hacker - * phone_number - * finance - * internet - * commerce +## faker.name + +Functions to generate random names for people + + console.log(faker.name.firstName()); // => OUTPUTS: Rowan + + console.log(faker.name.lastName()); // => OUTPUTS: Kerluke + + console.log(faker.name.findName()); // => OUTPUTS: Rowan Kerluke + + console.log(faker.name.findName("John"); // => OUTPUTS: John Rippin + console.log(faker.name.findName("John", "Walsh"); // => OUTPUTS: John Walsh + console.log(faker.name.findName("John", "Walsh"); // => OUTPUTS: Mr. John Walsh + console.log(faker.name.findName("John", "Walsh"); // => OUTPUTS: John Walsh Sr. + + console.log(faker.name.prefix()); // => OUTPUTS: Mr. + + console.log(faker.name.suffix()); // => OUTPUTS: Jr. + +## faker.address + +Functions to generate random address information + + console.log(faker.address.zipCode()); // => OUTPUTS: 60184-487 + + console.log(faker.address.city()); // => OUTPUTS: North Bellshire + + console.log(faker.address.cityPrefix()); // => OUTPUTS: South + + console.log(faker.address.citySuffix()); // => OUTPUTS: town + + console.log(faker.address.streetName()); // => OUTPUTS: Ferry Alley + + console.log(faker.address.streetAddress()); // => OUTPUTS: 74589 Kertzmann Mall + console.log(faker.address.streetAddress(true)); // => OUTPUTS: 51154 DuBuque Extensions Suite 261 + + console.log(faker.address.streetSuffix()); // => OUTPUTS: Canyon + + console.log(faker.address.secondaryAddress()); // => OUTPUTS: Apt. 123 + + console.log(faker.address.county()); // => OUTPUTS: Bedfordshire + + console.log(faker.address.country()); // => OUTPUTS: Austria + + console.log(faker.address.state()); // => OUTPUTS: Kansas + + console.log(faker.address.stateAbbr()); // => OUTPUTS: KS + + console.log(faker.address.latitude()); // => OUTPUTS: 52.9541 + + console.log(faker.address.longitude()); // => OUTPUTS: -1.1640 + +## faker.phone + +Functions to generate phone numbers + + console.log(faker.phone.phoneNumber()); // => OUTPUTS: 123-456-7890 + console.log(faker.phone.phoneNumber('##### ######)); // => OUTPUTS: 12345 678901 + + console.log(faker.phone.phoneNumberFormat()); // => OUTPUTS: 123-456-7890 + console.log(faker.phone.phoneNumberFormat(1)); // => OUTPUTS: (123) 456-7890 + + console.log(faker.phone.phoneFormats()); // => OUTPUTS: ###-###-#### + +## faker.internet + +Functions to generate common internet information, such as email addresses or domains + + console.log(faker.internet.avatar()); // => OUTPUTS: https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg + + console.log(faker.internet.email()); // => OUTPUTS: rowan.haley@gmail.com + console.log(faker.internet.email('james')); // => OUTPUTS: james.green@hotmail.com + console.log(faker.internet.email('james', 'bond')); // => OUTPUTS: james.bond53@yahoo.com + console.log(faker.internet.email('james', 'bond', 'a.com')); // => OUTPUTS: james_bond@a.com + + console.log(faker.internet.userName()); // => OUTPUTS: rowan.haley + console.log(faker.internet.userName('james')); // => OUTPUTS: james_green6 + console.log(faker.internet.userName('james', 'bond')); // => OUTPUTS: james41 + console.log(faker.internet.userName('james', 'bond')); // => OUTPUTS: james.bond + + console.log(faker.internet.domainName()); // => OUTPUTS: joe.com + + console.log(faker.internet.domainSuffix()); // => OUTPUTS: info + + console.log(faker.internet.domainWord()); // => OUTPUTS: aurelio + + console.log(faker.internet.ip()); // => OUTPUTS: 192.154.21.265 + + console.log(faker.internet.userAgent()); // => OUTPUTS: Mozilla/5.0 (Windows; U; Windows NT 5.3) AppleWebKit/1.5 (KHTML, like Gecko) Chrome + + console.log(faker.internet.color()); // => OUTPUTS: # + + console.log(faker.internet.password()); // => OUTPUTS: Sg05EU9qJ866K_V + console.log(faker.internet.password(25)); // => OUTPUTS: bck57QGpCk6NZLn6Jpb0OEw4F + console.log(faker.internet.password(25, true)); // => OUTPUTS: bujolufayihohuduqucipeweq + console.log(faker.internet.password(25, false, /\d/)); // => OUTPUTS: 8616909730935728756345227 + console.log(faker.internet.password(25, true, /\w/, 'password')); // => OUTPUTS: passwordabaweyolayaqogote + +## faker.company + +Functions to generate Company Information + + console.log(faker.company.suffixes()); // => OUTPUTS: ["Inc", "and Sons", "LLC", "Group", "and Daughters"] + + console.log(faker.company.companyName()); // => OUTPUTS: Block and Sons + console.log(faker.company.companyName(1)); // => OUTPUTS: Block-Paucek + console.log(faker.company.companyName(2)); // => OUTPUTS: Block, Paucek and Kub + + console.log(faker.company.companySuffix()); // => OUTPUTS: Group + + console.log(faker.company.catchPhrase()); // => OUTPUTS: Devolved bifurcated attitude + + console.log(faker.company.bs()); // => OUTPUTS: interactive enhance solutions + + console.log(faker.company.catchPhraseAdjective()); // => OUTPUTS: Proactive + + console.log(faker.company.catchPhraseDescriptor()); // => OUTPUTS: intangible + + console.log(faker.company.catchPhraseNoun()); // => OUTPUTS: definition + + console.log(faker.company.bsAdjective()); // => OUTPUTS: best-of-breed + + console.log(faker.company.bsBuzz()); // => OUTPUTS: syndicate + + console.log(faker.company.bsNoun()); // => OUTPUTS: metrics + +## faker.commerce + +Functions to generate information normally associated with commerce + + console.log(faker.commerce.color()); // => OUTPUTS: yellow + + console.log(faker.commerce.department()); // => OUTPUTS: Books, Movies & Games + console.log(faker.commerce.department(1)); // => OUTPUTS: Garden + console.log(faker.commerce.department(3)); // => OUTPUTS: Home & Garden + console.log(faker.commerce.department(3, true)); // => OUTPUTS: Home, Garden & Outdoors + + console.log(faker.commerce.productName()); // => OUTPUTS: gorgeous metal bike + + console.log(faker.commerce.price()); // => OUTPUTS: 149.99 + console.log(faker.commerce.price(10, 20)); // => OUTPUTS: 15.50 + console.log(faker.commerce.price(10, 1000, 2, '£')); // => OUTPUTS: £495.21 + +## faker.image + +Functions to generate random images, images provided by [lorempixel](http://lorempixel.com) + + console.log(faker.image.image()); // => OUTPUTS: http://lorempixel.com/640/480/animals + + console.log(faker.image.avatar()); // => OUTPUTS: https://s3.amazonaws.com/uifaces/faces/twitter/jarjan/128.jpg + + console.log(faker.image.imageUrl()); // => OUTPUTS: http://lorempixel.com/640/480 + console.log(faker.image.imageUrl(300)); // => OUTPUTS: http://lorempixel.com/300/480 + console.log(faker.image.imageUrl(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200 + console.log(faker.image.imageUrl(300, 200, 'business')); // => OUTPUTS: http://lorempixel.com/300/200/business + + console.log(faker.image.abstract()); // => OUTPUTS: http://lorempixel.com/640/480/abstract + console.log(faker.image.abstract(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/abstract + + console.log(faker.image.animals()); // => OUTPUTS: http://lorempixel.com/640/480/animals + console.log(faker.image.animals(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/animals + + console.log(faker.image.business()); // => OUTPUTS: http://lorempixel.com/640/480/business + console.log(faker.image.business(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/business + + console.log(faker.image.cats()); // => OUTPUTS: http://lorempixel.com/640/480/cats + console.log(faker.image.cats(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/cats + + console.log(faker.image.city()); // => OUTPUTS: http://lorempixel.com/640/480/city + console.log(faker.image.city(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/city + + console.log(faker.image.food()); // => OUTPUTS: http://lorempixel.com/640/480/food + console.log(faker.image.food(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/food + + console.log(faker.image.nightlife()); // => OUTPUTS: http://lorempixel.com/640/480/nightlife + console.log(faker.image.nightlife(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/nightlife + + console.log(faker.image.fashion()); // => OUTPUTS: http://lorempixel.com/640/480/fashion + console.log(faker.image.fashion(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/fashion + + console.log(faker.image.people()); // => OUTPUTS: http://lorempixel.com/640/480/people + console.log(faker.image.people(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/people + + console.log(faker.image.nature()); // => OUTPUTS: http://lorempixel.com/640/480/nature + console.log(faker.image.nature(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/nature + + console.log(faker.image.sports()); // => OUTPUTS: http://lorempixel.com/640/480/sports + console.log(faker.image.sports(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/sports + + console.log(faker.image.technics()); // => OUTPUTS: http://lorempixel.com/640/480/technics + console.log(faker.image.technics(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/technics + + console.log(faker.image.transport()); // => OUTPUTS: http://lorempixel.com/640/480/transport + console.log(faker.image.transport(300, 200)); // => OUTPUTS: http://lorempixel.com/300/200/transport + +## faker.lorem + +Functions to provide placeholder text generated by words found in lorem ipsum. + + console.log(faker.lorem.words()); // => OUTPUTS: doloremque veritatis sunt + console.log(faker.lorem.words(5)); // => OUTPUTS: dolores neque ipsum amet sed + + console.log(faker.lorem.sentence()); // => OUTPUTS: veritatis quia dolores quae adipisci + console.log(faker.lorem.sentence(4, 2)); // => OUTPUTS: dicta quia sequi aperiam voluptatem, consequatur + + console.log(faker.lorem.sentences()); // => OUTPUTS: veniam suscipit consequatur numquam quia \n consectetur voluptate minima \n ducimus dolores similique error id laudantium facilis + console.log(faker.lorem.sentences(2)); // => OUTPUTS: veniam suscipit consequatur numquam quia \n consectetur voluptate minima + + console.log(faker.lorem.paragraph()); // => OUTPUTS: veniam suscipit consequatur numquam quia \n consectetur voluptate minima \n ducimus dolores similique error id laudantium facilis \n veritatis quia dolores quae adipisci + console.log(faker.lorem.paragraph(5)); // => OUTPUTS: veniam suscipit consequatur numquam quia \n consectetur voluptate minima \n ducimus dolores similique error id laudantium facilis \n veritatis quia dolores quae adipisci \n doloremque veritatis sunt \n consectetur voluptate minima sequi + + console.log(faker.lorem.paragraphs()); // => OUTPUTS: veniam suscipit consequatur numquam quia \n consectetur voluptate minima \n ducimus dolores similique error id laudantium facilis \n veritatis quia dolores quae adipisci \n \r\t veniam suscipit consequatur numquam quia \n consectetur voluptate minima \n ducimus dolores similique error id laudantium facilis \n veritatis quia dolores quae adipisci \n \r\t veniam suscipit consequatur numquam quia \n consectetur voluptate minima \n ducimus dolores similique error id laudantium facilis \n veritatis quia dolores quae + +## faker.helpers + +Functions to help create data quickly. + + console.log(faker.helpers.randomNumber()); // => OUTPUTS: 1 + console.log(faker.helpers.randomNumber(10)); // => OUTPUTS: 8 + console.log(faker.helpers.randomNumber({min: 5, max: 50})); // => OUTPUTS: 32 + + var array = [1, 2]; + console.log(faker.helpers.randomize(array)); // => OUTPUTS: 1 + var array = ["item1", "item2", "item3", "item4"]; + console.log(faker.helpers.randomize(array)); // => OUTPUTS: item3 + + console.log(faker.helpers.slugify('test string made of Text')); // => OUTPUTS: test-string-made-of-Text + + console.log(faker.helpers.replaceSymbolWithNumber("ext: ####-##")); // => OUTPUTS: ext: 4716-58 + console.log(faker.helpers.replaceSymbolWithNumber("$$$.$$", "$")); // => OUTPUTS: 524.26 + + console.log(faker.helpers.shuffle()); // => OUTPUTS: [ 'a', 'c', 'b' ] + console.log(faker.helpers.shuffle([1, 2, 3, 4])); // => OUTPUTS: [ 2, 4, 3, 1 ] + + console.log(faker.helpers.mustache("test {{key}}", {"key": "string"})); // => OUTPUTS: test string + + console.log(faker.helpers.createCard()); // => OUTPUTS: { + name: 'Anita Waelchi', + username: 'Terence.Kuhic37', + email: 'Lavern_Kemmer9@hotmail.com', + address: { + streetA: 'Gregoria Wells', + .... + + console.log(faker.helpers.contextualCard()); // => OUTPUTS: { + name: 'Annabel', + username: 'Annabel_Bauch', + avatar: 'https://s3.amazonaws.com/uifaces/faces/twitter/millinet/128.jpg', + email: 'Annabel_Bauch.Stoltenberg@gmail.com', + dob: Mon Feb 25 1974 03:43:58 GMT+0000 (GMT Standard Time), + phone: '(560) 043-3168 x826', + address: { + street: 'Alfred Lodge', + ... + + console.log(faker.helpers.userCard()); // => OUTPUTS: { + name: 'Eugene Rath', + username: 'Zelda29', + email: 'Adolf95@hotmail.com', + address: { + street: 'Larson Canyon', + suite: 'Suite 156', + city: 'Williamsontown', + zipcode: '21518-1560', + geo: { lat: '-26.6674', lng: '-48.7346' } + }, + phone: '1-242-561-4692 x003', + website: 'magnus.org', + company: { + name: 'Herzog, Stamm and Willms', + catchPhrase: 'Innovative methodical hierarchy', + bs: 'out-of-the-box empower architectures' + } + } + + console.log(faker.helpers.createTransaction()); // => OUTPUTS: { + amount: '755.59', + date: Thu Feb 02 2012 00:00:00 GMT+0000 (GMT Standard Time), + business: 'Marks-McLaughlin', + name: 'Home Loan Account 9319', + type: 'invoice', + account: '31060525' + } + +## faker.date + +Functions to generate dates + + console.log(faker.date.past()); // OUTPUTS: Mon Jan 26 2015 11:19:15 GMT+0000 (GMT Standard Time) + console.log(faker.date.past(3)); // OUTPUTS: Sun Nov 03 2013 01:10:25 GMT+0000 (GMT Standard Time) + console.log(faker.date.past(3, '02/05/2011')); // OUTPUTS: Sun Dec 19 2010 05:59:05 GMT+0000 (GMT Standard Time) + + console.log(faker.date.future()); // OUTPUTS: Wed Sep 02 2015 01:25:30 GMT+0100 (GMT Daylight Time) + console.log(faker.date.future(3)); // OUTPUTS: Fri Mar 20 2015 13:47:54 GMT+0000 (GMT Standard Time) + console.log(faker.date.future(3, '02/05/2018')); // OUTPUTS: Sun Jan 27 2019 14:53:44 GMT+0000 (GMT Standard Time) + + console.log(faker.date.between('02/05/2011', '02/05/2018')); // OUTPUTS: Thu May 18 2017 04:49:07 GMT+0100 (GMT Daylight Time) + + console.log(faker.date.recent()); // OUTPUTS: Wed Mar 11 2015 19:12:05 GMT+0000 (GMT Standard Time) + console.log(faker.date.recent(50)); // OUTPUTS: Wed Jan 28 2015 05:21:22 GMT+0000 (GMT Standard Time) + +## faker.random + +Functions to provide random information based on passed in items. + + console.log(faker.random.number()); // OUTPUTS: 1 + console.log(faker.random.number(10)); // OUTPUTS: 8 + console.log(faker.random.number({min: 5, max: 50})); // OUTPUTS: 32 + + var array = [1, 2]; + console.log(faker.random.array_element(array)); // OUTPUTS: 1 + var array = ["item1", "item2", "item3", "item4"]; + console.log(faker.random.array_element(array)); // OUTPUTS: item3 + + var object = { + 'name': 'john smith', + 'age': 28, + 'value': 1154 + }; + console.log(faker.random.object_element(object)); // OUTPUTS: john smith + console.log(faker.random.object_element(object, 'key')); // OUTPUTS: name + + +## faker.finance + +Functions to generate common finance information + + console.log(faker.finance.account()); // OUTPUTS: 12451658 + console.log(faker.finance.account(5)); // OUTPUTS: 12451 + + console.log(faker.finance.accountName()); // OUTPUTS: Savings Account + + console.log(faker.finance.mask()); // OUTPUTS: + + console.log(faker.finance.amount()); // OUTPUTS: 59.54 + console.log(faker.finance.amount(900)); // OUTPUTS: 940.15 + console.log(faker.finance.amount(900, 2000)); // OUTPUTS: 1889.28 + console.log(faker.finance.amount(900, 2000, 2, '$')); // OUTPUTS: $1248.74 + + console.log(faker.finance.transactionType()); // OUTPUTS: withdrawal + + console.log(faker.finance.currencyCode()); // OUTPUTS: AUD + + console.log(faker.finance.currencyName()); // OUTPUTS: Australian Dollar + + console.log(faker.finance.currencySymbol()); // OUTPUTS: $ + +## faker.hacker + +Functions to generate computer related information + + console.log(faker.hacker.abbreviation()); // OUTPUTS: HTTP + + console.log(faker.hacker.adjective()); // OUTPUTS: haptic + + console.log(faker.hacker.noun()); // OUTPUTS: microchip + + console.log(faker.hacker.verb()); // OUTPUTS: compress + + console.log(faker.hacker.ingverb()); // OUTPUTS: generating + + console.log(faker.hacker.phrase()); // OUTPUTS: We need to calculate the neural EXE interface! + +## faker.locale + +Gets or Sets the locale. See the "*Supported Locales*" section for a list of allowed values + + console.log(faker.locale); // OUTPUTS: en + + faker.locale = "es" + console.log(faker.locale); // OUTPUTS: es + +## faker.localeFallback + +Gets or Sets the locale Fallback, this is used if a value isn't specified in the chosen locale. This defaults to **en**. See the "*Supported Locales*" section for a list of allowed values + + console.log(faker.localeFallback); // OUTPUTS: en + + faker.localeFallback = "en_US" + console.log(faker.localeFallback); // OUTPUTS: en_US + +## Supported Locales + +* de +* de_AT +* de_CH +* en +* en_AU +* en_BORK +* en_CA +* en_GB +* en_IND +* en_US +* en_au_ocker +* es +* fa +* fr +* it +* ja +* ko +* nb_NO +* nep +* nl +* pl +* pt_BR +* ru +* sk +* sv +* vi +* zh_CN ## Tests @@ -216,7 +468,7 @@ Copyright (c) 2014 Matthew Bergman & Marak Squires http://github.com/marak/faker faker.js was inspired by and has used data definitions from: -* [https://github.com/stympy/faker/](https://github.com/stympy/faker/) - Copyright (c) 2007-2010 Benjamin Curtis
+* [https://github.com/stympy/faker/](https://github.com/stympy/faker/) - Copyright (c) 2007-2010 Benjamin Curtis * [http://search.cpan.org/~jasonk/Data-Faker-0.07/](http://search.cpan.org/~jasonk/Data-Faker-0.07/) - Copyright 2004-2005 by Jason Kohles Permission is hereby granted, free of charge, to any person obtaining -- cgit v1.2.3