From 13e33e329c724b43e3abbed6522d0498970f74e1 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 25 Aug 2015 19:19:24 +0300 Subject: Remove the obsolete JSHint references. --- js/tests/unit/.jshintrc | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 js/tests/unit/.jshintrc (limited to 'js/tests/unit') diff --git a/js/tests/unit/.jshintrc b/js/tests/unit/.jshintrc deleted file mode 100644 index 22e878512..000000000 --- a/js/tests/unit/.jshintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends" : "../../.jshintrc", - "devel" : true, - "es3" : false, - "qunit" : true -} -- cgit v1.2.3 From c7d8e7a0777da91df2359655a7132e2b55482c0a Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Mon, 31 Aug 2015 00:57:16 +0100 Subject: Accept elements as the tooltip / popover content When a DOM node is passed to an HTML tooltip, the `title` node is only moved if it is not already in the tooltip. Otherwise, `empty()` is used instead of `detach()` before appending the `title` to avoid memory leaks. If a DOM node is passed to a plain text tooltip, its text is copied via jQuery `.text()`. Replaces `.detach()` with `.empty()`, as `.detach()` is almost never useful but instead leaks memory. The difference between `empty` and `detach` is that the latter keeps all the attached jQuery events/data. However, since we do not return the previous children, the user would have to keep these themselves, thus they can `detach()` if necessary. This is a port of https://github.com/twbs/bootstrap/pull/14552 to v4. --- js/tests/unit/popover.js | 36 ++++++++++++++++++++++++++++++++++++ js/tests/unit/tooltip.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) (limited to 'js/tests/unit') diff --git a/js/tests/unit/popover.js b/js/tests/unit/popover.js index 8347e9f03..894468695 100644 --- a/js/tests/unit/popover.js +++ b/js/tests/unit/popover.js @@ -86,6 +86,42 @@ $(function () { assert.strictEqual($('.popover').length, 0, 'popover was removed') }) + QUnit.test('should allow DOMElement title and content (html: true)', function (assert) { + assert.expect(5) + var title = document.createTextNode('@glebm <3 writing tests') + var content = $('¯\\_(ツ)_/¯').get(0) + var $popover = $('') + .appendTo('#qunit-fixture') + .bootstrapPopover({ html: true, title: title, content: content }) + + $popover.bootstrapPopover('show') + + assert.notEqual($('.popover').length, 0, 'popover inserted') + assert.strictEqual($('.popover .popover-title').text(), '@glebm <3 writing tests', 'title inserted') + assert.ok($.contains($('.popover').get(0), title), 'title node moved, not copied') + // toLowerCase because IE8 will return ... + assert.strictEqual($('.popover .popover-content').html().toLowerCase(), '¯\\_(ツ)_/¯', 'content inserted') + assert.ok($.contains($('.popover').get(0), content), 'content node moved, not copied') + }) + + QUnit.test('should allow DOMElement title and content (html: false)', function (assert) { + assert.expect(5) + var title = document.createTextNode('@glebm <3 writing tests') + var content = $('¯\\_(ツ)_/¯').get(0) + var $popover = $('') + .appendTo('#qunit-fixture') + .bootstrapPopover({ title: title, content: content }) + + $popover.bootstrapPopover('show') + + assert.notEqual($('.popover').length, 0, 'popover inserted') + assert.strictEqual($('.popover .popover-title').text(), '@glebm <3 writing tests', 'title inserted') + assert.ok(!$.contains($('.popover').get(0), title), 'title node copied, not moved') + assert.strictEqual($('.popover .popover-content').html(), '¯\\_(ツ)_/¯', 'content inserted') + assert.ok(!$.contains($('.popover').get(0), content), 'content node copied, not moved') + }) + + QUnit.test('should not duplicate HTML object', function (assert) { assert.expect(6) var $div = $('
').html('loves writing tests (╯°□°)╯︵ ┻━┻') diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js index f4deb29f8..934e26b9e 100644 --- a/js/tests/unit/tooltip.js +++ b/js/tests/unit/tooltip.js @@ -119,6 +119,35 @@ $(function () { assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') }) + QUnit.test('should allow DOMElement title (html: false)', function (assert) { + assert.expect(3) + var title = document.createTextNode('<3 writing tests') + var $tooltip = $('') + .appendTo('#qunit-fixture') + .bootstrapTooltip({ title: title }) + + $tooltip.bootstrapTooltip('show') + + assert.notEqual($('.tooltip').length, 0, 'tooltip inserted') + assert.strictEqual($('.tooltip').text(), '<3 writing tests', 'title inserted') + assert.ok(!$.contains($('.tooltip').get(0), title), 'title node copied, not moved') + }) + + QUnit.test('should allow DOMElement title (html: true)', function (assert) { + assert.expect(3) + var title = document.createTextNode('<3 writing tests') + var $tooltip = $('') + .appendTo('#qunit-fixture') + .bootstrapTooltip({ html: true, title: title }) + + $tooltip.bootstrapTooltip('show') + + assert.notEqual($('.tooltip').length, 0, 'tooltip inserted') + assert.strictEqual($('.tooltip').text(), '<3 writing tests', 'title inserted') + assert.ok($.contains($('.tooltip').get(0), title), 'title node moved, not copied') + }) + + QUnit.test('should respect custom classes', function (assert) { assert.expect(2) var $tooltip = $('') -- cgit v1.2.3