aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarak <[email protected]>2018-10-28 00:06:43 -0400
committerMarak <[email protected]>2018-10-28 00:06:43 -0400
commitacfbf3becde772adf4f6bf63bb1897a37ebddd3a (patch)
treea719db3a6f6f601cc49a7479577cf5e7b288aec0
parent3f7ff55e341447eecc90676ce56681f05d84d7f3 (diff)
parent900f3d87cbfd9b86119c4505e3b9dc1e84ea5969 (diff)
downloadfaker-acfbf3becde772adf4f6bf63bb1897a37ebddd3a.tar.xz
faker-acfbf3becde772adf4f6bf63bb1897a37ebddd3a.zip
Merge branch 'master' of https://github.com/chinclubi/faker.js
-rw-r--r--conf.json5
-rw-r--r--lib/image.js14
-rw-r--r--lib/image_providers/lorempixel.js199
-rw-r--r--lib/image_providers/unsplash.js129
-rw-r--r--test/image.unit.js246
5 files changed, 502 insertions, 91 deletions
diff --git a/conf.json b/conf.json
index 24276443..b71600fc 100644
--- a/conf.json
+++ b/conf.json
@@ -3,6 +3,11 @@
"destination": "../doc/"
},
+ "source": {
+ "include": ["lib", "lib/image_providers"],
+ "exclude": ["lib/locales"]
+ },
+
"plugins": [
"plugins/markdown"
]
diff --git a/lib/image.js b/lib/image.js
index b25b5895..426ce78f 100644
--- a/lib/image.js
+++ b/lib/image.js
@@ -1,10 +1,15 @@
/**
*
* @namespace faker.image
+ * @property {object} lorempixel - faker.image.lorempixel
+ * @property {object} unsplash - faker.image.unsplash
+ * @default Default provider is unsplash image provider
*/
var Image = function (faker) {
var self = this;
+ var Lorempixel = require('./image_providers/lorempixel');
+ var Unsplash = require('./image_providers/unsplash');
/**
* image
@@ -210,6 +215,13 @@ var Image = function (faker) {
var rawPrefix = 'data:image/svg+xml;charset=UTF-8,';
return rawPrefix + encodeURIComponent(svgString);
};
+
+ self.lorempixel = new Lorempixel(faker);
+ self.unsplash = new Unsplash(faker);
+
+ // Object.assign(self, self.unsplash);
+ // How to set default as unsplash? should be image.default?
}
-module["exports"] = Image;
+
+module["exports"] = Image; \ No newline at end of file
diff --git a/lib/image_providers/lorempixel.js b/lib/image_providers/lorempixel.js
new file mode 100644
index 00000000..44c0e007
--- /dev/null
+++ b/lib/image_providers/lorempixel.js
@@ -0,0 +1,199 @@
+/**
+ *
+ * @namespace lorempixel
+ * @memberof faker.image
+ */
+var Lorempixel = function (faker) {
+
+ var self = this;
+
+ /**
+ * image
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.image
+ */
+ self.image = function (width, height, randomize) {
+ var categories = ["abstract", "animals", "business", "cats", "city", "food", "nightlife", "fashion", "people", "nature", "sports", "technics", "transport"];
+ return self[faker.random.arrayElement(categories)](width, height, randomize);
+ };
+ /**
+ * avatar
+ *
+ * @method faker.image.lorempixel.avatar
+ */
+ self.avatar = function () {
+ return faker.internet.avatar();
+ };
+ /**
+ * imageUrl
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} category
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.imageUrl
+ */
+ self.imageUrl = function (width, height, category, randomize) {
+ var width = width || 640;
+ var height = height || 480;
+
+ var url ='http://lorempixel.com/' + width + '/' + height;
+ if (typeof category !== 'undefined') {
+ url += '/' + category;
+ }
+
+ if (randomize) {
+ url += '?' + faker.random.number()
+ }
+
+ return url;
+ };
+ /**
+ * abstract
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.abstract
+ */
+ self.abstract = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'abstract', randomize);
+ };
+ /**
+ * animals
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.animals
+ */
+ self.animals = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'animals', randomize);
+ };
+ /**
+ * business
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.business
+ */
+ self.business = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'business', randomize);
+ };
+ /**
+ * cats
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.cats
+ */
+ self.cats = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'cats', randomize);
+ };
+ /**
+ * city
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.city
+ */
+ self.city = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'city', randomize);
+ };
+ /**
+ * food
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.food
+ */
+ self.food = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'food', randomize);
+ };
+ /**
+ * nightlife
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.nightlife
+ */
+ self.nightlife = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'nightlife', randomize);
+ };
+ /**
+ * fashion
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.fashion
+ */
+ self.fashion = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'fashion', randomize);
+ };
+ /**
+ * people
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.people
+ */
+ self.people = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'people', randomize);
+ };
+ /**
+ * nature
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.nature
+ */
+ self.nature = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'nature', randomize);
+ };
+ /**
+ * sports
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.sports
+ */
+ self.sports = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'sports', randomize);
+ };
+ /**
+ * technics
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.technics
+ */
+ self.technics = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'technics', randomize);
+ };
+ /**
+ * transport
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {boolean} randomize
+ * @method faker.image.lorempixel.transport
+ */
+ self.transport = function (width, height, randomize) {
+ return faker.image.lorempixel.imageUrl(width, height, 'transport', randomize);
+ }
+}
+
+module["exports"] = Lorempixel;
diff --git a/lib/image_providers/unsplash.js b/lib/image_providers/unsplash.js
new file mode 100644
index 00000000..514fe84c
--- /dev/null
+++ b/lib/image_providers/unsplash.js
@@ -0,0 +1,129 @@
+/**
+ *
+ * @namespace unsplash
+ * @memberof faker.image
+ */
+var Unsplash = function (faker) {
+
+ var self = this;
+ var categories = ["food", "nature", "people", "technology", "objects", "buildings"];
+
+ /**
+ * image
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.image
+ * @description search image from unsplash
+ */
+ self.image = function (width, height, keyword) {
+ return self.imageUrl(width, height, undefined, keyword);
+ };
+ /**
+ * avatar
+ *
+ * @method faker.image.unsplash.avatar
+ */
+ self.avatar = function () {
+ return faker.internet.avatar();
+ };
+ /**
+ * imageUrl
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} category
+ * @param {string} keyword
+ * @method faker.image.unsplash.imageUrl
+ */
+ self.imageUrl = function (width, height, category, keyword) {
+ var width = width || 640;
+ var height = height || 480;
+
+ var url ='https://source.unsplash.com';
+
+ if (typeof category !== 'undefined') {
+ url += '/category/' + category;
+ }
+
+ url += '/' + width + 'x' + height;
+
+ if (typeof keyword !== 'undefined') {
+ var keywordFormat = new RegExp('^([A-Za-z0-9].+,[A-Za-z0-9]+)$|^([A-Za-z0-9]+)$');
+ if (keywordFormat.test(keyword)) {
+ url += '?' + keyword;
+ }
+ }
+
+ return url;
+ };
+ /**
+ * food
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.food
+ */
+ self.food = function (width, height, keyword) {
+ return faker.image.unsplash.imageUrl(width, height, 'food', keyword);
+ };
+ /**
+ * people
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.people
+ */
+ self.people = function (width, height, keyword) {
+ return faker.image.unsplash.imageUrl(width, height, 'people', keyword);
+ };
+ /**
+ * nature
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.nature
+ */
+ self.nature = function (width, height, keyword) {
+ return faker.image.unsplash.imageUrl(width, height, 'nature', keyword);
+ };
+ /**
+ * technology
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.technology
+ */
+ self.technology = function (width, height, keyword) {
+ return faker.image.unsplash.imageUrl(width, height, 'technology', keyword);
+ };
+ /**
+ * objects
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.objects
+ */
+ self.objects = function (width, height, keyword) {
+ return faker.image.unsplash.imageUrl(width, height, 'objects', keyword);
+ };
+ /**
+ * buildings
+ *
+ * @param {number} width
+ * @param {number} height
+ * @param {string} keyword
+ * @method faker.image.unsplash.buildings
+ */
+ self.buildings = function (width, height, keyword) {
+ return faker.image.unsplash.imageUrl(width, height, 'buildings', keyword);
+ };
+}
+
+module["exports"] = Unsplash;
diff --git a/test/image.unit.js b/test/image.unit.js
index 02e4c42b..5f5e7b48 100644
--- a/test/image.unit.js
+++ b/test/image.unit.js
@@ -5,113 +5,179 @@ if (typeof module !== 'undefined') {
}
describe("image.js", function () {
- describe("imageUrl()", function () {
+ describe("lorempixel", function() {
+ describe("imageUrl()", function () {
it("returns a random image url from lorempixel", function () {
- var imageUrl = faker.image.imageUrl();
+ var imageUrl = faker.image.lorempixel.imageUrl();
assert.equal(imageUrl, 'http://lorempixel.com/640/480');
});
it("returns a random image url from lorempixel with width and height", function () {
- var imageUrl = faker.image.imageUrl(100, 100);
+ var imageUrl = faker.image.lorempixel.imageUrl(100, 100);
assert.equal(imageUrl, 'http://lorempixel.com/100/100');
});
it("returns a random image url for a specified category", function () {
- var imageUrl = faker.image.imageUrl(100, 100, 'abstract');
+ var imageUrl = faker.image.lorempixel.imageUrl(100, 100, 'abstract');
assert.equal(imageUrl, 'http://lorempixel.com/100/100/abstract');
});
- /*
- it.only("returns a random image url from lorempixel with a randomizer", function () {
- var imageUrl = faker.image.imageUrl(100, 100, undefined, true);
-
- console.log(imageUrl);
- assert.ok(imageUrl.match(/^http:\/\/lorempixel.com\/100\/100\?[\d]+$/));
- });
- */
- });
- describe("avatar()", function () {
- it("return a random avatar from UIFaces", function () {
- assert.notEqual(-1, faker.image.avatar().indexOf('s3.amazonaws.com/uifaces/faces'));
- })
- });
- describe("abstract()", function () {
- it("returns a random abstract image url", function () {
- var abstract = faker.image.abstract();
- assert.equal(abstract, 'http://lorempixel.com/640/480/abstract');
- });
- });
- describe("animals()", function () {
- it("returns a random animals image url", function () {
- var animals = faker.image.animals();
- assert.equal(animals, 'http://lorempixel.com/640/480/animals');
- });
- });
- describe("business()", function () {
- it("returns a random business image url", function () {
- var business = faker.image.business();
- assert.equal(business, 'http://lorempixel.com/640/480/business');
- });
- });
- describe("cats()", function () {
- it("returns a random cats image url", function () {
- var cats = faker.image.cats();
- assert.equal(cats, 'http://lorempixel.com/640/480/cats');
- });
- });
- describe("city()", function () {
- it("returns a random city image url", function () {
- var city = faker.image.city();
- assert.equal(city, 'http://lorempixel.com/640/480/city');
- });
- });
- describe("food()", function () {
- it("returns a random food image url", function () {
- var food = faker.image.food();
- assert.equal(food, 'http://lorempixel.com/640/480/food');
- });
+ });
+ describe("avatar()", function () {
+ it("return a random avatar from UIFaces", function () {
+ assert.notEqual(-1, faker.image.lorempixel.avatar().indexOf('s3.amazonaws.com/uifaces/faces'));
+ })
+ });
+ describe("abstract()", function () {
+ it("returns a random abstract image url", function () {
+ var abstract = faker.image.lorempixel.abstract();
+ assert.equal(abstract, 'http://lorempixel.com/640/480/abstract');
+ });
+ });
+ describe("animals()", function () {
+ it("returns a random animals image url", function () {
+ var animals = faker.image.lorempixel.animals();
+ assert.equal(animals, 'http://lorempixel.com/640/480/animals');
+ });
+ });
+ describe("business()", function () {
+ it("returns a random business image url", function () {
+ var business = faker.image.lorempixel.business();
+ assert.equal(business, 'http://lorempixel.com/640/480/business');
+ });
+ });
+ describe("cats()", function () {
+ it("returns a random cats image url", function () {
+ var cats = faker.image.lorempixel.cats();
+ assert.equal(cats, 'http://lorempixel.com/640/480/cats');
+ });
+ });
+ describe("city()", function () {
+ it("returns a random city image url", function () {
+ var city = faker.image.lorempixel.city();
+ assert.equal(city, 'http://lorempixel.com/640/480/city');
+ });
+ });
+ describe("food()", function () {
+ it("returns a random food image url", function () {
+ var food = faker.image.lorempixel.food();
+ assert.equal(food, 'http://lorempixel.com/640/480/food');
+ });
+ });
+ describe("nightlife()", function () {
+ it("returns a random nightlife image url", function () {
+ var nightlife = faker.image.lorempixel.nightlife();
+ assert.equal(nightlife, 'http://lorempixel.com/640/480/nightlife');
+ });
+ });
+ describe("fashion()", function () {
+ it("returns a random fashion image url", function () {
+ var fashion = faker.image.lorempixel.fashion();
+ assert.equal(fashion, 'http://lorempixel.com/640/480/fashion');
+ });
+ });
+ describe("people()", function () {
+ it("returns a random people image url", function () {
+ var people = faker.image.lorempixel.people();
+ assert.equal(people, 'http://lorempixel.com/640/480/people');
+ });
+ });
+ describe("nature()", function () {
+ it("returns a random nature image url", function () {
+ var nature = faker.image.lorempixel.nature();
+ assert.equal(nature, 'http://lorempixel.com/640/480/nature');
+ });
+ });
+ describe("sports()", function () {
+ it("returns a random sports image url", function () {
+ var sports = faker.image.lorempixel.sports();
+ assert.equal(sports, 'http://lorempixel.com/640/480/sports');
+ });
+ });
+ describe("technics()", function () {
+ it("returns a random technics image url", function () {
+ var technics = faker.image.lorempixel.technics();
+ assert.equal(technics, 'http://lorempixel.com/640/480/technics');
+ });
+ });
+ describe("transport()", function () {
+ it("returns a random transport image url", function () {
+ var transport = faker.image.lorempixel.transport();
+ assert.equal(transport, 'http://lorempixel.com/640/480/transport');
+ });
+ });
});
- describe("nightlife()", function () {
- it("returns a random nightlife image url", function () {
- var nightlife = faker.image.nightlife();
- assert.equal(nightlife, 'http://lorempixel.com/640/480/nightlife');
- });
- });
- describe("fashion()", function () {
- it("returns a random fashion image url", function () {
- var fashion = faker.image.fashion();
- assert.equal(fashion, 'http://lorempixel.com/640/480/fashion');
- });
- });
- describe("people()", function () {
- it("returns a random people image url", function () {
- var people = faker.image.people();
- assert.equal(people, 'http://lorempixel.com/640/480/people');
- });
- });
- describe("nature()", function () {
- it("returns a random nature image url", function () {
- var nature = faker.image.nature();
- assert.equal(nature, 'http://lorempixel.com/640/480/nature');
+
+ describe("unsplash", function() {
+ describe("imageUrl()", function () {
+ it("returns a random image url from unsplash", function () {
+ var imageUrl = faker.image.unsplash.imageUrl();
+
+ assert.equal(imageUrl, 'https://source.unsplash.com/640x480');
});
- });
- describe("sports()", function () {
- it("returns a random sports image url", function () {
- var sports = faker.image.sports();
- assert.equal(sports, 'http://lorempixel.com/640/480/sports');
+ it("returns a random image url from unsplash with width and height", function () {
+ var imageUrl = faker.image.unsplash.imageUrl(100, 100);
+
+ assert.equal(imageUrl, 'https://source.unsplash.com/100x100');
});
- });
- describe("technics()", function () {
- it("returns a random technics image url", function () {
- var technics = faker.image.technics();
- assert.equal(technics, 'http://lorempixel.com/640/480/technics');
+ it("returns a random image url for a specified category", function () {
+ var imageUrl = faker.image.unsplash.imageUrl(100, 100, 'food');
+
+ assert.equal(imageUrl, 'https://source.unsplash.com/category/food/100x100');
});
- });
- describe("transport()", function () {
- it("returns a random transport image url", function () {
- var transport = faker.image.transport();
- assert.equal(transport, 'http://lorempixel.com/640/480/transport');
+ it("returns a random image url with correct keywords for a specified category", function () {
+ var imageUrl = faker.image.unsplash.imageUrl(100, 100, 'food', 'keyword1,keyword2');
+
+ assert.equal(imageUrl, 'https://source.unsplash.com/category/food/100x100?keyword1,keyword2');
});
+ it("returns a random image url without keyword which format is wrong for a specified category", function () {
+ var imageUrl = faker.image.unsplash.imageUrl(100, 100, 'food', 'keyword1,?ds)0123$*908932409');
+
+ assert.equal(imageUrl, 'https://source.unsplash.com/category/food/100x100');
+ });
+ });
+ describe("image()", function() {
+ it("returns a searching image url with keyword", function () {
+ var food = faker.image.unsplash.image(100, 200, 'keyword1,keyword2,keyword3');
+ assert.equal(food, 'https://source.unsplash.com/100x200?keyword1,keyword2,keyword3');
+ });
+ })
+ describe("food()", function () {
+ it("returns a random food image url", function () {
+ var food = faker.image.unsplash.food();
+ assert.equal(food, 'https://source.unsplash.com/category/food/640x480');
+ });
+ });
+ describe("people()", function () {
+ it("returns a random people image url", function () {
+ var people = faker.image.unsplash.people();
+ assert.equal(people, 'https://source.unsplash.com/category/people/640x480');
+ });
+ });
+ describe("nature()", function () {
+ it("returns a random nature image url", function () {
+ var nature = faker.image.unsplash.nature();
+ assert.equal(nature, 'https://source.unsplash.com/category/nature/640x480');
+ });
+ });
+ describe("technology()", function () {
+ it("returns a random technology image url", function () {
+ var transport = faker.image.unsplash.technology();
+ assert.equal(transport, 'https://source.unsplash.com/category/technology/640x480');
+ });
+ });
+ describe("objects()", function () {
+ it("returns a random objects image url", function () {
+ var transport = faker.image.unsplash.objects();
+ assert.equal(transport, 'https://source.unsplash.com/category/objects/640x480');
+ });
+ });
+ describe("buildings()", function () {
+ it("returns a random buildings image url", function () {
+ var transport = faker.image.unsplash.buildings();
+ assert.equal(transport, 'https://source.unsplash.com/category/buildings/640x480');
+ });
+ });
});
describe("dataUri", function () {
it("returns a blank data", function () {