aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohann-S <[email protected]>2018-06-16 22:20:27 +0200
committerXhmikosR <[email protected]>2019-02-20 22:05:45 +0200
commit096413a9942178aa68925f032822b40900bac346 (patch)
treec4c6acc502b2df8788ec5e2b69122dcb081d3490
parent4510e7e61db27b264c1fadc125beb2d4c80f07df (diff)
downloadbootstrap-096413a9942178aa68925f032822b40900bac346.tar.xz
bootstrap-096413a9942178aa68925f032822b40900bac346.zip
fix(selector-engine): increase coverage for selector engine
-rw-r--r--js/src/dom/selectorEngine.js6
-rw-r--r--js/tests/index.html1
-rw-r--r--js/tests/unit/.eslintrc.json3
-rw-r--r--js/tests/unit/dom/eventHandler.js2
-rw-r--r--js/tests/unit/dom/selectorEngine.js77
5 files changed, 86 insertions, 3 deletions
diff --git a/js/src/dom/selectorEngine.js b/js/src/dom/selectorEngine.js
index b6b45bacb..55d2ce4bb 100644
--- a/js/src/dom/selectorEngine.js
+++ b/js/src/dom/selectorEngine.js
@@ -3,7 +3,7 @@ import Util from '../util'
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.0.0-beta): dom/selectorEngine.js
+ * Bootstrap (v4.1.1): dom/selectorEngine.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
@@ -69,6 +69,10 @@ const SelectorEngine = (() => {
},
closest(element, selector) {
+ if (typeof selector !== 'string') {
+ return null
+ }
+
return closest(element, selector)
},
diff --git a/js/tests/index.html b/js/tests/index.html
index f4a99df44..d0ff5b82b 100644
--- a/js/tests/index.html
+++ b/js/tests/index.html
@@ -119,6 +119,7 @@
<script src="unit/dom/eventHandler.js"></script>
<script src="unit/dom/manipulator.js"></script>
<script src="unit/dom/data.js"></script>
+ <script src="unit/dom/selectorEngine.js"></script>
<script src="unit/alert.js"></script>
<script src="unit/button.js"></script>
<script src="unit/carousel.js"></script>
diff --git a/js/tests/unit/.eslintrc.json b/js/tests/unit/.eslintrc.json
index 4010b9830..dfcf1eaa5 100644
--- a/js/tests/unit/.eslintrc.json
+++ b/js/tests/unit/.eslintrc.json
@@ -15,7 +15,8 @@
"Simulator": false,
"Toast": false,
"EventHandler": false,
- "Manipulator": false
+ "Manipulator": false,
+ "SelectorEngine": false
},
"parserOptions": {
"ecmaVersion": 5,
diff --git a/js/tests/unit/dom/eventHandler.js b/js/tests/unit/dom/eventHandler.js
index f28261632..076a28a8a 100644
--- a/js/tests/unit/dom/eventHandler.js
+++ b/js/tests/unit/dom/eventHandler.js
@@ -1,7 +1,7 @@
$(function () {
'use strict'
- QUnit.module('event handler')
+ QUnit.module('eventHandler')
QUnit.test('should be defined', function (assert) {
assert.expect(1)
diff --git a/js/tests/unit/dom/selectorEngine.js b/js/tests/unit/dom/selectorEngine.js
new file mode 100644
index 000000000..80bee7800
--- /dev/null
+++ b/js/tests/unit/dom/selectorEngine.js
@@ -0,0 +1,77 @@
+$(function () {
+ 'use strict'
+
+ QUnit.module('selectorEngine')
+
+ QUnit.test('should be defined', function (assert) {
+ assert.expect(1)
+ assert.ok(SelectorEngine, 'Manipulator is defined')
+ })
+
+ QUnit.test('should determine if an element match the selector', function (assert) {
+ assert.expect(2)
+ $('<input type="checkbox" /> <button class="btn"></button>').appendTo('#qunit-fixture')
+
+ assert.ok(!SelectorEngine.matches($('#qunit-fixture')[0], '.btn'))
+ assert.ok(SelectorEngine.matches($('.btn')[0], '.btn'))
+ })
+
+ QUnit.test('should find the selector, according to an element or not', function (assert) {
+ assert.expect(3)
+ $('<input type="checkbox" /> <button class="btn"></button>').appendTo('#qunit-fixture')
+
+ var btn = $('.btn').first()[0]
+ assert.strictEqual(SelectorEngine.find($('.btn')), null)
+ assert.equal(SelectorEngine.find('.btn')[0], btn)
+ assert.equal(SelectorEngine.find('.btn', $('#qunit-fixture')[0])[0], btn)
+ })
+
+ QUnit.test('should find the first element which match the selector, according to an element or not', function (assert) {
+ assert.expect(3)
+ $('<button class="btn">btn1</button> <button class="btn">btn2</button>').appendTo('#qunit-fixture')
+
+ var btn = $('.btn').first()[0]
+ assert.strictEqual(SelectorEngine.findOne($('.btn')), null)
+ assert.equal(SelectorEngine.findOne('.btn'), btn)
+ assert.equal(SelectorEngine.findOne('.btn', $('#qunit-fixture')[0]), btn)
+ })
+
+ QUnit.test('should find children', function (assert) {
+ assert.expect(2)
+ $('<button class="btn">btn1</button> <button class="btn">btn2</button> <input type="text" />').appendTo('#qunit-fixture')
+
+ assert.strictEqual(SelectorEngine.children($('.btn')), null)
+ assert.equal(SelectorEngine.children($('#qunit-fixture')[0], '.btn').length, 2)
+ })
+
+ QUnit.test('should find the selector in parents', function (assert) {
+ assert.expect(2)
+
+ $('<input type="text" />').appendTo('#qunit-fixture')
+ assert.strictEqual(SelectorEngine.parents($('.container')[0], {}), null)
+ assert.strictEqual(SelectorEngine.parents($('input')[0], 'body').length, 1)
+ })
+
+ QUnit.test('should find the closest element according to the selector', function (assert) {
+ assert.expect(2)
+ var html =
+ '<div class="test">' +
+ ' <button class="btn"></button>' +
+ '</div>'
+
+ $(html).appendTo('#qunit-fixture')
+ assert.strictEqual(SelectorEngine.closest($('.btn')[0], {}), null)
+ assert.strictEqual(SelectorEngine.closest($('.btn')[0], '.test'), $('.test')[0])
+ })
+
+ QUnit.test('should fin previous element', function (assert) {
+ assert.expect(2)
+ var html =
+ '<div class="test"></div>' +
+ '<button class="btn"></button>'
+
+ $(html).appendTo('#qunit-fixture')
+ assert.strictEqual(SelectorEngine.prev($('.btn')[0], {}), null)
+ assert.strictEqual(SelectorEngine.prev($('.btn')[0], '.test')[0], $('.test')[0])
+ })
+})