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

134 lines (118 loc) 3.03 kB
import { mount } from '@vue/test-utils' import { BTable } from './table' const testItems = [ { a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6 }, { a: 7, b: 8, c: 9 }, { a: 10, b: 11, c: 12 }, { a: 13, b: 14, c: 15 } ] describe('table > pagination', () => { it('default should not be paginated', async () => { const wrapper = mount(BTable, { propsData: { items: testItems } }) expect(wrapper.findAll('tbody > tr').length).toBe(5) wrapper.destroy() }) it('should have 3 rows when per-page=3', async () => { const wrapper = mount(BTable, { propsData: { items: testItems, perPage: 3, currentPage: 1 } }) expect(wrapper.findAll('tbody > tr').length).toBe(3) const $trs = wrapper.findAll('tbody > tr') expect( $trs .at(0) .find('td') .text() ).toBe('1') expect( $trs .at(1) .find('td') .text() ).toBe('4') expect( $trs .at(2) .find('td') .text() ).toBe('7') wrapper.destroy() }) it('changing pages should update rows', async () => { const wrapper = mount(BTable, { propsData: { items: testItems, perPage: 3, currentPage: 1 } }) expect(wrapper.findAll('tbody > tr').length).toBe(3) let $trs = wrapper.findAll('tbody > tr') expect( $trs .at(0) .find('td') .text() ).toBe('1') expect( $trs .at(1) .find('td') .text() ).toBe('4') expect( $trs .at(2) .find('td') .text() ).toBe('7') await wrapper.setProps({ currentPage: 2 }) expect(wrapper.findAll('tbody > tr').length).toBe(2) $trs = wrapper.findAll('tbody > tr') expect( $trs .at(0) .find('td') .text() ).toBe('10') expect( $trs .at(1) .find('td') .text() ).toBe('13') await wrapper.setProps({ currentPage: 3 }) expect(wrapper.findAll('tbody > tr').length).toBe(0) wrapper.destroy() }) it('setting current-page to more than pages shows empty row when show-empty=true', async () => { const wrapper = mount(BTable, { propsData: { items: testItems, perPage: 3, currentPage: 1, showEmpty: true } }) expect(wrapper.findAll('tbody > tr').length).toBe(3) await wrapper.setProps({ currentPage: 10 }) expect(wrapper.findAll('tbody > tr').length).toBe(1) const $tr = wrapper.find('tbody > tr') expect($tr.text()).toBe(wrapper.vm.emptyText) expect($tr.classes()).toContain('b-table-empty-row') expect($tr.attributes('role')).toBe('row') expect(wrapper.find('tbody > tr > td').attributes('role')).toBe('cell') expect(wrapper.find('tbody > tr > td > div').attributes('role')).toBe('alert') expect(wrapper.find('tbody > tr > td > div').attributes('aria-live')).toBe('polite') wrapper.destroy() }) })