8000 fix(utils): deepMixIn to properly merge undefined values of source (#… · js-data/js-data@2fb5bf0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 2fb5bf0

Browse files
ivanvoznyakovskycrobinson42
authored andcommitted
fix(utils): deepMixIn to properly merge undefined values of source (#502)
1 parent 78fcdc0 commit 2fb5bf0

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ const utils = {
409409
const existing = dest[key]
410410
if (isPlainObject(value) && isPlainObject(existing)) {
411411
utils.deepMixIn(existing, value)
412-
} else {
412+
} else if (existing === undefined || value !== undefined) {
413413
dest[key] = value
414414
}
415415
}

test/unit/utils/extendUtils.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ describe('utils.deepMixIn', function () {
5454
assert.deepEqual(expected, actual, 'sorce own properties recursivly copied and overriden into dest')
5555
assert.equal(dest, utils.deepMixIn(dest), 'empty source argument returns dest')
5656
})
57+
58+
it('skips source properties that resolve to undefined if a destination value exists', function () {
59+
const dest = { name: 'John', age: 90 }
60+
const src = { name: 'John', age: undefined }
61+
const expected = { name: 'John', age: 90 }
62+
const actual = utils.deepMixIn(dest, src)
63+
64+
assert.deepEqual(expected, actual)
65+
})
5766
})
5867

5968
describe('utils.extend', function () {

0 commit comments

Comments
 (0)
0