UNPKG

buefy

Version:

Lightweight UI components for Vue.js (v3) based on Bulma

86 lines (77 loc) 3.21 kB
import { defineComponent } from 'vue' import { beforeEach, describe, expect, it } from 'vitest' import { mount } from '@vue/test-utils' import type { VueWrapper } from '@vue/test-utils' import BTable from '@components/table/Table.vue' import BTableColumn from '@components/table/TableColumn.vue' import BButton from '@components/button/Button.vue' const WrapperComp = defineComponent({ components: { BTable, BTableColumn }, template: ` <BTable> <BTableColumn/> <BTableColumn ref="testItem" /> <BTableColumn /> </BTable>` }) let wrapper: VueWrapper<InstanceType<typeof WrapperComp>> describe('BTableColumn', () => { beforeEach(() => { wrapper = mount(WrapperComp).findComponent({ ref: 'testItem' }) }) it('is called', () => { expect(wrapper.vm).toBeTruthy() expect(wrapper.vm.$options.name).toBe('BTableColumn') }) it('expose isActiveDetailRow method', async () => { const DetailedTable = { template: ` <BTable :data="tableData" detail-key="id" detailed> <BTableColumn :td-attrs="tdAttrs" v-slot="props"> <div> {{ props.row.name }} - {{ props.isActiveDetailRow(props.row) ? 'Opened' : 'Closed' }} </div> <BButton @click="props.toggleDetails(props.row)">Toggle details</BButton> </BTableColumn> </BTable>`, components: { BTable, BTableColumn, BButton }, methods: { tdAttrs(td: { id: string }) { return { id: `td-${td.id}` } } } } const tableData = [ { id: 1, name: 'Jesse' }, { id: 2, name: 'John' }, { id: 3, name: 'Tina' }, { id: 4, name: 'Anne' }, { id: 5, name: 'Clarence' } ] const wrapper = mount(DetailedTable, { data: () => ({ detailKey: 'id', detailed: true, tableData }) }) // Wait for component to properly mount await wrapper.vm.$nextTick() // Toggle first row details expect(wrapper.find('#td-1').text()).toContain('Closed') expect(wrapper.find('#td-1').text()).not.toContain('Opened') wrapper.find('#td-1 button').trigger('click') await wrapper.vm.$nextTick() expect(wrapper.find('#td-1').text()).not.toContain('Closed') expect(wrapper.find('#td-1').text()).toContain('Opened') wrapper.find('#td-1 button').trigger('click') await wrapper.vm.$nextTick() expect(wrapper.find('#td-1').text()).toContain('Closed') expect(wrapper.find('#td-1').text()).not.toContain('Opened') // Toggle second row details expect(wrapper.find('#td-2').text()).toContain('Closed') expect(wrapper.find('#td-2').text()).not.toContain('Opened') wrapper.find('#td-2 button').trigger('click') await wrapper.vm.$nextTick() expect(wrapper.find('#td-2').text()).not.toContain('Closed') expect(wrapper.find('#td-2').text()).toContain('Opened') }) })