UNPKG

bootstrap-vue-3

Version:

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

322 lines (280 loc) 11.5 kB
import {enableAutoUnmount, mount} from '@vue/test-utils' import {afterEach, describe, expect, it} from 'vitest' import BCarousel from './BCarousel.vue' // import BCarouselSlide from './BCarouselSlide.vue' // import {h} from 'vue' describe('carousel', () => { enableAutoUnmount(afterEach) it('has static class carousel', () => { const wrapper = mount(BCarousel) expect(wrapper.classes()).toContain('carousel') }) it('has static class slide', () => { const wrapper = mount(BCarousel) expect(wrapper.classes()).toContain('slide') }) it('has static attr data-bs-ride to be carousel', () => { const wrapper = mount(BCarousel) expect(wrapper.attributes('data-bs-ride')).toBe('carousel') }) it('tag is div', () => { const wrapper = mount(BCarousel) expect(wrapper.element.tagName).toBe('DIV') }) it('has attr id', () => { const wrapper = mount(BCarousel) expect(wrapper.attributes('id')).toBeDefined() }) it('has attr id when prop id', () => { const wrapper = mount(BCarousel) expect(wrapper.attributes('id')).toBeDefined() expect(wrapper.attributes('id')).toContain('carousel') }) it('has div with class carousel-inner', () => { const wrapper = mount(BCarousel) const $div = wrapper.find('.carousel-inner') expect($div.exists()).toBe(true) }) it('element that has class carousel-inner is div', () => { const wrapper = mount(BCarousel) const $div = wrapper.get('.carousel-inner') expect($div.element.tagName).toBe('DIV') }) // TODO causes some weird warning it.skip('element that has class carousel-inner renders default slot', () => { const wrapper = mount(BCarousel, { slots: {default: 'foobar'}, }) const $div = wrapper.get('.carousel-inner') expect($div.text()).toBe('foobar') }) it('does not have element with class carousel-indicators by default', () => { const wrapper = mount(BCarousel) const $div = wrapper.find('.carousel-indicators') expect($div.exists()).toBe(false) }) it('has element with class carousel-indicators if prop indicator', () => { const wrapper = mount(BCarousel, { props: {indicators: true}, }) const $div = wrapper.find('.carousel-indicators') expect($div.exists()).toBe(true) }) it('element with class carousel-indicators tag is div', () => { const wrapper = mount(BCarousel, { props: {indicators: true}, }) const $div = wrapper.get('.carousel-indicators') expect($div.element.tagName).toBe('DIV') }) it('div with carousel-indicators class has no button child by default', () => { const wrapper = mount(BCarousel, { props: {indicators: true}, }) const $div = wrapper.get('.carousel-indicators') const $button = $div.find('button') expect($button.exists()).toBe(false) }) // TODO at this point, the component breaks down it.skip('div with carousel-indicators class has no button child by default', () => { const wrapper = mount(BCarousel, { props: {indicators: true}, slots: {default: 'foobar'}, }) const $div = wrapper.get('.carousel-indicators') const $button = $div.find('button') expect($button.exists()).toBe(true) }) it('does not have element with class carousel-control-prev by default', () => { const wrapper = mount(BCarousel) const $button = wrapper.find('.carousel-control-prev') expect($button.exists()).toBe(false) }) it('has element with class carousel-control-prev when prop controls', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.find('.carousel-control-prev') expect($button.exists()).toBe(true) }) it('element with class carousel-control-prev is tag button', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') expect($button.element.tagName).toBe('BUTTON') }) it('button with class carousel-control-prev has static attr as button', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') expect($button.attributes('type')).toBe('button') }) it.skip('button with class carousel-control-prev has attr as #computedId', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') expect($button.attributes('data-bs-target')).toBeDefined() }) it('button with class carousel-control-prev has static attr data-bs-slide to be prev', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') expect($button.attributes('data-bs-slide')).toBe('prev') }) it('button with class carousel-control-prev has child element with class carousel-control-prev-icon', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.find('.carousel-control-prev-icon') expect($span.exists()).toBe(true) }) it('element with class carousel-control-prev-icon is tag span', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.get('.carousel-control-prev-icon') expect($span.element.tagName).toBe('SPAN') }) it('element with class carousel-control-prev-icon has static attr aria-hidden to be true', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.get('.carousel-control-prev-icon') expect($span.attributes('aria-hidden')).toBe('true') }) it('button with class carousel-control-prev has child element with class visually-hidden', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.find('.visually-hidden') expect($span.exists()).toBe(true) }) it('button whos class is carousel-control-prev child element with class visually-hidden has is tag span', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.get('.visually-hidden') expect($span.element.tagName).toBe('SPAN') }) it('button whos class is carousel-control-prev child element with class visually-hidden has text is prop controlsPrevText', () => { const wrapper = mount(BCarousel, { props: {controls: true, controlsPrevText: 'foobar'}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.get('.visually-hidden') expect($span.text()).toBe('foobar') }) it('button whos class is carousel-control-prev child element with class visually-hidden has text previous by default', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-prev') const $span = $button.get('.visually-hidden') expect($span.text()).toBe('Previous') }) it('does not have element with class carousel-control-next by default', () => { const wrapper = mount(BCarousel) const $button = wrapper.find('.carousel-control-next') expect($button.exists()).toBe(false) }) it('has element with class carousel-control-next when prop controls', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.find('.carousel-control-next') expect($button.exists()).toBe(true) }) it('element with class carousel-control-next is tag button', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') expect($button.element.tagName).toBe('BUTTON') }) it('button with class carousel-control-next has static attr as button', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') expect($button.attributes('type')).toBe('button') }) it.skip('button with class carousel-control-next has attr as #computedId', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') expect($button.attributes('data-bs-target')).toBeDefined() }) it('button with class carousel-control-next has static attr data-bs-slide to be prev', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') expect($button.attributes('data-bs-slide')).toBe('next') }) it('button with class carousel-control-next has child element with class carousel-control-next-icon', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.find('.carousel-control-next-icon') expect($span.exists()).toBe(true) }) it('button whos class is carousel-control-next child element with class carousel-control-next-icon is tag span', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.get('.carousel-control-next-icon') expect($span.element.tagName).toBe('SPAN') }) it('element with class carousel-control-next-icon has static attr aria-hidden to be true', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.get('.carousel-control-next-icon') expect($span.attributes('aria-hidden')).toBe('true') }) it('button with class carousel-control-next has child element with class visually-hidden', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.find('.visually-hidden') expect($span.exists()).toBe(true) }) it('button whos class is carousel-control-next has child element with class visually-hidden is tag span', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.get('.visually-hidden') expect($span.element.tagName).toBe('SPAN') }) it('button whos class is carousel-control-next child element with class visually-hidden has text is prop controlsNextText', () => { const wrapper = mount(BCarousel, { props: {controls: true, controlsNextText: 'foobar'}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.get('.visually-hidden') expect($span.text()).toBe('foobar') }) it('buttons whos class is carousel-control-next child element with class visually-hidden has text previous by default', () => { const wrapper = mount(BCarousel, { props: {controls: true}, }) const $button = wrapper.get('.carousel-control-next') const $span = $button.get('.visually-hidden') expect($span.text()).toBe('Next') }) })