aboutsummaryrefslogtreecommitdiff
path: root/js/tests/unit/dropdown.js
diff options
context:
space:
mode:
authorJohann-S <[email protected]>2018-04-10 09:28:29 +0200
committerGitHub <[email protected]>2018-04-10 09:28:29 +0200
commit0871d69ec975b51472a451ed63ffa2af874606d2 (patch)
tree977e0bcbcde804c5a90da0fc28db41a6748b8b82 /js/tests/unit/dropdown.js
parent875ed0b975a587fffcc1b0c632e1cc8f612ebc5a (diff)
downloadbootstrap-0871d69ec975b51472a451ed63ffa2af874606d2.tar.xz
bootstrap-0871d69ec975b51472a451ed63ffa2af874606d2.zip
v4 improve coverage (#25945)
* Improve code coverage for our Button plugin * improve coverage for our Alert plugin * test tooltip update method * test update and dispose for dropdown * increase code coverage requirements
Diffstat (limited to 'js/tests/unit/dropdown.js')
-rw-r--r--js/tests/unit/dropdown.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js
index 0e3d37041..726655e9c 100644
--- a/js/tests/unit/dropdown.js
+++ b/js/tests/unit/dropdown.js
@@ -940,4 +940,116 @@ $(function () {
$dropdown.trigger('click')
})
+
+ QUnit.test('should call Popper.js and detect navbar on update', function (assert) {
+ assert.expect(3)
+
+ var dropdownHTML =
+ '<div class="dropdown">' +
+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ ' <div class="dropdown-menu">' +
+ ' <a class="dropdown-item" href="#">Another link</a>' +
+ ' </div>' +
+ '</div>'
+
+ var $dropdown = $(dropdownHTML)
+ .appendTo('#qunit-fixture')
+ .find('[data-toggle="dropdown"]')
+ .bootstrapDropdown()
+
+ var dropdown = $dropdown.data('bs.dropdown')
+ dropdown.toggle()
+ assert.ok(dropdown._popper)
+
+ var spyPopper = sinon.spy(dropdown._popper, 'scheduleUpdate')
+ var spyDetectNavbar = sinon.spy(dropdown, '_detectNavbar')
+ dropdown.update()
+
+ assert.ok(spyPopper.called)
+ assert.ok(spyDetectNavbar.called)
+ })
+
+ QUnit.test('should just detect navbar on update', function (assert) {
+ assert.expect(2)
+
+ var dropdownHTML =
+ '<div class="dropdown">' +
+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ ' <div class="dropdown-menu">' +
+ ' <a class="dropdown-item" href="#">Another link</a>' +
+ ' </div>' +
+ '</div>'
+
+ var $dropdown = $(dropdownHTML)
+ .appendTo('#qunit-fixture')
+ .find('[data-toggle="dropdown"]')
+ .bootstrapDropdown()
+
+ var dropdown = $dropdown.data('bs.dropdown')
+ var spyDetectNavbar = sinon.spy(dropdown, '_detectNavbar')
+
+ dropdown.update()
+
+ assert.notOk(dropdown._popper)
+ assert.ok(spyDetectNavbar.called)
+ })
+
+ QUnit.test('should dispose dropdown with Popper', function (assert) {
+ assert.expect(6)
+
+ var dropdownHTML =
+ '<div class="dropdown">' +
+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ ' <div class="dropdown-menu">' +
+ ' <a class="dropdown-item" href="#">Another link</a>' +
+ ' </div>' +
+ '</div>'
+
+ var $dropdown = $(dropdownHTML)
+ .appendTo('#qunit-fixture')
+ .find('[data-toggle="dropdown"]')
+ .bootstrapDropdown()
+
+ var dropdown = $dropdown.data('bs.dropdown')
+ dropdown.toggle()
+
+ assert.ok(dropdown._popper)
+ assert.ok(dropdown._menu !== null)
+ assert.ok(dropdown._element !== null)
+ var spyDestroy = sinon.spy(dropdown._popper, 'destroy')
+
+ dropdown.dispose()
+
+ assert.ok(spyDestroy.called)
+ assert.ok(dropdown._menu === null)
+ assert.ok(dropdown._element === null)
+ })
+
+ QUnit.test('should dispose dropdown', function (assert) {
+ assert.expect(5)
+
+ var dropdownHTML =
+ '<div class="dropdown">' +
+ ' <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ ' <div class="dropdown-menu">' +
+ ' <a class="dropdown-item" href="#">Another link</a>' +
+ ' </div>' +
+ '</div>'
+
+ var $dropdown = $(dropdownHTML)
+ .appendTo('#qunit-fixture')
+ .find('[data-toggle="dropdown"]')
+ .bootstrapDropdown()
+
+ var dropdown = $dropdown.data('bs.dropdown')
+
+ assert.notOk(dropdown._popper)
+ assert.ok(dropdown._menu !== null)
+ assert.ok(dropdown._element !== null)
+
+ dropdown.dispose()
+
+ assert.ok(dropdown._menu === null)
+ assert.ok(dropdown._element === null)
+ })
})