Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: prevent object to be overwritten as undefined
Browse files Browse the repository at this point in the history
jakex7 committed Jan 31, 2024
1 parent 95f693c commit aa43b55
Showing 2 changed files with 21 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/__tests__/deepMerge.test.ts
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ describe('deepMerge tests', () => {
emoji: {
selected: '#fff',
},
category: undefined,
}
const newStyles = {
container: { backgroundColor: '#000' },
@@ -39,4 +40,23 @@ describe('deepMerge tests', () => {
},
})
})

it('should merge theme properly with undefined as property', () => {
const themeWithUndefined = {
...newTheme,
search: { text: undefined },
}
expect(deepMerge(defaultTheme, themeWithUndefined)).toStrictEqual({
...defaultTheme,
container: newTheme.container,
emoji: {
...defaultTheme.emoji,
selected: newTheme.emoji.selected,
},
search: {
...defaultTheme.search,
text: undefined,
},
})
})
})
1 change: 1 addition & 0 deletions src/utils/deepMerge.ts
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@ export const deepMerge = <T extends Record<K, any>, K extends keyof T>(
) {
result[key] = deepMerge(source[key], additional[key] as RecursivePartial<T[K]>)
} else {
if (typeof source[key] === 'object' && additional[key] === undefined) return
result[key] = additional[key] as T[K]
}
})

0 comments on commit aa43b55

Please sign in to comment.