From 443e6c549c60856c4e786ee0f282afe6a4cedf4f Mon Sep 17 00:00:00 2001
From: holazz <2418184580@qq.com>
Date: Sun, 12 Jun 2022 09:11:05 +0800
Subject: [PATCH 1/2] refactor(components): [slider] use JSX in Unit test
---
.../{slider.test.ts => slider.test.tsx} | 769 ++++++------------
1 file changed, 261 insertions(+), 508 deletions(-)
rename packages/components/slider/__tests__/{slider.test.ts => slider.test.tsx} (55%)
diff --git a/packages/components/slider/__tests__/slider.test.ts b/packages/components/slider/__tests__/slider.test.tsx
similarity index 55%
rename from packages/components/slider/__tests__/slider.test.ts
rename to packages/components/slider/__tests__/slider.test.tsx
index 74f5748b8ffd0..95536260643ca 100644
--- a/packages/components/slider/__tests__/slider.test.ts
+++ b/packages/components/slider/__tests__/slider.test.tsx
@@ -32,14 +32,9 @@ describe('Slider', () => {
it('should not exceed min and max', async () => {
const wrapper = mount({
- template: `
-
- `,
- components: { Slider },
- data() {
- return {
- value: 60,
- }
+ data: () => ({ value: 60 }),
+ render() {
+ return
},
})
@@ -54,38 +49,24 @@ describe('Slider', () => {
it('sizes', () => {
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
+
expect(wrapper.find('.el-slider--small').exists()).toBe(true)
})
it('show tooltip', () => {
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.handleMouseEnter()
expect(slider.vm.tooltipVisible).toBeTruthy()
slider.vm.handleMouseLeave()
@@ -94,45 +75,33 @@ describe('Slider', () => {
it('hide tooltip', () => {
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
- const slider = wrapper.vm.$refs.slider as any
+
+ const slider = wrapper.vm.$refs.slider
const tooltip = slider.$refs.firstButton.$refs.tooltip
expect(tooltip.disabled).toBe(true)
})
it('format tooltip', async () => {
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
- },
- methods: {
- formatTooltip(val: number) {
- return `$${val}`
- },
+ data: () => ({ value: 0 }),
+ render() {
+ const formatTooltip = (val: number) => `$${val}`
+ return (
+
+ )
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
nextTick().then(() => {
expect(slider.vm.formatValue).toBe('$0')
})
@@ -143,22 +112,20 @@ describe('Slider', () => {
vi.useRealTimers()
const wrapper = mount(
{
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return (
+
+
+
+ )
},
},
{
attachTo: document.body,
}
)
+
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
vi.spyOn(
@@ -168,44 +135,20 @@ describe('Slider', () => {
).mockImplementation(() => 200)
slider.trigger('mousedown', { clientX: 0 })
- const mousemove = document.createEvent('MouseEvent')
- mousemove.initMouseEvent(
- 'mousemove',
- true,
- true,
- window,
- 1,
- 100,
- 0,
- 100,
- 0,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+ const mousemove = new MouseEvent('mousemove', {
+ screenX: 100,
+ screenY: 0,
+ clientX: 100,
+ clientY: 0,
+ })
window.dispatchEvent(mousemove)
- const mouseup = document.createEvent('MouseEvent')
- mouseup.initMouseEvent(
- 'mouseup',
- true,
- true,
- window,
- 1,
- 100,
- 0,
- 100,
- 0,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+ const mouseup = new MouseEvent('mouseup', {
+ screenX: 100,
+ screenY: 0,
+ clientX: 100,
+ clientY: 0,
+ })
window.dispatchEvent(mouseup)
await nextTick()
@@ -216,22 +159,20 @@ describe('Slider', () => {
vi.useRealTimers()
const wrapper = mount(
{
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return (
+
+
+
+ )
},
},
{
attachTo: document.body,
}
)
+
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
vi.spyOn(
wrapper.find('.el-slider__runway').element,
@@ -239,43 +180,21 @@ describe('Slider', () => {
'get'
).mockImplementation(() => 200)
slider.trigger('mousedown', { clientY: 0 })
- const mousemove = document.createEvent('MouseEvent')
- mousemove.initMouseEvent(
- 'mousemove',
- true,
- true,
- window,
- 1,
- 0,
- -100,
- 0,
- -100,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+
+ const mousemove = new MouseEvent('mousemove', {
+ screenX: 0,
+ screenY: -100,
+ clientX: 0,
+ clientY: -100,
+ })
window.dispatchEvent(mousemove)
- const mouseup = document.createEvent('MouseEvent')
- mouseup.initMouseEvent(
- 'mouseup',
- true,
- true,
- window,
- 1,
- 0,
- -100,
- 0,
- -100,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+
+ const mouseup = new MouseEvent('mouseup', {
+ screenX: 0,
+ screenY: -100,
+ clientX: 0,
+ clientY: -100,
+ })
window.dispatchEvent(mouseup)
await nextTick()
expect(wrapper.vm.value).toBe(50)
@@ -285,19 +204,13 @@ describe('Slider', () => {
describe('accessibility', () => {
it('left/right arrows', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0.1,
- }
+ data: () => ({ value: 0.1 }),
+ render() {
+ return
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.right })
@@ -314,19 +227,13 @@ describe('Slider', () => {
it('up/down arrows', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0.1,
- }
+ data: () => ({ value: 0.1 }),
+ render() {
+ return
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(new KeyboardEvent('keydown', { key: EVENT_CODE.up }))
await nextTick()
@@ -341,19 +248,13 @@ describe('Slider', () => {
it('page up/down keys', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: -1,
- }
+ data: () => ({ value: -1 }),
+ render() {
+ return
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.pageUp })
)
@@ -369,19 +270,13 @@ describe('Slider', () => {
it('home/end keys', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.home })
)
@@ -398,66 +293,42 @@ describe('Slider', () => {
vi.useRealTimers()
const wrapper = mount(
{
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return (
+
+
+
+ )
},
},
{
attachTo: document.body,
}
)
+
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
.mockImplementation(() => 200)
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
await nextTick()
slider.trigger('mousedown', { clientX: 0 })
- const mousemove = document.createEvent('MouseEvent')
- mousemove.initMouseEvent(
- 'mousemove',
- true,
- true,
- window,
- 1,
- 100,
- 0,
- 100,
- 0,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+
+ const mousemove = new MouseEvent('mousemove', {
+ screenX: 100,
+ screenY: 0,
+ clientX: 100,
+ clientY: 0,
+ })
window.dispatchEvent(mousemove)
- const mouseup = document.createEvent('MouseEvent')
- mouseup.initMouseEvent(
- 'mouseup',
- true,
- true,
- window,
- 1,
- 100,
- 0,
- 100,
- 0,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+
+ const mouseup = new MouseEvent('mouseup', {
+ screenX: 100,
+ screenY: 0,
+ clientX: 100,
+ clientY: 0,
+ })
await nextTick()
window.dispatchEvent(mouseup)
await nextTick()
@@ -468,22 +339,16 @@ describe('Slider', () => {
it('click', async () => {
vi.useRealTimers()
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
+
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
.mockImplementation(() => 200)
- const slider: any = wrapper.findComponent({ name: 'ElSlider' })
+ const slider = wrapper.findComponent({ name: 'ElSlider' })
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
expect(wrapper.vm.value > 0).toBeTruthy()
@@ -493,26 +358,18 @@ describe('Slider', () => {
it('change event', async () => {
vi.useRealTimers()
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- data: 0,
- value: 0,
- }
- },
- methods: {
- onChange(val: number) {
- this.data = val
- },
+ data: () => ({ data: 0, value: 0 }),
+ render() {
+ const onChange = (val: number | number[]) => (this.data = val)
+ return (
+
+
+
+ )
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSlider' })
+
+ const slider = wrapper.findComponent({ name: 'ElSlider' })
const mockRectLeft = vi
.spyOn(
wrapper.find('.el-slider__runway').element,
@@ -537,26 +394,18 @@ describe('Slider', () => {
it('input event', async () => {
vi.useRealTimers()
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- data: 0,
- value: 0,
- }
- },
- methods: {
- onInput(val: number) {
- this.data = val
- },
+ data: () => ({ data: 0, value: 0 }),
+ render() {
+ const onInput = (val: number | number[]) => (this.data = val)
+ return (
+
+
+
+ )
},
})
- const slider: any = wrapper.findComponent({ name: 'ElSlider' })
+
+ const slider = wrapper.findComponent({ name: 'ElSlider' })
const mockRectLeft = vi
.spyOn(
wrapper.find('.el-slider__runway').element,
@@ -582,60 +431,32 @@ describe('Slider', () => {
it('disabled', async () => {
vi.useRealTimers()
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
+
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
.mockImplementation(() => 200)
- const slider: any = wrapper.findComponent({ name: 'ElSliderButton' })
+ const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onButtonDown({ clientX: 0 })
- const mousemove = document.createEvent('MouseEvent')
- mousemove.initMouseEvent(
- 'mousemove',
- true,
- true,
- window,
- 1,
- 50,
- 0,
- 50,
- 0,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+
+ const mousemove = new MouseEvent('mousemove', {
+ screenX: 50,
+ screenY: 0,
+ clientX: 50,
+ clientY: 0,
+ })
window.dispatchEvent(mousemove)
- const mouseup = document.createEvent('MouseEvent')
- mouseup.initMouseEvent(
- 'mouseup',
- true,
- true,
- window,
- 1,
- 50,
- 0,
- 50,
- 0,
- false,
- false,
- true,
- false,
- 0,
- null
- )
+
+ const mouseup = new MouseEvent('mouseup', {
+ screenX: 50,
+ screenY: 0,
+ clientX: 50,
+ clientY: 0,
+ })
window.dispatchEvent(mouseup)
await nextTick()
expect(wrapper.vm.value).toBe(0)
@@ -644,18 +465,12 @@ describe('Slider', () => {
it('show input', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
})
+
const increaseButton = wrapper.find('.el-input-number__increase')
await increaseButton.trigger('mousedown')
vi.advanceTimersByTime(200)
@@ -663,12 +478,8 @@ describe('Slider', () => {
})
it('show stops', () => {
- const wrapper = mount(Slider, {
- props: {
- showStops: true,
- step: 10,
- },
- })
+ const wrapper = mount(() => )
+
const stops = wrapper.findAll('.el-slider__stop')
expect(stops.length).toBe(9)
})
@@ -677,22 +488,16 @@ describe('Slider', () => {
vi.useRealTimers()
const wrapper = mount(
{
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: 0,
- }
+ data: () => ({ value: 0 }),
+ render() {
+ return
},
},
{
attachTo: document.body,
}
)
+
const mockRectBottom = vi
.spyOn(
wrapper.find('.el-slider__runway').element,
@@ -706,7 +511,7 @@ describe('Slider', () => {
const mockClientHeight = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientHeight', 'get')
.mockImplementation(() => 200)
- const slider: any = wrapper.getComponent({ name: 'ElSlider' })
+ const slider = wrapper.getComponent({ name: 'ElSlider' })
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
expect(wrapper.vm.value > 0).toBeTruthy()
@@ -715,19 +520,23 @@ describe('Slider', () => {
})
it('rerender with min and show-input', async () => {
- const wrapper = mount({
- template: '',
- components: { Slider },
- data() {
- return {
- show: false,
- value: 30,
- }
- },
- mounted() {
- this.show = true
+ const wrapper = mount(
+ {
+ data: () => ({ show: false, value: 30 }),
+ mounted() {
+ this.show = true
+ },
+ render() {
+ return (
+ this.show &&
+ )
+ },
},
- })
+ {
+ attachTo: document.body,
+ }
+ )
+
await nextTick()
expect(wrapper.vm.value).toEqual(30)
})
@@ -735,37 +544,24 @@ describe('Slider', () => {
describe('range', () => {
it('basic ranged slider', () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: [10, 20],
- }
+ data: () => ({ value: [10, 20] }),
+ render() {
+ return
},
})
+
const sliders = wrapper.findAllComponents({ name: 'ElSliderButton' })
expect(sliders.length).toBe(2)
})
it('should not exceed min and max', async () => {
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: [50, 60],
- }
+ data: () => ({ value: [50, 60] }),
+ render() {
+ return
},
})
+
await nextTick()
wrapper.vm.value = [40, 60]
@@ -781,22 +577,20 @@ describe('Slider', () => {
vi.useRealTimers()
const wrapper = mount(
{
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: [0, 100],
- }
+ data: () => ({ value: [0, 100] }),
+ render() {
+ return (
+
+
+
+ )
},
},
{
attachTo: document.body,
}
)
+
const mockRectLeft = vi
.spyOn(
wrapper.find('.el-slider__runway').element,
@@ -810,7 +604,7 @@ describe('Slider', () => {
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
.mockImplementation(() => 200)
- const slider: any = wrapper.getComponent({ name: 'ElSlider' })
+ const slider = wrapper.getComponent({ name: 'ElSlider' })
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
// Because mock the clientWidth, so the targetValue is 50.
@@ -823,21 +617,14 @@ describe('Slider', () => {
it('responsive to dynamic min and max', async () => {
const wrapper = mount({
- template: `
-
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- min: 0,
- max: 100,
- value: [50, 80],
- }
+ data: () => ({ min: 0, max: 100, value: [50, 80] }),
+ render() {
+ return (
+
+ )
},
})
+
await nextTick()
wrapper.vm.min = 60
@@ -852,23 +639,12 @@ describe('Slider', () => {
it('show stops', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: [30, 60],
- }
+ data: () => ({ value: [30, 60] }),
+ render() {
+ return
},
})
+
await nextTick()
const stops = wrapper.findAll('.el-slider__stop')
expect(stops.length).toBe(5)
@@ -876,34 +652,31 @@ describe('Slider', () => {
it('marks', async () => {
const wrapper = mount({
- template: `
-
-
-
- `,
- components: { Slider },
- data() {
- return {
- value: [30, 60],
- marks: {
- 0: '0°C',
- 8: '8°C',
- 37: '37°C',
- 50: {
- style: {
- color: '#f50',
- },
- label: h('strong', '50°C'),
+ data: () => ({
+ value: [30, 60],
+ marks: {
+ 0: '0°C',
+ 8: '8°C',
+ 37: '37°C',
+ 50: {
+ style: {
+ color: '#f50',
},
+ label: h('strong', '50°C'),
},
- }
+ },
+ }),
+ render() {
+ return (
+
+ )
},
})
@@ -917,15 +690,11 @@ describe('Slider', () => {
describe('form item accessibility integration', () => {
it('automatic id attachment', async () => {
- const wrapper = mount({
- template: `
-
- `,
- components: {
- 'el-slider': Slider,
- 'el-form-item': ElFormItem,
- },
- })
+ const wrapper = mount(() => (
+
+
+
+ ))
await nextTick()
const formItem = wrapper.find('[data-test-ref="item"]')
@@ -936,15 +705,11 @@ describe('Slider', () => {
})
it('range with automatic id attachment', async () => {
- const wrapper = mount({
- template: `
-
- `,
- components: {
- 'el-slider': Slider,
- 'el-form-item': ElFormItem,
- },
- })
+ const wrapper = mount(() => (
+
+
+
+ ))
await nextTick()
const formItem = wrapper.find('[data-test-ref="item"]')
@@ -955,15 +720,11 @@ describe('Slider', () => {
})
it('specified id attachment', async () => {
- const wrapper = mount({
- template: `
-
- `,
- components: {
- 'el-slider': Slider,
- 'el-form-item': ElFormItem,
- },
- })
+ const wrapper = mount(() => (
+
+
+
+ ))
await nextTick()
const formItem = wrapper.find('[data-test-ref="item"]')
@@ -975,15 +736,11 @@ describe('Slider', () => {
})
it('range with specified id attachment', async () => {
- const wrapper = mount({
- template: `
-
- `,
- components: {
- 'el-slider': Slider,
- 'el-form-item': ElFormItem,
- },
- })
+ const wrapper = mount(() => (
+
+
+
+ ))
await nextTick()
const formItem = wrapper.find('[data-test-ref="item"]')
@@ -995,16 +752,12 @@ describe('Slider', () => {
})
it('form item role is group when multiple inputs', async () => {
- const wrapper = mount({
- template: `
-
-
- `,
- components: {
- 'el-slider': Slider,
- 'el-form-item': ElFormItem,
- },
- })
+ const wrapper = mount(() => (
+
+
+
+
+ ))
await nextTick()
const formItem = wrapper.find('[data-test-ref="item"]')
From 847a55f807bfbf0d643ab14e3222e27164bd0f3c Mon Sep 17 00:00:00 2001
From: holazz <2418184580@qq.com>
Date: Mon, 13 Jun 2022 16:34:18 +0800
Subject: [PATCH 2/2] chore: improve code
---
.../slider/__tests__/slider.test.tsx | 397 +++++++-----------
1 file changed, 154 insertions(+), 243 deletions(-)
diff --git a/packages/components/slider/__tests__/slider.test.tsx b/packages/components/slider/__tests__/slider.test.tsx
index 95536260643ca..a8e1dbeb70d22 100644
--- a/packages/components/slider/__tests__/slider.test.tsx
+++ b/packages/components/slider/__tests__/slider.test.tsx
@@ -1,4 +1,4 @@
-import { h, nextTick } from 'vue'
+import { h, nextTick, onMounted, ref } from 'vue'
import { mount } from '@vue/test-utils'
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { EVENT_CODE } from '@element-plus/constants'
@@ -31,40 +31,28 @@ describe('Slider', () => {
})
it('should not exceed min and max', async () => {
- const wrapper = mount({
- data: () => ({ value: 60 }),
- render() {
- return
- },
- })
+ const value = ref(60)
+ mount(() => )
await nextTick()
- wrapper.vm.value = 40
+ value.value = 40
await nextTick()
- expect(wrapper.vm.value).toBe(50)
- wrapper.vm.value = 120
+ expect(value.value).toBe(50)
+ value.value = 120
await nextTick()
- expect(wrapper.vm.value).toBe(100)
+ expect(value.value).toBe(100)
})
it('sizes', () => {
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => )
expect(wrapper.find('.el-slider--small').exists()).toBe(true)
})
it('show tooltip', () => {
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => )
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.handleMouseEnter()
@@ -74,10 +62,12 @@ describe('Slider', () => {
})
it('hide tooltip', () => {
+ const value = ref(0)
const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
+ setup() {
+ return () => (
+
+ )
},
})
@@ -87,40 +77,27 @@ describe('Slider', () => {
})
it('format tooltip', async () => {
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- const formatTooltip = (val: number) => `$${val}`
- return (
-
- )
- },
- })
+ const value = ref(0)
+ const formatTooltip = (val: number) => `$${val}`
+ const wrapper = mount(() => (
+
+ ))
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
- nextTick().then(() => {
- expect(slider.vm.formatValue).toBe('$0')
- })
+ await nextTick()
+ expect(slider.vm.formatValue).toBe('$0')
})
describe('drag', () => {
it('horizontal', async () => {
vi.useRealTimers()
+ const value = ref(0)
const wrapper = mount(
- {
- data: () => ({ value: 0 }),
- render() {
- return (
-
-
-
- )
- },
- },
+ () => (
+
+
+
+ ),
{
attachTo: document.body,
}
@@ -152,22 +129,18 @@ describe('Slider', () => {
window.dispatchEvent(mouseup)
await nextTick()
- expect(wrapper.vm.value === 50).toBeTruthy()
+ expect(value.value === 50).toBeTruthy()
})
it('vertical', async () => {
vi.useRealTimers()
+ const value = ref(0)
const wrapper = mount(
- {
- data: () => ({ value: 0 }),
- render() {
- return (
-
-
-
- )
- },
- },
+ () => (
+
+
+
+ ),
{
attachTo: document.body,
}
@@ -197,18 +170,14 @@ describe('Slider', () => {
})
window.dispatchEvent(mouseup)
await nextTick()
- expect(wrapper.vm.value).toBe(50)
+ expect(value.value).toBe(50)
})
})
describe('accessibility', () => {
it('left/right arrows', async () => {
- const wrapper = mount({
- data: () => ({ value: 0.1 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => )
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
@@ -216,92 +185,80 @@ describe('Slider', () => {
new KeyboardEvent('keydown', { key: EVENT_CODE.right })
)
await nextTick()
- expect(wrapper.vm.value).toBe(1)
+ expect(value.value).toBe(1)
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.left })
)
await nextTick()
- expect(wrapper.vm.value).toBe(0)
+ expect(value.value).toBe(0)
})
it('up/down arrows', async () => {
- const wrapper = mount({
- data: () => ({ value: 0.1 }),
- render() {
- return
- },
- })
+ const value = ref(0.1)
+ const wrapper = mount(() => )
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(new KeyboardEvent('keydown', { key: EVENT_CODE.up }))
await nextTick()
- expect(wrapper.vm.value).toBe(1)
+ expect(value.value).toBe(1)
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.down })
)
await nextTick()
- expect(wrapper.vm.value).toBe(0)
+ expect(value.value).toBe(0)
})
it('page up/down keys', async () => {
- const wrapper = mount({
- data: () => ({ value: -1 }),
- render() {
- return
- },
- })
+ const value = ref(-1)
+ const wrapper = mount(() => (
+
+ ))
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.pageUp })
)
await nextTick()
- expect(wrapper.vm.value).toBe(3)
+ expect(value.value).toBe(3)
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.pageDown })
)
await nextTick()
- expect(wrapper.vm.value).toBe(-1)
+ expect(value.value).toBe(-1)
})
it('home/end keys', async () => {
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => (
+
+ ))
const slider = wrapper.findComponent({ name: 'ElSliderButton' })
slider.vm.onKeyDown(
new KeyboardEvent('keydown', { key: EVENT_CODE.home })
)
await nextTick()
- expect(wrapper.vm.value).toBe(-5)
+ expect(value.value).toBe(-5)
slider.vm.onKeyDown(new KeyboardEvent('keydown', { key: EVENT_CODE.end }))
await nextTick()
- expect(wrapper.vm.value).toBe(10)
+ expect(value.value).toBe(10)
})
})
it('step', async () => {
vi.useRealTimers()
+ const value = ref(0)
const wrapper = mount(
- {
- data: () => ({ value: 0 }),
- render() {
- return (
-
-
-
- )
- },
- },
+ () => (
+
+
+
+ ),
{
attachTo: document.body,
}
@@ -332,18 +289,14 @@ describe('Slider', () => {
await nextTick()
window.dispatchEvent(mouseup)
await nextTick()
- expect(wrapper.vm.value === 0.5).toBeTruthy()
+ expect(value.value === 0.5).toBeTruthy()
mockClientWidth.mockRestore()
})
it('click', async () => {
vi.useRealTimers()
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => )
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
@@ -351,23 +304,20 @@ describe('Slider', () => {
const slider = wrapper.findComponent({ name: 'ElSlider' })
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
- expect(wrapper.vm.value > 0).toBeTruthy()
+ expect(value.value > 0).toBeTruthy()
mockClientWidth.mockRestore()
})
it('change event', async () => {
vi.useRealTimers()
- const wrapper = mount({
- data: () => ({ data: 0, value: 0 }),
- render() {
- const onChange = (val: number | number[]) => (this.data = val)
- return (
-
-
-
- )
- },
- })
+ const value = ref(0)
+ const data = ref(0)
+ const onChange = (val: number) => (data.value = val)
+ const wrapper = mount(() => (
+
+
+
+ ))
const slider = wrapper.findComponent({ name: 'ElSlider' })
const mockRectLeft = vi
@@ -383,27 +333,24 @@ describe('Slider', () => {
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
.mockImplementation(() => 200)
- expect(wrapper.vm.data).toBe(0)
+ expect(data.value).toBe(0)
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
- expect(wrapper.vm.data === 50).toBeTruthy()
+ expect(data.value === 50).toBeTruthy()
mockRectLeft.mockRestore()
mockClientWidth.mockRestore()
})
it('input event', async () => {
vi.useRealTimers()
- const wrapper = mount({
- data: () => ({ data: 0, value: 0 }),
- render() {
- const onInput = (val: number | number[]) => (this.data = val)
- return (
-
-
-
- )
- },
- })
+ const value = ref(0)
+ const data = ref(0)
+ const onInput = (val: number) => (data.value = val)
+ const wrapper = mount(() => (
+
+
+
+ ))
const slider = wrapper.findComponent({ name: 'ElSlider' })
const mockRectLeft = vi
@@ -420,22 +367,18 @@ describe('Slider', () => {
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
.mockImplementation(() => 200)
await nextTick()
- expect(wrapper.vm.data).toBe(0)
+ expect(data.value).toBe(0)
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
- expect(wrapper.vm.data === 50).toBeTruthy()
+ expect(data.value === 50).toBeTruthy()
mockRectLeft.mockRestore()
mockClientWidth.mockRestore()
})
it('disabled', async () => {
vi.useRealTimers()
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => )
const mockClientWidth = vi
.spyOn(wrapper.find('.el-slider__runway').element, 'clientWidth', 'get')
@@ -459,22 +402,18 @@ describe('Slider', () => {
})
window.dispatchEvent(mouseup)
await nextTick()
- expect(wrapper.vm.value).toBe(0)
+ expect(value.value).toBe(0)
mockClientWidth.mockRestore()
})
it('show input', async () => {
- const wrapper = mount({
- data: () => ({ value: 0 }),
- render() {
- return
- },
- })
+ const value = ref(0)
+ const wrapper = mount(() => )
const increaseButton = wrapper.find('.el-input-number__increase')
await increaseButton.trigger('mousedown')
vi.advanceTimersByTime(200)
- expect(wrapper.vm.value > 0).toBeTruthy()
+ expect(value.value > 0).toBeTruthy()
})
it('show stops', () => {
@@ -486,13 +425,9 @@ describe('Slider', () => {
it('vertical mode', async () => {
vi.useRealTimers()
+ const value = ref(0)
const wrapper = mount(
- {
- data: () => ({ value: 0 }),
- render() {
- return
- },
- },
+ () => ,
{
attachTo: document.body,
}
@@ -514,22 +449,20 @@ describe('Slider', () => {
const slider = wrapper.getComponent({ name: 'ElSlider' })
slider.vm.onSliderClick(new MouseEvent('mousedown', { clientX: 100 }))
await nextTick()
- expect(wrapper.vm.value > 0).toBeTruthy()
+ expect(value.value > 0).toBeTruthy()
mockRectBottom.mockRestore()
mockClientHeight.mockRestore()
})
it('rerender with min and show-input', async () => {
- const wrapper = mount(
+ const value = ref(30)
+ const show = ref(false)
+ mount(
{
- data: () => ({ show: false, value: 30 }),
- mounted() {
- this.show = true
- },
- render() {
- return (
- this.show &&
- )
+ setup() {
+ onMounted(() => (show.value = true))
+ return () =>
+ show.value &&
},
},
{
@@ -538,54 +471,42 @@ describe('Slider', () => {
)
await nextTick()
- expect(wrapper.vm.value).toEqual(30)
+ expect(value.value).toEqual(30)
})
describe('range', () => {
it('basic ranged slider', () => {
- const wrapper = mount({
- data: () => ({ value: [10, 20] }),
- render() {
- return
- },
- })
+ const value = ref([10, 20])
+ const wrapper = mount(() => )
const sliders = wrapper.findAllComponents({ name: 'ElSliderButton' })
expect(sliders.length).toBe(2)
})
it('should not exceed min and max', async () => {
- const wrapper = mount({
- data: () => ({ value: [50, 60] }),
- render() {
- return
- },
- })
+ const value = ref([50, 60])
+ mount(() => )
await nextTick()
- wrapper.vm.value = [40, 60]
+ value.value = [40, 60]
await nextTick()
- expect(wrapper.vm.value).toStrictEqual([50, 60])
+ expect(value.value).toStrictEqual([50, 60])
- wrapper.vm.value = [50, 120]
+ value.value = [50, 120]
await nextTick()
- expect(wrapper.vm.value).toStrictEqual([50, 100])
+ expect(value.value).toStrictEqual([50, 100])
})
it('click', async () => {
vi.useRealTimers()
+ const value = ref([0, 100])
const wrapper = mount(
- {
- data: () => ({ value: [0, 100] }),
- render() {
- return (
-
-
-
- )
- },
- },
+ () => (
+
+
+
+ ),
{
attachTo: document.body,
}
@@ -609,41 +530,37 @@ describe('Slider', () => {
await nextTick()
// Because mock the clientWidth, so the targetValue is 50.
// The behavior of the setPosition method in the useSlider.ts file should be that the value of the second button is 50
- expect(wrapper.vm.value[0] === 0).toBeTruthy()
- expect(wrapper.vm.value[1] === 50).toBeTruthy()
+ expect(value.value[0] === 0).toBeTruthy()
+ expect(value.value[1] === 50).toBeTruthy()
mockRectLeft.mockRestore()
mockClientWidth.mockRestore()
})
it('responsive to dynamic min and max', async () => {
- const wrapper = mount({
- data: () => ({ min: 0, max: 100, value: [50, 80] }),
- render() {
- return (
-
- )
- },
- })
+ const min = ref(0)
+ const max = ref(100)
+ const value = ref([50, 80])
+ mount(() => (
+
+ ))
await nextTick()
- wrapper.vm.min = 60
+ min.value = 60
await nextTick()
- expect(wrapper.vm.value).toStrictEqual([60, 80])
+ expect(value.value).toStrictEqual([60, 80])
- wrapper.vm.min = 30
- wrapper.vm.max = 40
+ min.value = 30
+ max.value = 40
await nextTick()
- expect(wrapper.vm.value).toStrictEqual([40, 40])
+ expect(value.value).toStrictEqual([40, 40])
})
it('show stops', async () => {
- const wrapper = mount({
- data: () => ({ value: [30, 60] }),
- render() {
- return
- },
- })
+ const value = ref([30, 60])
+ const wrapper = mount(() => (
+
+ ))
await nextTick()
const stops = wrapper.findAll('.el-slider__stop')
@@ -651,34 +568,28 @@ describe('Slider', () => {
})
it('marks', async () => {
- const wrapper = mount({
- data: () => ({
- value: [30, 60],
- marks: {
- 0: '0°C',
- 8: '8°C',
- 37: '37°C',
- 50: {
- style: {
- color: '#f50',
- },
- label: h('strong', '50°C'),
- },
+ const value = ref([30, 60])
+ const marksValue = ref({
+ 0: '0°C',
+ 8: '8°C',
+ 37: '37°C',
+ 50: {
+ style: {
+ color: '#f50',
},
- }),
- render() {
- return (
-
- )
+ label: h('strong', '50°C'),
},
})
+ const wrapper = mount(() => (
+
+ ))
await nextTick()
const stops = wrapper.findAll('.el-slider__marks-stop.el-slider__stop')