From 30fd460c6d1f98346afaaf453343b85d1bf138ae Mon Sep 17 00:00:00 2001 From: GeoSot Date: Fri, 3 Dec 2021 19:57:03 +0200 Subject: [PATCH] move `getJquery` function to another file --- js/src/dom/event-handler.js | 2 +- js/src/util/index.js | 11 +------ js/src/util/jquery-stuff.js | 11 +++++++ js/tests/unit/util/index.spec.js | 33 -------------------- js/tests/unit/util/jquery-stuff.spec.js | 41 ++++++++++++++++++++++--- 5 files changed, 50 insertions(+), 48 deletions(-) diff --git a/js/src/dom/event-handler.js b/js/src/dom/event-handler.js index 413aa6e28..33fd85f88 100644 --- a/js/src/dom/event-handler.js +++ b/js/src/dom/event-handler.js @@ -5,7 +5,7 @@ * -------------------------------------------------------------------------- */ -import { getjQuery } from '../util/index' +import { getjQuery } from '../util/jquery-stuff' /** * Constants diff --git a/js/src/util/index.js b/js/src/util/index.js index ec6fefaea..25dfc1162 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -4,7 +4,7 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ -import { getJqueryInterfaceForPlugin } from './jquery-stuff' +import { getjQuery, getJqueryInterfaceForPlugin } from './jquery-stuff' const MAX_UID = 1_000_000 const MILLISECONDS_MULTIPLIER = 1000 @@ -204,14 +204,6 @@ const reflow = element => { element.offsetHeight // eslint-disable-line no-unused-expressions } -const getjQuery = () => { - if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { - return window.jQuery - } - - return null -} - const DOMContentLoadedCallbacks = [] const onDOMContentLoaded = callback => { @@ -321,7 +313,6 @@ export { findShadowRoot, getElement, getElementFromSelector, - getjQuery, getNextActiveElement, getSelectorFromElement, getTransitionDurationFromElement, diff --git a/js/src/util/jquery-stuff.js b/js/src/util/jquery-stuff.js index c6cdc3275..2a0a506a5 100644 --- a/js/src/util/jquery-stuff.js +++ b/js/src/util/jquery-stuff.js @@ -5,6 +5,16 @@ * -------------------------------------------------------------------------- */ +const getjQuery = () => { + const { jQuery } = window + + if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { + return jQuery + } + + return null +} + const defaultJQueryInterface = plugin => { return function (config) { return this.each(function () { @@ -26,5 +36,6 @@ const defaultJQueryInterface = plugin => { const getJqueryInterfaceForPlugin = plugin => plugin.jQueryInterface || defaultJQueryInterface(plugin) export { + getjQuery, getJqueryInterfaceForPlugin } diff --git a/js/tests/unit/util/index.spec.js b/js/tests/unit/util/index.spec.js index 0d60ca989..676e193e4 100644 --- a/js/tests/unit/util/index.spec.js +++ b/js/tests/unit/util/index.spec.js @@ -538,39 +538,6 @@ describe('Util', () => { }) }) - describe('getjQuery', () => { - const fakejQuery = { trigger() {} } - - beforeEach(() => { - Object.defineProperty(window, 'jQuery', { - value: fakejQuery, - writable: true - }) - }) - - afterEach(() => { - window.jQuery = undefined - }) - - it('should return jQuery object when present', () => { - expect(Util.getjQuery()).toEqual(fakejQuery) - }) - - it('should not return jQuery object when present if data-bs-no-jquery', () => { - document.body.setAttribute('data-bs-no-jquery', '') - - expect(window.jQuery).toEqual(fakejQuery) - expect(Util.getjQuery()).toBeNull() - - document.body.removeAttribute('data-bs-no-jquery') - }) - - it('should not return jQuery if not present', () => { - window.jQuery = undefined - expect(Util.getjQuery()).toBeNull() - }) - }) - describe('onDOMContentLoaded', () => { it('should execute callbacks when DOMContentLoaded is fired and should not add more than one listener', () => { const spy = jasmine.createSpy() diff --git a/js/tests/unit/util/jquery-stuff.spec.js b/js/tests/unit/util/jquery-stuff.spec.js index f68d4efec..01a7226e4 100644 --- a/js/tests/unit/util/jquery-stuff.spec.js +++ b/js/tests/unit/util/jquery-stuff.spec.js @@ -1,4 +1,4 @@ -import { getJqueryInterfaceForPlugin } from '../../../src/util/jquery-stuff' +import * as jQueryUtil from '../../../src/util/jquery-stuff' describe('Jquery Stuff', () => { const fakejQuery = { fn: {} } @@ -14,21 +14,54 @@ describe('Jquery Stuff', () => { window.jQuery = undefined }) + describe('getjQuery', () => { + const fakejQuery = { trigger() {} } + + beforeEach(() => { + Object.defineProperty(window, 'jQuery', { + value: fakejQuery, + writable: true + }) + }) + + afterEach(() => { + window.jQuery = undefined + }) + + it('should return jQuery object when present', () => { + expect(jQueryUtil.getjQuery()).toEqual(fakejQuery) + }) + + it('should not return jQuery object when present if data-bs-no-jquery', () => { + document.body.setAttribute('data-bs-no-jquery', '') + + expect(window.jQuery).toEqual(fakejQuery) + expect(jQueryUtil.getjQuery()).toBeNull() + + document.body.removeAttribute('data-bs-no-jquery') + }) + + it('should not return jQuery if not present', () => { + window.jQuery = undefined + expect(jQueryUtil.getjQuery()).toBeNull() + }) + }) + describe('getJqueryInterfaceForPlugin', () => { it('should return a plugin jQueryInterface if exists', () => { const pluginMock = function () {} pluginMock.NAME = 'test' pluginMock.jQueryInterface = function () {} - expect(getJqueryInterfaceForPlugin(pluginMock)).toEqual(pluginMock.jQueryInterface) + expect(jQueryUtil.getJqueryInterfaceForPlugin(pluginMock)).toEqual(pluginMock.jQueryInterface) }) it('should return the default `defaultJQueryInterface`, if plugin jQueryInterface doesn\'t exists', () => { const pluginMock = function () {} pluginMock.NAME = 'test' - expect(getJqueryInterfaceForPlugin(pluginMock)).not.toEqual(pluginMock.jQueryInterface) - expect(getJqueryInterfaceForPlugin(pluginMock)).toEqual(jasmine.any(Function)) + expect(jQueryUtil.getJqueryInterfaceForPlugin(pluginMock)).not.toEqual(pluginMock.jQueryInterface) + expect(jQueryUtil.getJqueryInterfaceForPlugin(pluginMock)).toEqual(jasmine.any(Function)) }) }) })