forked from zuriby/Faker.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommerce.unit.js
112 lines (82 loc) · 4.1 KB
/
commerce.unit.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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");
});
});
});