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.
dev-sidecar/packages/core/test/mergeTest.js

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')