You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.4 KiB
89 lines
1.4 KiB
const lodash = require('lodash')
|
|
const mergeApi = require('../src/merge.js')
|
|
|
|
// 默认配置
|
|
const defConfig = {
|
|
a: {
|
|
aa: { value: 1 },
|
|
bb: { value: 2 }
|
|
},
|
|
b: { c: 2 },
|
|
c: 1,
|
|
d: [1, 2, 3],
|
|
e: {
|
|
aa: 2,
|
|
ee: 5
|
|
},
|
|
f: {
|
|
x: 1
|
|
},
|
|
g: [1, 2],
|
|
h: null,
|
|
i: null
|
|
}
|
|
|
|
// 自定义配置
|
|
const customConfig = {
|
|
a: {
|
|
bb: { value: 2 },
|
|
cc: { value: 3 }
|
|
},
|
|
b: { c: 2 },
|
|
c: null,
|
|
d: [1, 2, 3, 4],
|
|
e: {
|
|
aa: 2,
|
|
ee: 5,
|
|
ff: 6
|
|
},
|
|
f: {},
|
|
g: [1, 2],
|
|
h: null
|
|
}
|
|
|
|
// doDiff
|
|
const doDiffResult = mergeApi.doDiff(defConfig, customConfig)
|
|
console.log('doDiffResult:', JSON.stringify(doDiffResult, null, 2))
|
|
console.log('\r')
|
|
// 校验doDiff结果
|
|
const doDiffExpect = {
|
|
a: {
|
|
aa: null,
|
|
cc: { value: 3 }
|
|
},
|
|
c: null,
|
|
d: [1, 2, 3, 4],
|
|
e: {
|
|
ff: 6
|
|
},
|
|
f: {
|
|
x: null
|
|
}
|
|
}
|
|
console.log('check diff result:', lodash.isEqual(doDiffResult, doDiffExpect))
|
|
console.log('\r')
|
|
|
|
// doMerge
|
|
const doMergeResult = mergeApi.doMerge(defConfig, doDiffResult)
|
|
// delete null item
|
|
mergeApi.deleteNullItems(doMergeResult)
|
|
console.log('running:', JSON.stringify(doMergeResult, null, 2))
|
|
// 校验doMerge结果
|
|
const doMergeExpect = {
|
|
a: {
|
|
bb: { value: 2 },
|
|
cc: { value: 3 }
|
|
},
|
|
b: { c: 2 },
|
|
d: [1, 2, 3, 4],
|
|
e: {
|
|
aa: 2,
|
|
ee: 5,
|
|
ff: 6
|
|
},
|
|
f: {},
|
|
g: [1, 2]
|
|
}
|
|
console.log('check merge result:', lodash.isEqual(doMergeResult, doMergeExpect))
|
|
console.log('\r')
|