diff options
| author | Johann-S <[email protected]> | 2020-03-18 12:10:55 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-03-18 13:10:55 +0200 |
| commit | aff115219ee47b261b943bbe65cf5919fe021a22 (patch) | |
| tree | cff50377c0c3fdaabf09fcdc7ee49327c2f6eaf2 /js | |
| parent | d773cafe3dacee19639ec7b523fb9b4c89ec0129 (diff) | |
| download | bootstrap-aff115219ee47b261b943bbe65cf5919fe021a22.tar.xz bootstrap-aff115219ee47b261b943bbe65cf5919fe021a22.zip | |
fix: ensure `totype` always returns stringified null/undefined when null/undefined is passed (#30383)
Diffstat (limited to 'js')
| -rw-r--r-- | js/src/util/index.js | 8 | ||||
| -rw-r--r-- | js/tests/unit/util/index.spec.js | 31 |
2 files changed, 37 insertions, 2 deletions
diff --git a/js/src/util/index.js b/js/src/util/index.js index 8a5ae2156..fca2a9197 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -10,7 +10,13 @@ const MILLISECONDS_MULTIPLIER = 1000 const TRANSITION_END = 'transitionend' // Shoutout AngusCroll (https://goo.gl/pxwQGp) -const toType = obj => ({}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase()) +const toType = obj => { + if (obj === null || obj === undefined) { + return `${obj}` + } + + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase() +} /** * -------------------------------------------------------------------------- diff --git a/js/tests/unit/util/index.spec.js b/js/tests/unit/util/index.spec.js index 42c273f06..57ca1a9c7 100644 --- a/js/tests/unit/util/index.spec.js +++ b/js/tests/unit/util/index.spec.js @@ -198,8 +198,9 @@ describe('Util', () => { }) describe('typeCheckConfig', () => { + const namePlugin = 'collapse' + it('should check type of the config object', () => { - const namePlugin = 'collapse' const defaultType = { toggle: 'boolean', parent: '(string|element)' @@ -213,6 +214,34 @@ describe('Util', () => { Util.typeCheckConfig(namePlugin, config, defaultType) }).toThrow(new Error('COLLAPSE: Option "parent" provided type "number" but expected type "(string|element)".')) }) + + it('should return null stringified when null is passed', () => { + const defaultType = { + toggle: 'boolean', + parent: '(null|element)' + } + const config = { + toggle: true, + parent: null + } + + Util.typeCheckConfig(namePlugin, config, defaultType) + expect().nothing() + }) + + it('should return undefined stringified when undefined is passed', () => { + const defaultType = { + toggle: 'boolean', + parent: '(undefined|element)' + } + const config = { + toggle: true, + parent: undefined + } + + Util.typeCheckConfig(namePlugin, config, defaultType) + expect().nothing() + }) }) describe('makeArray', () => { |
