Skip to content

Commit 8ede419

Browse files
authored
Update table-selectable.spec.js
1 parent 806a2ec commit 8ede419

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

src/components/table/table-selectable.spec.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,4 +479,89 @@ describe('table row select', () => {
479479
expect($rows.is('[tabindex="0"]')).toBe(true)
480480
expect($rows.is('[aria-selected="false"]')).toBe(true)
481481
})
482+
483+
it('change in select mode clears selection', async () => {
484+
const wrapper = mount(Table, {
485+
propsData: {
486+
fields: testFields,
487+
items: testItems,
488+
selectable: true,
489+
selectMode: 'single'
490+
}
491+
})
492+
let $rows
493+
expect(wrapper).toBeDefined()
494+
await wrapper.vm.$nextTick()
495+
expect(wrapper.emitted('row-selected')).not.toBeDefined()
496+
497+
// Click first row
498+
wrapper
499+
.findAll('tbody > tr')
500+
.at(0)
501+
.trigger('click')
502+
await wrapper.vm.$nextTick()
503+
expect(wrapper.emitted('row-selected')).toBeDefined()
504+
expect(wrapper.emitted('row-selected').length).toBe(1)
505+
expect(wrapper.emitted('row-selected')[0][0]).toEqual([testItems[0]])
506+
$rows = wrapper.findAll('tbody > tr')
507+
expect($rows.is('[tabindex="0"]')).toBe(true)
508+
expect($rows.at(0).is('[aria-selected="true"]')).toBe(true)
509+
expect($rows.at(1).is('[aria-selected="false"]')).toBe(true)
510+
expect($rows.at(2).is('[aria-selected="false"]')).toBe(true)
511+
expect($rows.at(3).is('[aria-selected="false"]')).toBe(true)
512+
513+
// Change mode
514+
wrapper.setProps({
515+
selectMode: 'range'
516+
})
517+
await wrapper.vm.$nextTick()
518+
expect(wrapper.emitted('row-selected')).toBeDefined()
519+
expect(wrapper.emitted('row-selected').length).toBe(1)
520+
expect(wrapper.emitted('row-selected')[0][0]).toEqual([])
521+
$rows = wrapper.findAll('tbody > tr')
522+
expect($rows.is('[tabindex="0"]')).toBe(true)
523+
expect($rows.is('[aria-selected="false"]')).toBe(true)
524+
})
525+
526+
it('disabling selctable clears selection', async () => {
527+
const wrapper = mount(Table, {
528+
propsData: {
529+
fields: testFields,
530+
items: testItems,
531+
selectable: true,
532+
selectMode: 'single'
533+
}
534+
})
535+
let $rows
536+
expect(wrapper).toBeDefined()
537+
await wrapper.vm.$nextTick()
538+
expect(wrapper.emitted('row-selected')).not.toBeDefined()
539+
540+
// Click first row
541+
wrapper
542+
.findAll('tbody > tr')
543+
.at(0)
544+
.trigger('click')
545+
await wrapper.vm.$nextTick()
546+
expect(wrapper.emitted('row-selected')).toBeDefined()
547+
expect(wrapper.emitted('row-selected').length).toBe(1)
548+
expect(wrapper.emitted('row-selected')[0][0]).toEqual([testItems[0]])
549+
$rows = wrapper.findAll('tbody > tr')
550+
expect($rows.is('[tabindex="0"]')).toBe(true)
551+
expect($rows.at(0).is('[aria-selected="true"]')).toBe(true)
552+
expect($rows.at(1).is('[aria-selected="false"]')).toBe(true)
553+
expect($rows.at(2).is('[aria-selected="false"]')).toBe(true)
554+
expect($rows.at(3).is('[aria-selected="false"]')).toBe(true)
555+
556+
// Disabled selectable
557+
wrapper.setProps({
558+
selctable: false
559+
})
560+
await wrapper.vm.$nextTick()
561+
// Does not emit a row-selected event
562+
expect(wrapper.emitted('row-selected').length).toBe(1)
563+
$rows = wrapper.findAll('tbody > tr')
564+
expect($rows.is('[tabindex]')).toBe(false)
565+
expect($rows.is('[aria-selected')).toBe(false)
566+
})
482567
})

0 commit comments

Comments
 (0)