diff options
| author | Johann-S <[email protected]> | 2018-03-20 11:07:58 +0100 |
|---|---|---|
| committer | Johann-S <[email protected]> | 2018-03-20 15:56:51 +0100 |
| commit | bedc96e48bebb7a1124a97833794a8047a1e3b95 (patch) | |
| tree | 0db43f0a301cf836fb9198a4957231a097a90f06 /js/tests | |
| parent | 2306f62bf19bb0696a9455aaf2eea6b083d9fdae (diff) | |
| download | bootstrap-bedc96e48bebb7a1124a97833794a8047a1e3b95.tar.xz bootstrap-bedc96e48bebb7a1124a97833794a8047a1e3b95.zip | |
Use transitionEnd in QUnit since we moved away from PhantomJS
Diffstat (limited to 'js/tests')
| -rw-r--r-- | js/tests/unit/alert.js | 11 | ||||
| -rw-r--r-- | js/tests/unit/collapse.js | 10 | ||||
| -rw-r--r-- | js/tests/unit/popover.js | 124 | ||||
| -rw-r--r-- | js/tests/unit/tooltip.js | 163 | ||||
| -rw-r--r-- | js/tests/unit/util.js | 5 |
5 files changed, 206 insertions, 107 deletions
diff --git a/js/tests/unit/alert.js b/js/tests/unit/alert.js index 2dcaeb6d0..165c91f1e 100644 --- a/js/tests/unit/alert.js +++ b/js/tests/unit/alert.js @@ -48,6 +48,7 @@ $(function () { QUnit.test('should remove element when clicking .close', function (assert) { assert.expect(2) + var done = assert.async() var alertHTML = '<div class="alert alert-danger fade show">' + '<a class="close" href="#" data-dismiss="alert">×</a>' + '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' + @@ -56,9 +57,13 @@ $(function () { assert.notEqual($('#qunit-fixture').find('.alert').length, 0, 'element added to dom') - $alert.find('.close').trigger('click') - - assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom') + $alert + .one('closed.bs.alert', function () { + assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom') + done() + }) + .find('.close') + .trigger('click') }) QUnit.test('should not fire closed when close is prevented', function (assert) { diff --git a/js/tests/unit/collapse.js b/js/tests/unit/collapse.js index b9e3c4757..4a99f1632 100644 --- a/js/tests/unit/collapse.js +++ b/js/tests/unit/collapse.js @@ -45,10 +45,14 @@ $(function () { QUnit.test('should show a collapsed element', function (assert) { assert.expect(2) - var $el = $('<div class="collapse"/>').bootstrapCollapse('show') + var done = assert.async() + var $el = $('<div class="collapse"/>') - assert.ok($el.hasClass('show'), 'has class "show"') - assert.ok(!/height/i.test($el.attr('style')), 'has height reset') + $el.one('shown.bs.collapse', function () { + assert.ok($el.hasClass('show'), 'has class "show"') + assert.ok(!/height/i.test($el.attr('style')), 'has height reset') + done() + }).bootstrapCollapse('show') }) QUnit.test('should show multiple collapsed elements', function (assert) { diff --git a/js/tests/unit/popover.js b/js/tests/unit/popover.js index b75837811..3eef811d6 100644 --- a/js/tests/unit/popover.js +++ b/js/tests/unit/popover.js @@ -80,6 +80,7 @@ $(function () { QUnit.test('should get title and content from options', function (assert) { assert.expect(4) + var done = assert.async() var $popover = $('<a href="#">@fat</a>') .appendTo('#qunit-fixture') .bootstrapPopover({ @@ -91,15 +92,18 @@ $(function () { } }) - $popover.bootstrapPopover('show') - - assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.strictEqual($('.popover .popover-header').text(), '@fat', 'title correctly inserted') - assert.strictEqual($('.popover .popover-body').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted') - - $popover.bootstrapPopover('hide') - - assert.strictEqual($('.popover').length, 0, 'popover was removed') + $popover + .one('shown.bs.popover', function () { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + assert.strictEqual($('.popover .popover-header').text(), '@fat', 'title correctly inserted') + assert.strictEqual($('.popover .popover-body').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted') + $popover.bootstrapPopover('hide') + }) + .one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') + done() + }) + .bootstrapPopover('show') }) QUnit.test('should allow DOMElement title and content (html: true)', function (assert) { @@ -146,6 +150,7 @@ $(function () { QUnit.test('should not duplicate HTML object', function (assert) { assert.expect(6) + var done = assert.async() var $div = $('<div/>').html('loves writing tests (╯°□°)╯︵ ┻━┻') var $popover = $('<a href="#">@fat</a>') @@ -157,56 +162,75 @@ $(function () { } }) - $popover.bootstrapPopover('show') - assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.equal($('.popover .popover-body').html(), $div[0].outerHTML, 'content correctly inserted') + function popoverInserted() { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + assert.equal($('.popover .popover-body').html(), $div[0].outerHTML, 'content correctly inserted') + } - $popover.bootstrapPopover('hide') - assert.strictEqual($('.popover').length, 0, 'popover was removed') + $popover + .one('shown.bs.popover', function () { + popoverInserted() - $popover.bootstrapPopover('show') - assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.equal($('.popover .popover-body').html(), $div[0].outerHTML, 'content correctly inserted') + $popover.one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') - $popover.bootstrapPopover('hide') - assert.strictEqual($('.popover').length, 0, 'popover was removed') + $popover.one('shown.bs.popover', function () { + popoverInserted() + + $popover.one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') + done() + }).bootstrapPopover('hide') + }).bootstrapPopover('show') + }).bootstrapPopover('hide') + }) + .bootstrapPopover('show') }) QUnit.test('should get title and content from attributes', function (assert) { assert.expect(4) + var done = assert.async() var $popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>') .appendTo('#qunit-fixture') .bootstrapPopover() + .one('shown.bs.popover', function () { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + assert.strictEqual($('.popover .popover-header').text(), '@mdo', 'title correctly inserted') + assert.strictEqual($('.popover .popover-body').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted') + $popover.bootstrapPopover('hide') + }) + .one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') + done() + }) .bootstrapPopover('show') - - assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.strictEqual($('.popover .popover-header').text(), '@mdo', 'title correctly inserted') - assert.strictEqual($('.popover .popover-body').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted') - - $popover.bootstrapPopover('hide') - assert.strictEqual($('.popover').length, 0, 'popover was removed') }) QUnit.test('should get title and content from attributes ignoring options passed via js', function (assert) { assert.expect(4) + var done = assert.async() var $popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>') .appendTo('#qunit-fixture') .bootstrapPopover({ title: 'ignored title option', content: 'ignored content option' }) + .one('shown.bs.popover', function () { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + assert.strictEqual($('.popover .popover-header').text(), '@mdo', 'title correctly inserted') + assert.strictEqual($('.popover .popover-body').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted') + $popover.bootstrapPopover('hide') + }) + .one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') + done() + }) .bootstrapPopover('show') - - assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.strictEqual($('.popover .popover-header').text(), '@mdo', 'title correctly inserted') - assert.strictEqual($('.popover .popover-body').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted') - - $popover.bootstrapPopover('hide') - assert.strictEqual($('.popover').length, 0, 'popover was removed') }) QUnit.test('should respect custom template', function (assert) { assert.expect(3) + var done = assert.async() var $popover = $('<a href="#">@fat</a>') .appendTo('#qunit-fixture') .bootstrapPopover({ @@ -214,14 +238,16 @@ $(function () { content: 'Test', template: '<div class="popover foobar"><div class="arrow"></div><div class="inner"><h3 class="title"/><div class="content"><p/></div></div></div>' }) - - $popover.bootstrapPopover('show') - - assert.notEqual($('.popover').length, 0, 'popover was inserted') - assert.ok($('.popover').hasClass('foobar'), 'custom class is present') - - $popover.bootstrapPopover('hide') - assert.strictEqual($('.popover').length, 0, 'popover was removed') + .one('shown.bs.popover', function () { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + assert.ok($('.popover').hasClass('foobar'), 'custom class is present') + $popover.bootstrapPopover('hide') + }) + .one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') + done() + }) + .bootstrapPopover('show') }) QUnit.test('should destroy popover', function (assert) { @@ -247,18 +273,23 @@ $(function () { QUnit.test('should render popover element using delegated selector', function (assert) { assert.expect(2) + var done = assert.async() var $div = $('<div><a href="#" title="mdo" data-content="https://twitter.com/mdo">@mdo</a></div>') .appendTo('#qunit-fixture') .bootstrapPopover({ selector: 'a', trigger: 'click' }) + .one('shown.bs.popover', function () { + assert.notEqual($('.popover').length, 0, 'popover was inserted') + $div.find('a').trigger('click') + }) + .one('hidden.bs.popover', function () { + assert.strictEqual($('.popover').length, 0, 'popover was removed') + done() + }) $div.find('a').trigger('click') - assert.notEqual($('.popover').length, 0, 'popover was inserted') - - $div.find('a').trigger('click') - assert.strictEqual($('.popover').length, 0, 'popover was removed') }) QUnit.test('should detach popover content rather than removing it so that event handlers are left intact', function (assert) { @@ -276,6 +307,7 @@ $(function () { html: true, trigger: 'manual', container: 'body', + animation: false, content: function () { return $content } @@ -289,8 +321,8 @@ $(function () { $div .one('shown.bs.popover', function () { $('.content-with-handler .btn').trigger('click') - $div.bootstrapPopover('dispose') assert.ok(handlerCalled, 'content\'s event handler still present') + $div.bootstrapPopover('dispose') done() }) .bootstrapPopover('show') diff --git a/js/tests/unit/tooltip.js b/js/tests/unit/tooltip.js index bdccd3a38..20d022c5d 100644 --- a/js/tests/unit/tooltip.js +++ b/js/tests/unit/tooltip.js @@ -77,15 +77,21 @@ $(function () { QUnit.test('should remove aria-describedby from trigger on hide', function (assert) { assert.expect(2) + var done = assert.async() var $trigger = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .bootstrapTooltip() .appendTo('#qunit-fixture') - $trigger.bootstrapTooltip('show') - assert.ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby') - - $trigger.bootstrapTooltip('hide') - assert.ok(!$trigger[0].hasAttribute('aria-describedby'), 'trigger does not have aria-describedby') + $trigger + .one('shown.bs.tooltip', function () { + assert.ok($trigger[0].hasAttribute('aria-describedby'), 'trigger has aria-describedby') + $trigger.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.ok(!$trigger[0].hasAttribute('aria-describedby'), 'trigger does not have aria-describedby') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should assign a unique id tooltip element', function (assert) { @@ -102,40 +108,51 @@ $(function () { QUnit.test('should place tooltips relative to placement option', function (assert) { assert.expect(2) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ placement: 'bottom' }) - $tooltip.bootstrapTooltip('show') - - assert - .ok($('.tooltip') - .is('.fade.bs-tooltip-bottom.show'), 'has correct classes applied') - - $tooltip.bootstrapTooltip('hide') + $tooltip + .one('shown.bs.tooltip', function () { + assert.ok($('.tooltip') + .is('.fade.bs-tooltip-bottom.show'), 'has correct classes applied') - assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should allow html entities', function (assert) { assert.expect(2) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip" title="<b>@fat</b>"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ html: true }) - $tooltip.bootstrapTooltip('show') - assert.notEqual($('.tooltip b').length, 0, 'b tag was inserted') - - $tooltip.bootstrapTooltip('hide') - assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + $tooltip + .one('shown.bs.tooltip', function () { + assert.notEqual($('.tooltip b').length, 0, 'b tag was inserted') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should allow DOMElement title (html: false)', function (assert) { assert.expect(3) + var done = assert.async() var title = document.createTextNode('<3 writing tests') var $tooltip = $('<a href="#" rel="tooltip"/>') .appendTo('#qunit-fixture') @@ -143,15 +160,19 @@ $(function () { 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') + $tooltip + .one('shown.bs.tooltip', function () { + 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') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should allow DOMElement title (html: true)', function (assert) { assert.expect(3) + var done = assert.async() var title = document.createTextNode('<3 writing tests') var $tooltip = $('<a href="#" rel="tooltip"/>') .appendTo('#qunit-fixture') @@ -160,26 +181,35 @@ $(function () { 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') + $tooltip + .one('shown.bs.tooltip', function () { + 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') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should respect custom classes', function (assert) { assert.expect(2) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ template: '<div class="tooltip some-class"><div class="tooltip-arrow"/><div class="tooltip-inner"/></div>' }) - $tooltip.bootstrapTooltip('show') - assert.ok($('.tooltip').hasClass('some-class'), 'custom class is present') - - $tooltip.bootstrapTooltip('hide') - assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + $tooltip + .one('shown.bs.tooltip', function () { + assert.ok($('.tooltip').hasClass('some-class'), 'custom class is present') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($tooltip.data('bs.tooltip').tip.parentNode, null, 'tooltip removed') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should fire show event', function (assert) { @@ -363,18 +393,24 @@ $(function () { QUnit.test('should place tooltips inside body when container is body', function (assert) { assert.expect(3) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip" title="Another tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ container: 'body' }) - .bootstrapTooltip('show') - - assert.notEqual($('body > .tooltip').length, 0, 'tooltip is direct descendant of body') - assert.strictEqual($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent') - $tooltip.bootstrapTooltip('hide') - assert.strictEqual($('body > .tooltip').length, 0, 'tooltip was removed from dom') + $tooltip + .one('shown.bs.tooltip', function () { + assert.notEqual($('body > .tooltip').length, 0, 'tooltip is direct descendant of body') + assert.strictEqual($('#qunit-fixture > .tooltip').length, 0, 'tooltip is not in parent') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($('body > .tooltip').length, 0, 'tooltip was removed from dom') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should add position class before positioning so that position-specific styles are taken into account', function (assert) { @@ -405,45 +441,63 @@ $(function () { QUnit.test('should use title attribute for tooltip text', function (assert) { assert.expect(2) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip() - $tooltip.bootstrapTooltip('show') - assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title from title attribute is set') - - $tooltip.bootstrapTooltip('hide') - assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') + $tooltip + .one('shown.bs.tooltip', function () { + assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title from title attribute is set') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should prefer title attribute over title option', function (assert) { assert.expect(2) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip" title="Simple tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ title: 'This is a tooltip with some content' }) - $tooltip.bootstrapTooltip('show') - assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title is set from title attribute while preferred over title option') - - $tooltip.bootstrapTooltip('hide') - assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') + $tooltip + .one('shown.bs.tooltip', function () { + assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'Simple tooltip', 'title is set from title attribute while preferred over title option') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should use title option', function (assert) { assert.expect(2) + var done = assert.async() var $tooltip = $('<a href="#" rel="tooltip"/>') .appendTo('#qunit-fixture') .bootstrapTooltip({ title: 'This is a tooltip with some content' }) - $tooltip.bootstrapTooltip('show') - assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'This is a tooltip with some content', 'title from title option is set') - - $tooltip.bootstrapTooltip('hide') - assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') + $tooltip + .one('shown.bs.tooltip', function () { + assert.strictEqual($('.tooltip').children('.tooltip-inner').text(), 'This is a tooltip with some content', 'title from title option is set') + $tooltip.bootstrapTooltip('hide') + }) + .one('hidden.bs.tooltip', function () { + assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') + done() + }) + .bootstrapTooltip('show') }) QUnit.test('should not error when trying to show an top-placed tooltip that has been removed from the dom', function (assert) { @@ -869,7 +923,6 @@ $(function () { var done = assert.async() var $el = $('<a href="#" rel="tooltip" title="7"/>') .appendTo('#qunit-fixture') - .bootstrapTooltip('show') .on('shown.bs.tooltip', function () { var tooltip = $el.data('bs.tooltip') var $tooltip = $(tooltip.getTipElement()) diff --git a/js/tests/unit/util.js b/js/tests/unit/util.js index c4f9459f9..9a25a5286 100644 --- a/js/tests/unit/util.js +++ b/js/tests/unit/util.js @@ -90,4 +90,9 @@ $(function () { id2 = Util.getUID('test') assert.ok(id !== id2, id + ' !== ' + id2) }) + + QUnit.test('Util.supportsTransitionEnd should return true', function (assert) { + assert.expect(1) + assert.ok(Util.supportsTransitionEnd()) + }) }) |
