better-mock
Version:
Forked from Mockjs. Generate random data & Intercept ajax request. Support miniprogram.
229 lines (209 loc) • 6.16 kB
JavaScript
const Mock = require('../../dist/mock.mp')
const expect = require('chai').expect
const { describe, it } = global
describe('DPD', function () {
describe('Reference', function () {
it('@EMAIL', function () {
var data = Mock.mock(this.test.title)
expect(data).to.not.equal(this.test.title)
})
})
describe('Priority', function () {
it('@EMAIL', function () {
var data = Mock.mock({
email: 'nuysoft@gmail.com',
name: '@EMAIL'
})
this.test.title += ' => ' + data.name
expect(data.name).to.not.equal(data.email)
})
it('@email', function () {
var data = Mock.mock({
email: 'nuysoft@gmail.com',
name: '@email'
})
this.test.title += ' => ' + data.name
expect(data.name).to.equal(data.email)
})
})
describe('Escape', function () {
it('\@EMAIL', function () {
var data = Mock.mock(this.test.title)
this.test.title += ' => ' + data
expect(data).to.not.equal(this.test.title)
})
it('\\@EMAIL', function () {
var data = Mock.mock(this.test.title)
this.test.title += ' => ' + data
expect(data).to.not.equal(this.test.title)
})
it('\\\@EMAIL', function () {
var data = Mock.mock(this.test.title)
this.test.title += ' => ' + data
expect(data).to.not.equal(this.test.title)
})
it('\\\\@EMAIL', function () {
var data = Mock.mock(this.test.title)
this.test.title += ' => ' + data
expect(data).to.not.equal(this.test.title)
})
})
describe('Path', function () {
it('Absolute Path', function () {
var data = Mock.mock({
id: '@UUID',
children: [{
parentId: '@/id'
}],
child: {
parentId: '@/id'
}
})
expect(data.children[0]).to.have.property('parentId', data.id)
expect(data.child).to.have.property('parentId', data.id)
})
it('Relative Path', function () {
var data = Mock.mock({
id: '@UUID',
children: [{
parentId: '@../../id'
}],
child: {
parentId: '@../id'
},
myId: '@./id'
})
expect(data.children[0]).to.have.property('parentId', data.id)
expect(data.child).to.have.property('parentId', data.id)
expect(data.myId).to.equal(data.id)
})
})
describe('Complex', function () {
var tpl = {
basics: {
boolean1: '@BOOLEAN',
boolean2: '@BOOLEAN(1, 9, true)',
natural1: '@NATURAL',
natural2: '@NATURAL(10000)',
natural3: '@NATURAL(60, 100)',
integer1: '@INTEGER',
integer2: '@INTEGER(10000)',
integer3: '@INTEGER(60, 100)',
float1: '@FLOAT',
float2: '@FLOAT(0)',
float3: '@FLOAT(60, 100)',
float4: '@FLOAT(60, 100, 3)',
float5: '@FLOAT(60, 100, 3, 5)',
character1: '@CHARACTER',
character2: '@CHARACTER("lower")',
character3: '@CHARACTER("upper")',
character4: '@CHARACTER("number")',
character5: '@CHARACTER("symbol")',
character6: '@CHARACTER("aeiou")',
string1: '@STRING',
string2: '@STRING(5)',
string3: '@STRING("lower",5)',
string4: '@STRING(7, 10)',
string5: '@STRING("aeiou", 1, 3)',
range1: '@RANGE(10)',
range2: '@RANGE(3, 7)',
range3: '@RANGE(1, 10, 2)',
range4: '@RANGE(1, 10, 3)'
},
data: {
date: '@DATE',
time: '@TIME',
datetime1: '@DATETIME',
datetime2: '@DATETIME("yyyy-MM-dd A HH:mm:ss")',
datetime3: '@DATETIME("yyyy-MM-dd a HH:mm:ss")',
datetime4: '@DATETIME("yy-MM-dd HH:mm:ss")',
datetime5: '@DATETIME("y-MM-dd HH:mm:ss")',
datetime6: '@DATETIME("y-M-d H:m:s")',
timestamp: '@TIMESTAMP',
now: '@NOW',
nowYear: '@NOW("year")',
nowMonth: '@NOW("month")',
nowDay: '@NOW("day")',
nowHour: '@NOW("hour")',
nowMinute: '@NOW("minute")',
nowSecond: '@NOW("second")',
nowWeek: '@NOW("week")',
nowCustom: '@NOW("yyyy-MM-dd HH:mm:ss SS")'
},
image: {
image1: '@IMAGE',
image2: '@IMAGE("100x200", "#000")',
image3: '@IMAGE("100x200", "#000", "hello")',
image4: '@IMAGE("100x200", "#000", "#FFF", "hello")',
image5: '@IMAGE("100x200", "#000", "#FFF", "png", "hello")'
},
color: {
color: '@COLOR'
},
text: {
title1: '@TITLE',
title2: '@TITLE(5)',
title3: '@TITLE(3, 5)',
word1: '@WORD',
word2: '@WORD(5)',
word3: '@WORD(3, 5)',
sentence1: '@SENTENCE',
sentence2: '@SENTENCE(5)',
sentence3: '@SENTENCE(3, 5)',
paragraph1: '@PARAGRAPH',
paragraph2: '@PARAGRAPH(2)',
paragraph3: '@PARAGRAPH(1, 3)'
},
name: {
first: '@FIRST',
last: '@LAST',
name1: '@NAME',
name2: '@NAME(true)'
},
web: {
url: '@URL',
domain: '@DOMAIN',
email: '@EMAIL',
ip: '@IP',
tld: '@TLD'
},
address: {
region: '@REGION',
province: '@PROVINCE',
city: '@CITY',
county: '@COUNTY'
},
miscellaneous: {
guid: '@GUID',
id: '@ID',
version1: '@VERSION',
version2: '@VERSION(4)',
phone: '@PHONE',
'increment1|3': [
'@INCREMENT'
],
'increment2|3': [
'@INCREMENT(10)'
]
},
helpers: {
capitalize1: '@CAPITALIZE()',
capitalize2: '@CAPITALIZE("hello")',
upper1: '@UPPER',
upper2: '@UPPER("hello")',
lower1: '@LOWER',
lower2: '@LOWER("HELLO")',
pick1: '@PICK',
pick2: '@PICK("abc")',
pick3: '@PICK(["a", "b", "c"])',
shuffle1: '@SHUFFLE',
shuffle2: '@SHUFFLE(["a", "b", "c"])'
}
}
it('', function () {
var data = Mock.mock(tpl)
// this.test.title += JSON.stringify(data, null, 4)
expect(data).to.be.a('object')
})
})
})