UNPKG

bootstrap-vue-3

Version:

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

183 lines (158 loc) 5.75 kB
import {enableAutoUnmount, mount} from '@vue/test-utils' import {afterEach, describe, expect, it} from 'vitest' import BCardBody from './BCardBody.vue' import BCardTitle from './BCardTitle.vue' import BCardSubtitle from './BCardSubtitle.vue' describe('card-body', () => { enableAutoUnmount(afterEach) it('has static class card body', () => { const wrapper = mount(BCardBody) expect(wrapper.classes()).toContain('card-body') }) it('tag is div by default', () => { const wrapper = mount(BCardBody) expect(wrapper.element.tagName).toBe('DIV') }) it('tag is prop bodyTag', () => { const wrapper = mount(BCardBody, { props: {bodyTag: 'span'}, }) expect(wrapper.element.tagName).toBe('SPAN') }) it('has class text-{type} when prop bodyTextVariant', async () => { const wrapper = mount(BCardBody, { props: {bodyTextVariant: 'primary'}, }) expect(wrapper.classes()).toContain('text-primary') await wrapper.setProps({bodyTextVariant: undefined}) expect(wrapper.classes()).not.toContain('text-primary') }) it('has class bg-{type} when prop bodyBgVariant', async () => { const wrapper = mount(BCardBody, { props: {bodyBgVariant: 'primary'}, }) expect(wrapper.classes()).toContain('bg-primary') await wrapper.setProps({bodyBgVariant: undefined}) expect(wrapper.classes()).not.toContain('bg-primary') }) it('does not have BCardTitle by default', () => { const wrapper = mount(BCardBody) const $bcardtitle = wrapper.findComponent(BCardTitle) expect($bcardtitle.exists()).toBe(false) }) it('does not have BCardSubtitle by default', () => { const wrapper = mount(BCardBody) const $cardsubtitle = wrapper.findComponent(BCardSubtitle) expect($cardsubtitle.exists()).toBe(false) }) it('has BCardTitle when prop title', () => { const wrapper = mount(BCardBody, { props: {title: 'foobar'}, }) const $bcardtitle = wrapper.findComponent(BCardTitle) expect($bcardtitle.exists()).toBe(true) }) it('has BCardSubtitle when prop subtitle', () => { const wrapper = mount(BCardBody, { props: {subtitle: 'foobar'}, }) const $cardsubtitle = wrapper.findComponent(BCardSubtitle) expect($cardsubtitle.exists()).toBe(true) }) it('has BCardTitle when slot title', () => { const wrapper = mount(BCardBody, { slots: {title: 'foobar'}, }) const $bcardtitle = wrapper.findComponent(BCardTitle) expect($bcardtitle.exists()).toBe(true) }) it('has BCardSubtitle when slot subtitle', () => { const wrapper = mount(BCardBody, { slots: {subtitle: 'foobar'}, }) const $cardsubtitle = wrapper.findComponent(BCardSubtitle) expect($cardsubtitle.exists()).toBe(true) }) it('BCardTitle child has text slot title', () => { const wrapper = mount(BCardBody, { slots: {title: 'foobar'}, }) const $bcardtitle = wrapper.getComponent(BCardTitle) expect($bcardtitle.text()).toBe('foobar') }) it('BCardSubtitle child has text slot subtitle', () => { const wrapper = mount(BCardBody, { slots: {subtitle: 'foobar'}, }) const $cardsubtitle = wrapper.getComponent(BCardSubtitle) expect($cardsubtitle.text()).toBe('foobar') }) it('BCardTitle child has text prop title', () => { const wrapper = mount(BCardBody, { props: {title: 'foobar'}, }) const $bcardtitle = wrapper.getComponent(BCardTitle) expect($bcardtitle.text()).toBe('foobar') }) it('BCardSubtitle child has text prop subtitle', () => { const wrapper = mount(BCardBody, { props: {subtitle: 'foobar'}, }) const $cardsubtitle = wrapper.getComponent(BCardSubtitle) expect($cardsubtitle.text()).toBe('foobar') }) it('BCardTitle has internal prop tag as prop titleTag', () => { const wrapper = mount(BCardBody, { props: {title: 'foobar', titleTag: 'span'}, }) const $bcardtitle = wrapper.getComponent(BCardTitle) expect($bcardtitle.props('tag')).toBe('span') }) it('BCardSubtitle child has internal prop tag as prop subtitle', () => { const wrapper = mount(BCardBody, { props: {subtitle: 'foobar', subtitleTag: 'span'}, }) const $cardsubtitle = wrapper.getComponent(BCardSubtitle) expect($cardsubtitle.props('tag')).toBe('span') }) it('BCardSubtitle child has internal prop textVariant as prop subtitleTextVariant', () => { const wrapper = mount(BCardBody, { props: {subtitle: 'foobar', subtitleTextVariant: 'primary'}, }) const $cardsubtitle = wrapper.getComponent(BCardSubtitle) expect($cardsubtitle.props('textVariant')).toBe('primary') }) it('renders default slot', () => { const wrapper = mount(BCardBody, { slots: {default: 'foobar'}, }) expect(wrapper.text()).toBe('foobar') }) it('renders prop text', () => { const wrapper = mount(BCardBody, { props: {text: 'foobar'}, }) expect(wrapper.text()).toBe('foobar') }) it('renders default slot over prop text', () => { const wrapper = mount(BCardBody, { props: {text: 'props'}, slots: {default: 'slots'}, }) expect(wrapper.text()).toBe('slots') }) it('has text in order', () => { const wrapper = mount(BCardBody, { slots: {subtitle: 'subtitle', title: 'title', default: 'default'}, }) expect(wrapper.text()).toBe('titlesubtitledefault') }) it('has class card-img-overlay when prop overlay', async () => { const wrapper = mount(BCardBody, { props: {overlay: true}, }) expect(wrapper.classes()).toContain('card-img-overlay') await wrapper.setProps({overlay: false}) expect(wrapper.classes()).not.toContain('card-img-overlay') }) })