aboutsummaryrefslogtreecommitdiff
path: root/js/tests
diff options
context:
space:
mode:
authoralpadev <[email protected]>2021-04-25 05:45:08 +0200
committerGitHub <[email protected]>2021-04-25 06:45:08 +0300
commite2294ff0902e4efba94a1635729670a8aa510ded (patch)
tree5ba3b22b98b04abcda2ab606be94b1c5b5387af1 /js/tests
parentc25897b637ec0334f9fa2a462729740692650e8a (diff)
downloadbootstrap-e2294ff0902e4efba94a1635729670a8aa510ded.tar.xz
bootstrap-e2294ff0902e4efba94a1635729670a8aa510ded.zip
Add missing test for clicking select option in a dropdown (#33734)
Diffstat (limited to 'js/tests')
-rw-r--r--js/tests/unit/dropdown.spec.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/js/tests/unit/dropdown.spec.js b/js/tests/unit/dropdown.spec.js
index cfb933792..b0f225140 100644
--- a/js/tests/unit/dropdown.spec.js
+++ b/js/tests/unit/dropdown.spec.js
@@ -1102,6 +1102,47 @@ describe('Dropdown', () => {
dropdown.show()
})
+ it('should not collapse the dropdown when clicking a select option nested in the dropdown', done => {
+ fixtureEl.innerHTML = [
+ '<div class="dropdown">',
+ ' <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
+ ' <div class="dropdown-menu">',
+ ' <select>',
+ ' <option selected>Open this select menu</option>',
+ ' <option value="1">One</option>',
+ ' </select>',
+ ' </div>',
+ '</div>'
+ ].join('')
+
+ const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
+ const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
+ const dropdown = new Dropdown(btnDropdown)
+
+ const hideSpy = spyOn(dropdown, '_completeHide')
+
+ btnDropdown.addEventListener('shown.bs.dropdown', () => {
+ const clickEvent = new MouseEvent('click', {
+ bubbles: true
+ })
+
+ dropdownMenu.querySelector('option').dispatchEvent(clickEvent)
+ })
+
+ dropdownMenu.addEventListener('click', event => {
+ expect(event.target.tagName).toMatch(/select|option/i)
+
+ Dropdown.clearMenus(event)
+
+ setTimeout(() => {
+ expect(hideSpy).not.toHaveBeenCalled()
+ done()
+ }, 10)
+ })
+
+ dropdown.show()
+ })
+
it('should manage bs attribute `data-bs-popper`="none" when dropdown is in navbar', done => {
fixtureEl.innerHTML = [
'<nav class="navbar navbar-expand-md navbar-light bg-light">',