UNPKG

bootstrap-vue

Version:

With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens

184 lines (163 loc) 4.29 kB
import { mount } from '@vue/test-utils' import { BBreadcrumb } from './breadcrumb' describe('breadcrumb', () => { it('should have expected default structure', async () => { const wrapper = mount(BBreadcrumb) expect(wrapper.element.tagName).toBe('OL') expect(wrapper.classes()).toContain('breadcrumb') expect(wrapper.classes().length).toBe(1) expect(wrapper.text()).toBe('') wrapper.destroy() }) it('should render default slot when no items provided', async () => { const wrapper = mount(BBreadcrumb, { slots: { default: 'foobar' } }) expect(wrapper.element.tagName).toBe('OL') expect(wrapper.classes()).toContain('breadcrumb') expect(wrapper.classes().length).toBe(1) expect(wrapper.text()).toBe('foobar') wrapper.destroy() }) it('should accept items', () => { const wrapper = mount(BBreadcrumb, { propsData: { items: [ { text: 'Home', href: '/' }, { text: 'Admin', to: '/admin', active: false }, { html: '<b>Manage</b>', href: '/admin/manage' }, // Test with non object 'Library' ] } }) expect(wrapper.element.tagName).toBe('OL') expect(wrapper.classes()).toContain('breadcrumb') expect(wrapper.classes().length).toBe(1) expect(wrapper.findAll('li').length).toBe(4) expect(wrapper.findAll('li.breadcrumb-item').length).toBe(4) const $lis = wrapper.findAll('li') // HREF testing expect( $lis .at(0) .find('a') .exists() ).toBe(true) expect( $lis .at(0) .find('a') .attributes('href') ).toBe('/') expect($lis.at(0).text()).toBe('Home') expect( $lis .at(1) .find('a') .exists() ).toBe(true) expect( $lis .at(1) .find('a') .attributes('href') ).toBe('/admin') expect($lis.at(1).text()).toBe('Admin') expect( $lis .at(2) .find('a') .exists() ).toBe(true) expect( $lis .at(2) .find('a') .attributes('href') ).toBe('/admin/manage') expect($lis.at(2).text()).toBe('Manage') // Last item should have active state expect($lis.at(3).classes()).toContain('active') expect( $lis .at(3) .find('span') .exists() ).toBe(true) expect($lis.at(3).text()).toBe('Library') wrapper.destroy() }) it('should apply active class to active item', async () => { const wrapper = mount(BBreadcrumb, { propsData: { items: [ { text: 'Home', href: '/' }, { text: 'Admin', to: '/admin', active: true }, { html: '<b>Manage</b>', href: '/admin/manage' }, { text: 'Library', href: '/admin/manage/library' } ] } }) expect(wrapper.element.tagName).toBe('OL') expect(wrapper.classes()).toContain('breadcrumb') expect(wrapper.classes().length).toBe(1) expect(wrapper.findAll('li').length).toBe(4) expect(wrapper.findAll('li.breadcrumb-item').length).toBe(4) const $lis = wrapper.findAll('li') // HREF testing expect( $lis .at(0) .find('a') .exists() ).toBe(true) expect( $lis .at(0) .find('a') .attributes('href') ).toBe('/') expect($lis.at(0).text()).toBe('Home') // This one should be a span/active expect( $lis .at(1) .find('span') .exists() ).toBe(true) expect($lis.at(1).classes()).toContain('active') expect($lis.at(1).text()).toBe('Admin') expect( $lis .at(2) .find('a') .exists() ).toBe(true) expect( $lis .at(2) .find('a') .attributes('href') ).toBe('/admin/manage') expect($lis.at(2).text()).toBe('Manage') // Last item should have active state expect($lis.at(3).classes()).not.toContain('active') expect( $lis .at(3) .find('a') .exists() ).toBe(true) expect( $lis .at(3) .find('a') .attributes('href') ).toBe('/admin/manage/library') expect($lis.at(3).text()).toBe('Library') wrapper.destroy() }) })