wsemi
Version:
A support package for web developer.
365 lines (327 loc) • 12.4 kB
JavaScript
import assert from 'assert'
import ltdtDiffByKey from '../src/ltdtDiffByKey.mjs'
describe(`ltdtDiffByKey`, function() {
let k
let o = {}
k = 1
o[k] = {
old: { id: 'pk', a: 'abc', b: 123 },
new: { id: 'pk', a: 'abc', b: 123 },
ret: {
infor: { pk: 'same' },
del: [],
same: [{ id: 'pk', a: 'abc', b: 123 }],
diff: [],
add: [],
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 1
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 2
o[k] = {
old: { id: 'pk', a: 'abc', b: 123 },
new: { id: 'pk', a: 'abc', b: 123 },
ret: { infor: {}, del: [], same: [], diff: [], add: [] }
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'temp'`, function() {
k = 2
let r = ltdtDiffByKey(o[k].old, o[k].new, 'temp')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 3
o[k] = {
old: { id: 'pk', a: 'abc', b: 123 },
new: { id: 'pk', a: 'abc', b: 456 },
ret: {
infor: { pk: 'diff' },
del: [],
same: [],
diff: [{ id: 'pk', a: 'abc', b: 456 }],
add: [],
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 3
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 4
o[k] = {
old: { id: 'pk', a: 'abc', b: 123 },
new: { id: 'pk1', a: 'abc', b: 456 },
ret: {
infor: { pk: 'del', pk1: 'add' },
del: [{ id: 'pk', a: 'abc', b: 123 }],
same: [],
diff: [],
add: [{ id: 'pk1', a: 'abc', b: 456 }],
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 4
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 5
o[k] = {
old: { id: 'pk', a: 'abc', b: 123 },
new: [{ id: 'pk', a: 'abc', b: 123 }, { id: 'pk1', a: 'abc', b: 123 }],
ret: {
infor: { pk: 'same', pk1: 'add' },
del: [],
same: [{ id: 'pk', a: 'abc', b: 123 }],
diff: [],
add: [{ id: 'pk1', a: 'abc', b: 123 }],
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 5
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 6
o[k] = {
old: [{ id: 'pk', a: 'abc', b: 123 }, { id: 'pk2', a: 'abc', b: 123 }],
new: [{ id: 'pk', a: 'abc', b: 123 }, { id: 'pk1', a: 'abc', b: 123 }],
ret: {
infor: { pk: 'same', pk1: 'add', pk2: 'del' },
del: [{ id: 'pk2', a: 'abc', b: 123 }],
same: [{ id: 'pk', a: 'abc', b: 123 }],
diff: [],
add: [{ id: 'pk1', a: 'abc', b: 123 }],
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 6
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 7
o[k] = {
old: [{ id: 'pk', a: 'abc', b: 123 }, { id: 'pk2', a: 'abc', b: 123 }],
new: [{ id: 'pk', a: 'abc', b: 456 }, { id: 'pk1', a: 'abc', b: 123 }],
ret: {
infor: { pk: 'diff', pk1: 'add', pk2: 'del' },
del: [{ id: 'pk2', a: 'abc', b: 123 }],
same: [],
diff: [{ id: 'pk', a: 'abc', b: 456 }],
add: [{ id: 'pk1', a: 'abc', b: 123 }],
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 7
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 8
o[k] = {
old: [{ x: 'xa', y: 'y1' }],
new: [{ x: 'xa', y: 'y1' }],
ret: {
infor: { xa: 'same' },
del: [],
same: [{ x: 'xa', y: 'y1' }],
diff: [],
add: []
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'x'`, function() {
k = 8
let r = ltdtDiffByKey(o[k].old, o[k].new, 'x')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 9
o[k] = {
old: [{ x: 'xa', y: 'y1' }],
new: [],
ret: {
infor: { xa: 'del' },
del: [{ x: 'xa', y: 'y1' }],
same: [],
diff: [],
add: []
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'x'`, function() {
k = 9
let r = ltdtDiffByKey(o[k].old, o[k].new, 'x')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 10
o[k] = {
old: [],
new: [{ x: 'xa', y: 'y1' }],
ret: {
infor: { xa: 'add' },
del: [],
same: [],
diff: [],
add: [{ x: 'xa', y: 'y1' }]
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'x'`, function() {
k = 10
let r = ltdtDiffByKey(o[k].old, o[k].new, 'x')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 11
o[k] = {
old: [{ z: 'zz' }, { x: 'xa', y: 'y1' }],
new: [{ z: 'zz' }],
ret: {
infor: { xa: 'del' },
del: [{ x: 'xa', y: 'y1' }],
same: [],
diff: [],
add: []
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'x'`, function() {
k = 11
let r = ltdtDiffByKey(o[k].old, o[k].new, 'x')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 12
o[k] = {
old: [{ z: 'zz' }],
new: [{ z: 'zz' }, { x: 'xa', y: 'y1' }],
ret: {
infor: { xa: 'add' },
del: [],
same: [],
diff: [],
add: [{ x: 'xa', y: 'y1' }]
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'x'`, function() {
k = 12
let r = ltdtDiffByKey(o[k].old, o[k].new, 'x')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 13
o[k] = {
old: [{ x: 'xa', y: 'y1' }, { x: 'xb', y: 'y2' }],
new: [{ x: 'xa', z: 'z3' }],
ret: {
infor: { xa: 'diff', xb: 'del' },
del: [{ x: 'xb', y: 'y2' }],
same: [],
diff: [{ x: 'xa', z: 'z3' }],
add: []
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'x'`, function() {
k = 13
let r = ltdtDiffByKey(o[k].old, o[k].new, 'x')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
k = 14
o[k] = {
old: [{ id: 'id-1', a: 'a1' }, { id: 'id-2', a: 'a2' }, { id: 'id-3', a: 'a3' }],
new: [{ id: 'id-1', z: 'z3' }, { id: 'id-3', a: 'a3' }, { id: 'id-4', a: 'a4' }],
ret: {
infor: { 'id-1': 'diff', 'id-2': 'del', 'id-3': 'same', 'id-4': 'add' },
del: [{ id: 'id-2', a: 'a2' }],
same: [{ id: 'id-3', a: 'a3' }],
diff: [{ id: 'id-1', z: 'z3' }],
add: [{ id: 'id-4', a: 'a4' }]
}
}
it(`should return ${JSON.stringify(o[k].ret)} when input ${JSON.stringify(o[k].old)}, ${JSON.stringify(o[k].new)}, 'id'`, function() {
k = 14
let r = ltdtDiffByKey(o[k].old, o[k].new, 'id')
let rr = o[k].ret
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input ''`, function() {
let r = ltdtDiffByKey('')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input []`, function() {
let r = ltdtDiffByKey([])
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input {}`, function() {
let r = ltdtDiffByKey({})
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input null`, function() {
let r = ltdtDiffByKey(null)
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input undefined`, function() {
let r = ltdtDiffByKey(undefined)
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input '', 'id'`, function() {
let r = ltdtDiffByKey('', 'id')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input [], 'id'`, function() {
let r = ltdtDiffByKey([], 'id')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input {}, 'id'`, function() {
let r = ltdtDiffByKey({}, 'id')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input null, 'id'`, function() {
let r = ltdtDiffByKey(null, 'id')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input undefined, 'id'`, function() {
let r = ltdtDiffByKey(undefined, 'id')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input '', ''`, function() {
let r = ltdtDiffByKey('', '')
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input '', []`, function() {
let r = ltdtDiffByKey('', [])
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input '', {}`, function() {
let r = ltdtDiffByKey('', {})
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input '', null`, function() {
let r = ltdtDiffByKey('', null)
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
it(`should return {} when input '', undefined`, function() {
let r = ltdtDiffByKey('', undefined)
let rr = { infor: {}, del: [], same: [], diff: [], add: [] }
assert.strict.deepStrictEqual(r, rr)
})
})