aboutsummaryrefslogtreecommitdiff
path: root/test/commerce.unit.js
diff options
context:
space:
mode:
authorRonen Babayoff <[email protected]>2015-08-23 21:57:46 -0400
committerRonen Babayoff <[email protected]>2015-08-23 21:57:46 -0400
commit66996e280c9fbbbc2e7db376549f568be32ad5cd (patch)
treee93f412c4bceeb7ed0376e26113c9d31522af8b4 /test/commerce.unit.js
parentcf0bd70d5fca9c0169414f5d2c16ca32431a3fd9 (diff)
parentd8f8108ac5dbec7e2b7ea9a23dd19aa42255e3fb (diff)
downloadfaker-66996e280c9fbbbc2e7db376549f568be32ad5cd.tar.xz
faker-66996e280c9fbbbc2e7db376549f568be32ad5cd.zip
Merge v3.0.1 into practicalmeteor:faker package branch
Diffstat (limited to 'test/commerce.unit.js')
-rw-r--r--test/commerce.unit.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/test/commerce.unit.js b/test/commerce.unit.js
new file mode 100644
index 00000000..06445e34
--- /dev/null
+++ b/test/commerce.unit.js
@@ -0,0 +1,115 @@
+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 === 1);
+ });
+
+ /*
+
+ it("should return only one value if we specify a maximum of one", function() {
+ sinon.spy(faker.random, 'arrayElement');
+
+ var department = faker.commerce.department(1);
+
+ assert.strictEqual(department.split(" ").length, 1);
+ assert.ok(faker.random.arrayElement.calledOnce);
+
+ faker.random.arrayElement.restore();
+ });
+
+ it("should return the maxiumum value if we specify the fixed value", function() {
+ sinon.spy(faker.random, 'arrayElement');
+
+ 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 arrayElement has been called exactly or more than 5 times
+ assert.ok(faker.random.arrayElement.callCount >= 5);
+
+ faker.random.arrayElement.restore();
+ });
+ */
+ });
+
+ describe("productName()", function() {
+ it("returns name comprising of an adjective, material and product", function() {
+ sinon.spy(faker.random, 'arrayElement');
+ 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.arrayElement.calledThrice);
+ assert.ok(faker.commerce.productAdjective.calledOnce);
+ assert.ok(faker.commerce.productMaterial.calledOnce);
+ assert.ok(faker.commerce.product.calledOnce);
+
+ faker.random.arrayElement.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