Files
element-plus/packages/components/segmented/__tests__/segmented.test.tsx
kooriookami 546b21ea82 feat(components): [segmented] new component (#16258)
* feat(components): [segmented] new component

* feat(components): [segmented]

* feat(components): update

* feat(components): update

* feat(theme-chalk): update

* feat(components): update

* feat: update

* feat: update

* feat(components): add focus-visible

* feat(theme-chalk): update

* feat(components): fix test

* docs: docs

* feat(components): update

* feat: add icon
2024-04-11 18:48:52 +08:00

137 lines
3.8 KiB
TypeScript

import { nextTick, ref } from 'vue'
import { mount } from '@vue/test-utils'
import { describe, expect, test } from 'vitest'
import Segmented from '../src/segmented.vue'
describe('Segmented.vue', () => {
test('render test', async () => {
const value = ref('Mon')
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
const wrapper = mount(() => (
<Segmented v-model={value.value} options={options}></Segmented>
))
await nextTick()
expect(wrapper.find('.is-selected').text()).toEqual('Mon')
})
test('render v-model', async () => {
const value = ref('Mon')
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
const wrapper = mount(() => (
<Segmented v-model={value.value} options={options}></Segmented>
))
expect(wrapper.find('.is-selected').text()).toEqual('Mon')
value.value = 'Tue'
await nextTick()
expect(wrapper.find('.is-selected').text()).toEqual('Tue')
})
test('render options', async () => {
const value = ref('Mon')
const options = ref(['a', 'b'])
const wrapper = mount(() => (
<Segmented v-model={value.value} options={options.value}></Segmented>
))
await nextTick()
expect(wrapper.findAll('.el-segmented__item').length).toEqual(2)
options.value.push('c')
await nextTick()
expect(wrapper.findAll('.el-segmented__item').length).toEqual(3)
})
test('render block', async () => {
const value = ref('Mon')
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
const wrapper = mount(() => (
<Segmented v-model={value.value} options={options} block></Segmented>
))
await nextTick()
expect(wrapper.find('.is-block').exists()).toBe(true)
})
test('render size', async () => {
const value = ref('Mon')
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
const wrapper = mount(() => (
<Segmented
v-model={value.value}
options={options}
size={'large'}
></Segmented>
))
await nextTick()
expect(wrapper.find('.el-segmented--large').exists()).toBe(true)
})
test('render disabled', async () => {
const value = ref('Mon')
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
const wrapper = mount(() => (
<Segmented v-model={value.value} options={options} disabled></Segmented>
))
await nextTick()
expect(wrapper.findAll('.is-disabled').length).toBe(7)
})
test('render option disabled', async () => {
const value = ref('Mon')
const options = [
{
label: 'Mon',
value: 'Mon',
disabled: true,
},
{
label: 'Tue',
value: 'Tue',
},
{
label: 'Wed',
value: 'Wed',
disabled: true,
},
{
label: 'Thu',
value: 'Thu',
},
{
label: 'Fri',
value: 'Fri',
disabled: true,
},
{
label: 'Sat',
value: 'Sat',
},
{
label: 'Sun',
value: 'Sun',
},
]
const wrapper = mount(() => (
<Segmented v-model={value.value} options={options}></Segmented>
))
await nextTick()
expect(wrapper.findAll('.is-disabled').length).toBe(3)
})
test('render accessible attributes', async () => {
const value = ref('Mon')
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
const wrapper = mount(() => (
<Segmented
v-model={value.value}
options={options}
id={'id'}
name={'name'}
aria-label={'label'}
></Segmented>
))
const input = wrapper.find('input')
await nextTick()
expect(wrapper.attributes('id')).toEqual('id')
expect(wrapper.attributes('aria-label')).toEqual('label')
expect(input.attributes('name')).toEqual('name')
})
})