Skip to content

Commit 3184fa4

Browse files
committed
new: change faker.js to fakerator
1 parent ca1b180 commit 3184fa4

19 files changed

+108
-111
lines changed

.eslintrc.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ module.exports = {
44
"browser": true,
55
"commonjs": true,
66
"es6": true,
7-
"jquery": true
7+
"jquery": true,
8+
mocha: true
89
},
910
"extends": "eslint:recommended",
1011
"parserOptions": {

dev/data.js

+22-50
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
import faker from 'faker';
1+
import Fakerator from 'fakerator';
22
import moment from 'moment';
33

4+
let fakerator = new Fakerator();
5+
46
let roles = [
57
{ id: "admin", name: "Administrator"},
68
{ id: "moderator", name: "Moderator"},
@@ -17,63 +19,33 @@ module.exports = {
1719
users: (function() {
1820
let res = [];
1921
for (let i = 0; i < 5; i++) {
20-
let lang = faker.helpers.randomize(['en-US', 'en-GB', 'de', 'fr', 'it']);
21-
//faker.locale = lang;
22-
let user = faker.helpers.createCard();
22+
let lang = fakerator.random.arrayElement(['en-US', 'en-GB', 'de', 'fr', 'it']);
23+
let user = fakerator.entity.user();
2324
user.id = i + 1;
24-
user.type = faker.helpers.randomize(["personal", "business"]);
25-
user.password = faker.internet.password(10);
26-
user.bio = faker.lorem.paragraph();
27-
let dob = faker.date.past(40, "1998-01-01");
25+
user.type = fakerator.random.arrayElement(["personal", "business"]);
26+
user.bio = fakerator.lorem.paragraph();
27+
let dob = fakerator.date.past(40, "1998-01-01");
2828
user.dob = dob.valueOf();
2929
user.time = moment().format("hh:mm:ss");
3030
user.age = moment().year() - moment(dob).year();
31-
user.rank = faker.random.number({
32-
min: 1,
33-
max: 10
34-
});
35-
user.role = faker.helpers.randomize(roles).id;
36-
//user.mobile = faker.phone.phoneNumber();
37-
user.avatar = faker.internet.avatar();
31+
user.rank = fakerator.random.number(1, 10);
32+
user.role = fakerator.random.arrayElement(roles).id;
33+
//user.mobile = fakerator.phone.phoneNumber();
34+
user.avatar = fakerator.internet.avatar();
3835

39-
user.skills = [];
40-
user.skills.push(faker.helpers.randomize(skills));
41-
user.skills.push(faker.helpers.randomize(skills));
36+
user.skills = fakerator.utimes(fakerator.random.arrayElement, 2, skills);
4237

4338
user.language = lang;
44-
user.status = faker.helpers.randomize([true, false, true]);
45-
user.created = faker.date.recent(30).valueOf();
46-
user.dt = faker.date.recent(30).valueOf();
47-
user.favoriteColor = faker.internet.color();
48-
49-
if (user.type == "business") {
50-
user.company = {
51-
"name": faker.company.companyName(),
52-
"catchPhrase": faker.company.catchPhrase(),
53-
"bs": faker.company.bs(),
54-
"website": faker.internet.domainName(),
55-
"phone": faker.phone.phoneNumber(),
56-
"address": {
57-
"street": faker.address.streetAddress(),
58-
"city": faker.address.city(),
59-
"country": faker.address.country(),
60-
"zipcode": faker.address.zipCode(),
61-
"geo": {
62-
"lat": faker.address.latitude(),
63-
"lng": faker.address.longitude()
64-
}
65-
}
66-
67-
}
68-
} else {
69-
user.company = undefined;
70-
}
71-
72-
user.posts = undefined;
73-
user.accountHistory = undefined;
74-
39+
user.status = fakerator.random.boolean(75);
40+
user.created = fakerator.date.recent(30).valueOf();
41+
user.dt = fakerator.date.recent(30).valueOf();
42+
user.favoriteColor = "#" + fakerator.internet.color();
43+
44+
if (user.type == "business")
45+
user.company = fakerator.entity.company();
46+
7547
res.push(user);
76-
//console.log(user);
48+
console.log(user);
7749
}
7850
//console.log(res);
7951
return res;

dev/dataTable.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
td {{ row.id }}
1515
td
1616
img(:src="row.avatar")
17-
| {{ row.name }}
17+
| {{ row.firstName + " " + row.lastName }} ({{row.userName}})
1818
.label.label-warning(v-if="!row.status") Inactive
1919
td {{ row.email }}
2020
td {{ row.address.country }}

dev/schema.js

+36-15
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import moment from "moment";
2-
import faker from "faker";
2+
import Fakerator from "fakerator";
33
import {} from "lodash";
44

55
import { validators } from "../src";
66

7+
let fakerator = new Fakerator();
8+
79
module.exports = {
810
fields: [
911
{
@@ -28,11 +30,11 @@ module.exports = {
2830
},
2931
{
3032
type: "text",
31-
label: "Name",
32-
model: "name",
33+
label: "First name",
34+
model: "firstName",
3335
featured: true,
3436
required: true,
35-
placeholder: "User's full name",
37+
placeholder: "User's first name",
3638
validator: validators.string,
3739

3840
onChanged(model, newVal, oldVal, field) {
@@ -44,6 +46,25 @@ module.exports = {
4446
// console.warn("Validation error in Name field! Errors:", errors);
4547
}
4648
},
49+
{
50+
type: "text",
51+
label: "Last name",
52+
model: "lastName",
53+
featured: true,
54+
required: true,
55+
placeholder: "User's last name",
56+
validator: validators.string
57+
},
58+
{
59+
type: "text",
60+
label: "Username",
61+
model: "userName",
62+
featured: true,
63+
required: true,
64+
min: 5,
65+
placeholder: "User's last name",
66+
validator: validators.string
67+
},
4768
{
4869
type: "password",
4970
label: "Password",
@@ -253,7 +274,7 @@ module.exports = {
253274
model: "address.country",
254275
multi: true,
255276
required: true,
256-
values: faker.definitions.address.country,
277+
values: ["United Kingdom", "France", "Germany"],
257278
//default: "United Kingdom",
258279
multiSelect: false,
259280
selectOptions: {
@@ -273,7 +294,7 @@ module.exports = {
273294
{
274295
type: "text",
275296
label: "Street",
276-
model: "address.streetC"
297+
model: "address.street"
277298
},
278299
{
279300
type: "text",
@@ -282,7 +303,7 @@ module.exports = {
282303
disabled: false,
283304
get(model) {
284305
if (model && model.address && model.address.geo)
285-
return model.address.geo.lat + ", " + model.address.geo.lng;
306+
return model.address.geo.latitude + ", " + model.address.geo.longitude;
286307
},
287308
set(model, val) {
288309
let values = val.split(",");
@@ -293,14 +314,14 @@ module.exports = {
293314
model.address.geo = {};
294315

295316
if (values.length > 0 && values[0].trim() != "")
296-
model.address.geo.lat = parseFloat(values[0].trim());
317+
model.address.geo.latitude = parseFloat(values[0].trim());
297318
else
298-
model.address.geo.lat = 0
319+
model.address.geo.latitude = 0
299320

300321
if (values.length > 1 && values[1].trim() != "")
301-
model.address.geo.lng = parseFloat(values[1].trim());
322+
model.address.geo.longitude = parseFloat(values[1].trim());
302323
else
303-
model.address.geo.lng = 0
324+
model.address.geo.longitude = 0
304325
},
305326
buttons: [
306327
{
@@ -315,8 +336,8 @@ module.exports = {
315336
if (!model.address.geo)
316337
model.address.geo = {};
317338

318-
model.address.geo.lat = pos.coords.latitude.toFixed(5);
319-
model.address.geo.lng = pos.coords.longitude.toFixed(5);
339+
model.address.geo.latitude = pos.coords.latitude.toFixed(5);
340+
model.address.geo.longitude = pos.coords.longitude.toFixed(5);
320341
});
321342
} else {
322343
alert("Geolocation is not supported by this browser.");
@@ -328,8 +349,8 @@ module.exports = {
328349
label: "Clear",
329350
onclick: function(model) {
330351
model.address.geo = {
331-
lat: 0,
332-
lng: 0
352+
latitude: 0,
353+
longitude: 0
333354
};
334355
}
335356
}

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"prebuild": "npm run test",
99
"build": "webpack --config webpack.build.config.js",
1010
"dev": "webpack-dev-server --config webpack.dev.config.js --inline --hot --content-base dev/",
11-
"lint": "eslint --ext=.js,.vue src",
11+
"lint": "eslint --ext=.js,.vue src test/unit/specs",
1212
"coverall": "cat ./test/unit/coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
1313
"coverage": "npm run test && npm run coverall",
1414
"changelog": "conventional-changelog -i CHANGELOG.md -s",
@@ -54,7 +54,7 @@
5454
"eslint-loader": "1.3.0",
5555
"eslint-plugin-html": "1.4.0",
5656
"eslint-plugin-vue": "0.1.1",
57-
"faker": "3.1.0",
57+
"fakerator": "0.1.1",
5858
"git-commit-message-convention": "git://github.com/kazupon/git-commit-message-convention.git#065dfffbe2de5f6f16150aac9d4db7fdf5515e56",
5959
"gitbook-cli": "2.1.3",
6060
"inject-loader": "2.0.1",

test/unit/specs/VueFormGenerator.spec.js

+13-13
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ describe("VueFormGenerator.vue", () => {
2929

3030
describe("with empty schema", () => {
3131
let schema = {};
32-
let model = null;
3332

3433
beforeEach( () => {
3534
createFormGenerator(schema);
@@ -75,47 +74,47 @@ describe("VueFormGenerator.vue", () => {
7574
vm.$nextTick(() => {
7675
expect(tr.classList.contains("featured")).to.be.true;
7776
done();
78-
})
77+
});
7978
});
8079

8180
it("should be readonly class", (done) => {
8281
vm.schema.fields[0].readonly = true;
8382
vm.$nextTick(() => {
8483
expect(tr.classList.contains("readonly")).to.be.true;
8584
done();
86-
})
85+
});
8786
});
8887

8988
it("should be disabled class", (done) => {
9089
vm.schema.fields[0].disabled = true;
9190
vm.$nextTick(() => {
9291
expect(tr.classList.contains("disabled")).to.be.true;
9392
done();
94-
})
93+
});
9594
});
9695

9796
it("should be required class", (done) => {
9897
vm.schema.fields[0].required = true;
9998
vm.$nextTick(() => {
10099
expect(tr.classList.contains("required")).to.be.true;
101100
done();
102-
})
101+
});
103102
});
104103

105104
it("should be error class", (done) => {
106105
vm.$set("schema.fields[0].errors", [ "!!!" ]);
107106
vm.$nextTick(() => {
108107
expect(tr.classList.contains("error")).to.be.true;
109108
done();
110-
})
109+
});
111110
});
112111

113112
it("should be add a custom classes", (done) => {
114113
vm.$set("schema.fields[0].styleClasses", "classA");
115114
vm.$nextTick(() => {
116115
expect(tr.classList.contains("classA")).to.be.true;
117116
done();
118-
})
117+
});
119118
});
120119

121120
it("should be add more custom classes", (done) => {
@@ -124,13 +123,13 @@ describe("VueFormGenerator.vue", () => {
124123
expect(tr.classList.contains("classB")).to.be.true;
125124
expect(tr.classList.contains("classC")).to.be.true;
126125
done();
127-
})
126+
});
128127
});
129128

130129
});
131130

132131
describe("check form row caption cell", () => {
133-
let tr, tdCaption, tdField;
132+
let tr, tdCaption;
134133
let schema = {
135134
fields: [
136135
{
@@ -146,7 +145,6 @@ describe("VueFormGenerator.vue", () => {
146145
createFormGenerator(schema);
147146
tr = el.getElementsByTagName("tr")[0];
148147
tdCaption = tr.getElementsByTagName("td")[0];
149-
tdField = tr.getElementsByTagName("td")[1];
150148
});
151149

152150
it("should be text of cell is the name of field", () => {
@@ -163,7 +161,7 @@ describe("VueFormGenerator.vue", () => {
163161
expect(span.querySelector(".helpText")).to.be.exist;
164162
expect(span.querySelector(".helpText").textContent).to.be.equal("Sample help");
165163
done();
166-
})
164+
});
167165
});
168166

169167
});
@@ -246,10 +244,11 @@ describe("VueFormGenerator.vue", () => {
246244
}
247245
]
248246
};
247+
249248
let model = {
250249
name: "John Doe",
251250
status: true
252-
}
251+
};
253252

254253
before( () => {
255254
createFormGenerator(schema, model);
@@ -319,10 +318,11 @@ describe("VueFormGenerator.vue", () => {
319318
}
320319
]
321320
};
321+
322322
let model = {
323323
name: "John Doe",
324324
status: true
325-
}
325+
};
326326

327327
before( () => {
328328
createFormGenerator(schema, model);

test/unit/specs/fields/abstractField.spec.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
/* global sinon */
12
import { expect } from "chai";
23

34
import Vue from "vue";
4-
import VueFormGenerator from "src/index";
55
import AbstractField from "src/fields/abstractField";
66

77
Vue.component("AbstractField", AbstractField);
@@ -133,7 +133,7 @@ describe("abstractField.vue", () => {
133133
expect(schema.onChanged.calledOnce).to.be.true;
134134
expect(schema.onChanged.calledWith(model, "Jane Doe", "John Doe", schema)).to.be.true;
135135
done();
136-
})
136+
});
137137
});
138138

139139
});
@@ -148,7 +148,7 @@ describe("abstractField.vue", () => {
148148
let model = { name: "John Doe" };
149149
let options = {
150150
validateAfterChanged: false
151-
}
151+
};
152152

153153
beforeEach( () => {
154154
createField(schema, model, false, options);

0 commit comments

Comments
 (0)