/* global require, chai, describe, before, it */
|
// 数据占位符定义(Data Placeholder Definition,DPD)
|
var expect = chai.expect
|
var Mock, $, _
|
|
describe('DPD', function() {
|
before(function(done) {
|
require(['mock', 'underscore', 'jquery'], function() {
|
Mock = arguments[0]
|
_ = arguments[1]
|
$ = arguments[2]
|
expect(Mock).to.not.equal(undefined)
|
expect(_).to.not.equal(undefined)
|
expect($).to.not.equal(undefined)
|
done()
|
})
|
})
|
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'
|
}
|
})
|
expect(data.children[0]).to.have.property('parentId', data.id)
|
expect(data.child).to.have.property('parentId', 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)',
|
|
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")',
|
|
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")',
|
|
dataImage1: '@DATAIMAGE',
|
dataImage2: '@DATAIMAGE("200x100")',
|
dataImage3: '@DATAIMAGE("300x100", "Hello Mock.js!")'
|
},
|
color: {
|
color: '@COLOR',
|
render: function() {
|
$('.header').css('background', this.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',
|
'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')
|
})
|
})
|
})
|