]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
add test
authorGeoSot <geo.sotis@gmail.com>
Sun, 30 Jan 2022 00:04:04 +0000 (02:04 +0200)
committerGeoSot <geo.sotis@gmail.com>
Thu, 7 Apr 2022 11:29:49 +0000 (14:29 +0300)
js/tests/unit/collapse.spec.js

index fbfb2d94ef56bb5246c01a31e348e857bf7b9569..1757bfba39314b8d06232f2bb2a6d8807aea7872 100644 (file)
@@ -333,6 +333,51 @@ describe('Collapse', () => {
       })
     })
 
+    it('should be able to handle quick toggling between siblings', () =>
+      new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="accordion" id="accordionExample">',
+          '  <div class="accordion-item">',
+          '    <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">',
+          '      Accordion Item #1',
+          '    </button>',
+          '    <div id="collapseOne" class="accordion-collapse collapse" aria-labelledby="headingOne" data-bs-parent="#accordionExample">',
+          '    </div>',
+          '  </div>',
+          '  <div class="accordion-item">',
+          '    <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">',
+          '      Accordion Item #2',
+          '    </button>',
+          '    <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">',
+          '    </div>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const el = selector => fixtureEl.querySelector(selector)
+
+        const btn1 = el('[data-bs-target="#collapseOne"]')
+        const btn2 = el('[data-bs-target="#collapseTwo"]')
+
+        const collapseEl1 = el('#collapseOne')
+        const collapseEl2 = el('#collapseTwo')
+
+        collapseEl2.addEventListener('shown.bs.collapse', () => {
+          throw new Error('should not fire shown event')
+        })
+
+        collapseEl1.addEventListener('shown.bs.collapse', () => {
+          setTimeout(() => {
+            expect(collapseEl2).not.toHaveClass('show')
+            resolve()
+          }, 1000)
+        })
+
+        btn1.click()
+        btn2.click()
+      })
+    )
+
     it('should not change tab tabpanels descendants on accordion', () => {
       return new Promise(resolve => {
         fixtureEl.innerHTML = [