87 lines
1.5 KiB
JavaScript
87 lines
1.5 KiB
JavaScript
'use strict'
|
|
|
|
require('should')
|
|
var Dot = require('../index')
|
|
|
|
describe('Copy:', function () {
|
|
it('Should be able to copy properties', function () {
|
|
var src = {
|
|
name: 'John',
|
|
stuff: {
|
|
phone: {
|
|
brand: 'iphone',
|
|
version: 6
|
|
}
|
|
}
|
|
}
|
|
|
|
var tgt = {
|
|
name: 'Brandon'
|
|
}
|
|
|
|
var srcExpected = JSON.parse(JSON.stringify(src))
|
|
|
|
var tgtExpected = {
|
|
name: 'Brandon',
|
|
copied: 'John',
|
|
wanna: {
|
|
haves: {
|
|
phone: {
|
|
brand: 'iphone',
|
|
version: 6
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// copy object
|
|
Dot.copy('stuff.phone', 'wanna.haves.phone', src, tgt)
|
|
|
|
// copy string
|
|
Dot.copy('name', 'copied', src, tgt)
|
|
|
|
src.should.eql(srcExpected)
|
|
tgt.should.eql(tgtExpected)
|
|
})
|
|
|
|
it('Should process modifiers', function () {
|
|
function up (val) {
|
|
val.brand = val.brand.toUpperCase()
|
|
return val
|
|
}
|
|
|
|
var src = {
|
|
name: 'John',
|
|
stuff: {
|
|
phone: {
|
|
brand: 'iphone',
|
|
version: 6
|
|
}
|
|
}
|
|
}
|
|
|
|
var tgt = {
|
|
name: 'Brandon'
|
|
}
|
|
|
|
var srcExpected = JSON.parse(JSON.stringify(src))
|
|
|
|
var tgtExpected = {
|
|
name: 'Brandon',
|
|
wanna: {
|
|
haves: {
|
|
phone: {
|
|
brand: 'IPHONE',
|
|
version: 6
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Dot.copy('stuff.phone', 'wanna.haves.phone', src, tgt, up)
|
|
|
|
src.should.eql(srcExpected)
|
|
tgt.should.eql(tgtExpected)
|
|
})
|
|
})
|