mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* test: button add form disabled case * test: cascader add test case * test: checkbox add test case * test: colorPicker add test case * test: inputNumber add test case * test: input add test case * test: radio add test case * feat: rate add test case * test: segemented add test case * test: select add test case * test: selectV2 add test case * test: slider add test case * test: switch add test case * test: timeselect add test case * Update packages/components/button/__tests__/button.test.tsx Co-authored-by: btea <2356281422@qq.com> * test: modify desc * test(components): clean annotation * Update packages/components/time-select/__tests__/time-select.test.tsx Co-authored-by: rzzf <cszhjh@gmail.com> * Update packages/components/time-select/__tests__/time-select.test.tsx Co-authored-by: rzzf <cszhjh@gmail.com> --------- Co-authored-by: btea <2356281422@qq.com> Co-authored-by: rzzf <cszhjh@gmail.com>
257 lines
6.9 KiB
TypeScript
257 lines
6.9 KiB
TypeScript
import { nextTick, ref } from 'vue'
|
|
import { mount } from '@vue/test-utils'
|
|
import { describe, expect, test, vi } from 'vitest'
|
|
import Segmented from '../src/segmented.vue'
|
|
import { ElForm } from '@element-plus/components/form'
|
|
|
|
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()
|
|
// 8 = options.length + .el-segmented__item-selected
|
|
expect(wrapper.findAll('.is-disabled').length).toBe(8)
|
|
})
|
|
|
|
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()
|
|
// 4 = the disabled options + .el-segmented__item-selected
|
|
expect(wrapper.findAll('.is-disabled').length).toBe(4)
|
|
})
|
|
|
|
test('render options props', async () => {
|
|
const value = ref('Mon')
|
|
const props = {
|
|
label: 'myLabel',
|
|
value: 'myValue',
|
|
disabled: 'myDisabled',
|
|
}
|
|
const options = [
|
|
{
|
|
myLabel: 'Mon',
|
|
myValue: 'Mon',
|
|
myDisabled: true,
|
|
},
|
|
{
|
|
myLabel: 'Tue',
|
|
myValue: 'Tue',
|
|
},
|
|
{
|
|
myLabel: 'Wed',
|
|
myValue: 'Wed',
|
|
myDisabled: true,
|
|
},
|
|
{
|
|
myLabel: 'Thu',
|
|
myValue: 'Thu',
|
|
},
|
|
{
|
|
myLabel: 'Fri',
|
|
myValue: 'Fri',
|
|
myDisabled: true,
|
|
},
|
|
{
|
|
myLabel: 'Sat',
|
|
myValue: 'Sat',
|
|
},
|
|
{
|
|
myLabel: 'Sun',
|
|
myValue: 'Sun',
|
|
},
|
|
]
|
|
const wrapper = mount(() => (
|
|
<Segmented
|
|
v-model={value.value}
|
|
options={options}
|
|
props={props}
|
|
></Segmented>
|
|
))
|
|
await nextTick()
|
|
// 4 = the disabled options + .el-segmented__item-selected
|
|
expect(wrapper.findAll('.is-disabled').length).toBe(4)
|
|
})
|
|
|
|
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')
|
|
})
|
|
|
|
test('async disabled', async () => {
|
|
const value = ref('Mon')
|
|
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
|
const disabled = ref(false)
|
|
const wrapper = mount(() => (
|
|
<Segmented
|
|
v-model={value.value}
|
|
options={options}
|
|
disabled={disabled.value}
|
|
></Segmented>
|
|
))
|
|
expect(wrapper.find('.is-selected').text()).toEqual('Mon')
|
|
disabled.value = true
|
|
await nextTick()
|
|
expect(
|
|
wrapper
|
|
.find('.el-segmented__item-selected')
|
|
.classes()
|
|
.includes('is-disabled')
|
|
).toBeTruthy()
|
|
})
|
|
|
|
test('should fire the change event until it is equal to model-value', async () => {
|
|
const value = ref('Mon')
|
|
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
|
const onChange = vi.fn()
|
|
const wrapper = mount(() => (
|
|
<Segmented
|
|
modelValue={value.value}
|
|
options={options}
|
|
onChange={onChange}
|
|
/>
|
|
))
|
|
expect(wrapper.find('.is-selected').text()).toEqual('Mon')
|
|
const secondOption = wrapper.findAll('.el-segmented__item')[1]
|
|
await secondOption.trigger('click')
|
|
expect(onChange).toHaveBeenCalledTimes(1)
|
|
await secondOption.trigger('click')
|
|
expect(onChange).toHaveBeenCalledTimes(2)
|
|
value.value = 'Tue'
|
|
await nextTick()
|
|
await secondOption.trigger('click')
|
|
expect(onChange).toHaveBeenCalledTimes(2)
|
|
})
|
|
|
|
test('The disabled state of a component has higher priority than that of a form', async () => {
|
|
const value = ref('Mon')
|
|
const options = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
|
const wrapper = mount(() => (
|
|
<ElForm disabled>
|
|
<Segmented
|
|
disabled={false}
|
|
modelValue={value.value}
|
|
options={options}
|
|
/>
|
|
</ElForm>
|
|
))
|
|
await nextTick()
|
|
|
|
const segmenteds = wrapper.findAll('.el-segmented__item')
|
|
segmenteds.forEach((s) => {
|
|
expect(s.classes()).not.toContain('is-disabled')
|
|
})
|
|
})
|
|
})
|