UNPKG

bootstrap-vue-3

Version:

Early (but lovely) implementation of Vue 3, Bootstrap 5 and Typescript

163 lines (140 loc) 5.38 kB
import {enableAutoUnmount, mount} from '@vue/test-utils' import {afterEach, describe, expect, it} from 'vitest' import BAccordionItem from './BAccordionItem.vue' import BCollapse from '../BCollapse.vue' describe('accordion-item', () => { enableAutoUnmount(afterEach) it('has static class accordion-item', () => { const wrapper = mount(BAccordionItem) expect(wrapper.classes()).toContain('accordion-item') }) it('root is div', () => { const wrapper = mount(BAccordionItem) expect(wrapper.element.tagName).toBe('DIV') }) it('contains b-collapse', () => { const wrapper = mount(BAccordionItem) const $bcollapse = wrapper.findComponent(BCollapse) expect($bcollapse.exists()).toBe(true) }) it('b-collapse contains static class accordion-collapse', () => { const wrapper = mount(BAccordionItem) const $bcollapse = wrapper.findComponent(BCollapse) expect($bcollapse.classes()).toContain('accordion-collapse') }) it('b-collapse has child div', () => { const wrapper = mount(BAccordionItem) const $bcollapse = wrapper.findComponent(BCollapse) const [, $div] = $bcollapse.findAll('div') expect($div.exists()).toBe(true) }) it('b-collapse child div contains static class accordion-body', () => { const wrapper = mount(BAccordionItem) const $bcollapse = wrapper.findComponent(BCollapse) const [, $div] = $bcollapse.findAll('div') expect($div.classes()).toContain('accordion-body') }) it('b-collapse child div contains default slot', () => { const wrapper = mount(BAccordionItem, { slots: {default: 'foobar'}, }) const $bcollapse = wrapper.findComponent(BCollapse) const [, $div] = $bcollapse.findAll('div') expect($div.text()).toBe('foobar') }) it('b-collapse has id attr has default id', () => { const wrapper = mount(BAccordionItem) const $bcollapse = wrapper.findComponent(BCollapse) expect($bcollapse.attributes('id')).toBeDefined() }) it('b-collapse has id attr has prop id', () => { const wrapper = mount(BAccordionItem, { props: {id: 'spam&eggs'}, }) const $bcollapse = wrapper.findComponent(BCollapse) expect($bcollapse.attributes('id')).toBe('spam&eggs') }) it('b-collapse has prop visible', async () => { const wrapper = mount(BAccordionItem, { props: {visible: true}, }) const $bcollapse = wrapper.findComponent(BCollapse) expect($bcollapse.props('visible')).toBe(true) await wrapper.setProps({visible: false}) expect($bcollapse.props('visible')).toBe(false) }) it('b-collapse has aria-labelledby with prop id', () => { const wrapper = mount(BAccordionItem, { props: {id: 'foobar'}, }) const $bcollapse = wrapper.findComponent(BCollapse) expect($bcollapse.attributes('aria-labelledby')).toBe('headingfoobar') }) it('h2 child has static class accordion-header', () => { const wrapper = mount(BAccordionItem) const $h2 = wrapper.get('h2') expect($h2.classes()).toContain('accordion-header') }) it('h2 child has id attr has default id', () => { const wrapper = mount(BAccordionItem) const $h2 = wrapper.get('h2') expect($h2.attributes('id')).toBeDefined() }) it('h2 child has id attr has prop id', () => { const wrapper = mount(BAccordionItem, { props: {id: 'foobar'}, }) const $h2 = wrapper.get('h2') expect($h2.attributes('id')).toBe('foobarheading') }) it('h2 child has button child', () => { const wrapper = mount(BAccordionItem) const $h2 = wrapper.get('h2') const $button = $h2.find('button') expect($button.exists()).toBe(true) }) it('h2 child button child has static class accordion-button', () => { const wrapper = mount(BAccordionItem) const $h2 = wrapper.get('h2') const $button = $h2.get('button') expect($button.classes()).toContain('accordion-button') }) it('h2 child button child has type attribute button', () => { const wrapper = mount(BAccordionItem) const $h2 = wrapper.get('h2') const $button = $h2.get('button') expect($button.attributes('type')).toBe('button') }) it('h2 child button child has aria-expanded false by default', () => { const wrapper = mount(BAccordionItem) const $h2 = wrapper.get('h2') const $button = $h2.get('button') expect($button.attributes('aria-expanded')).toBe('false') }) it('h2 child button child has aria-expanded true when visible true', () => { const wrapper = mount(BAccordionItem, { props: {visible: true}, }) const $h2 = wrapper.get('h2') const $button = $h2.get('button') expect($button.attributes('aria-expanded')).toBe('true') }) it('h2 child button child has aria-controls as id', () => { const wrapper = mount(BAccordionItem, { props: {id: 'foobar'}, }) const $h2 = wrapper.get('h2') const $button = $h2.get('button') expect($button.attributes('aria-controls')).toBe('foobar') }) it('h2 child button child class collapsed when visible false', async () => { const wrapper = mount(BAccordionItem, { props: {visible: false}, }) const $h2 = wrapper.get('h2') const $button = $h2.get('button') expect($button.classes()).toContain('collapsed') await wrapper.setProps({visible: true}) expect($button.classes()).not.toContain('collapsed') }) })