Skip to content

Commit 7864763

Browse files
kagolgitee-org
authored andcommitted
!296 完成时间轴组件功能
Merge pull request !296 from Jenson_Miao/dev
2 parents 9a6a06a + f7b27b7 commit 7864763

File tree

9 files changed

+706
-279
lines changed

9 files changed

+706
-279
lines changed
Lines changed: 127 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,131 @@
11
import { mount } from '@vue/test-utils';
2-
import { TimeAxis } from '../index';
3-
2+
import DTimeAxis from '../src/time-axis';
3+
import DTimeAxisItem from '../src/components/time-axis-item'
44
describe('time-axis test', () => {
5-
it('time-axis init render', async () => {
6-
// todo
5+
const wrapper = mount({
6+
components: { DTimeAxis, DTimeAxisItem },
7+
template: `
8+
<d-time-axis>
9+
<d-time-axis-item time="2021-11-9">测试1</d-time-axis-item>
10+
<d-time-axis-item type="primary">
11+
<div>测试2</div>
12+
<template #time><div>2021-11-10</div></template>
13+
<template #dot><i class="icon-right-o" /></template>
14+
<template #extra><span>附加元素</span><template>
15+
</d-time-axis-item>
16+
<d-time-axis-item time="2021-11-11" type="success">测试3</d-time-axis-item>
17+
<d-time-axis-item time="2021-11-12" type="warning">测试4</d-time-axis-item>
18+
<d-time-axis-item time="2021-11-13" type="error">测试5</d-time-axis-item>
19+
</d-time-axis>
20+
`,
21+
setup() {
22+
return
23+
}
24+
});
25+
const timeAxisItems = wrapper.findAll('.devui-time-axis-item')
26+
27+
it('should render correctly', async () => {
28+
//渲染的dom元素是有这个class
29+
expect(wrapper.classes()).toContain('devui-time-axis')
30+
//渲染正确子节点数
31+
expect(timeAxisItems.length).toBe(5)
32+
//看时间是否正确
33+
expect(timeAxisItems[0].find('.devui-time-axis-item-time').text()).toBe('2021-11-9')
34+
//看内容是否正确
35+
expect(timeAxisItems[0].find('.devui-time-axis-item-content').text()).toBe('测试1')
36+
})
37+
38+
it('Custom content should be displayed', async () => {
39+
//有自定义的时间节点
40+
expect(timeAxisItems[1].find('.devui-time-axis-item-time div').html()).toBe('<div>2021-11-10</div>')
41+
//有自定义的内容
42+
expect(timeAxisItems[1].find('.devui-time-axis-item-content div').html()).toBe('<div>测试2</div>')
43+
//显示自定义时间点
44+
expect(timeAxisItems[1].find('.devui-time-axis-item-dot i').exists()).toBe(true)
45+
//显示时间点间的附加元素
46+
expect(timeAxisItems[1].find('.devui-time-axis-item-line-extra span').html()).toBe('<span>附加元素</span>')
47+
})
48+
49+
it('type should be rendered correctly', async () => {
50+
expect(timeAxisItems[0].find('.devui-time-axis-item-dot').classes()).toContain('devui-time-axis-item-type-primary')
51+
expect(timeAxisItems[2].find('.devui-time-axis-item-dot').classes()).toContain('devui-time-axis-item-type-success')
52+
expect(timeAxisItems[3].find('.devui-time-axis-item-dot').classes()).toContain('devui-time-axis-item-type-warning')
53+
expect(timeAxisItems[4].find('.devui-time-axis-item-dot').classes()).toContain('devui-time-axis-item-type-error')
54+
55+
})
56+
57+
it('position should be rendered correctly', async () => {
58+
59+
const wrapper = mount({
60+
components: { DTimeAxis, DTimeAxisItem },
61+
template: `
62+
<d-time-axis mode="alternative">
63+
<d-time-axis-item time="2021-11-9">测试1</d-time-axis-item>
64+
<d-time-axis-item time="2021-11-10">测试2</d-time-axis-item>
65+
<d-time-axis-item time="2021-11-11" position="right">测试3</d-time-axis-item>
66+
<d-time-axis-item time="2021-11-11" position="top">测试3</d-time-axis-item>
67+
</d-time-axis>
68+
`,
69+
setup() {
70+
return
71+
}
72+
});
73+
let timeAxisItems = wrapper.findAll('.devui-time-axis-item')
74+
//内容是否在正确的位置
75+
expect(timeAxisItems[0].find('.devui-time-axis-item-data-left .devui-time-axis-item-content').exists()).toBe(true)
76+
expect(timeAxisItems[1].find('.devui-time-axis-item-data-right .devui-time-axis-item-content').exists()).toBe(true)
77+
expect(timeAxisItems[2].find('.devui-time-axis-item-data-right .devui-time-axis-item-content').exists()).toBe(true)
78+
//设置横向时间轴
79+
await wrapper.setProps({ direction: 'horizontal' })
80+
timeAxisItems = wrapper.findAll('.devui-time-axis-item')
81+
expect(timeAxisItems[0].find('.devui-time-axis-item-data-bottom .devui-time-axis-item-content').exists()).toBe(true)
82+
expect(timeAxisItems[1].find('.devui-time-axis-item-data-top .devui-time-axis-item-content').exists()).toBe(true)
83+
expect(timeAxisItems[3].find('.devui-time-axis-item-data-top .devui-time-axis-item-content').exists()).toBe(true)
84+
85+
})
86+
87+
it('time-position should be rendered correctly', async () => {
88+
const wrapper = mount({
89+
components: { DTimeAxis, DTimeAxisItem },
90+
template: `
91+
<d-time-axis time-position="bottom">
92+
<d-time-axis-item time="2021-11-9">测试1</d-time-axis-item>
93+
<d-time-axis-item time="2021-11-10" time-position="left">测试2</d-time-axis-item>
94+
</d-time-axis>
95+
`,
96+
setup() {
97+
return
98+
}
99+
});
100+
const timeAxisItems = wrapper.findAll('.devui-time-axis-item')
101+
//时间是否在正确的位置
102+
expect(timeAxisItems[0].find('.devui-time-axis-item-data-left .devui-time-axis-item-time').exists()).toBe(false)
103+
expect(timeAxisItems[0].find('.devui-time-axis-item-axis .devui-time-axis-item-time').exists()).toBe(true)
104+
expect(timeAxisItems[1].find('.devui-time-axis-item-data-left .devui-time-axis-item-time').exists()).toBe(true)
105+
expect(timeAxisItems[1].find('.devui-time-axis-item-axis .devui-time-axis-item-time').exists()).toBe(false)
106+
})
107+
108+
it('line-style should be rendered correctly', async () => {
109+
const wrapper = mount({
110+
components: { DTimeAxis, DTimeAxisItem },
111+
template: `
112+
<d-time-axis>
113+
<d-time-axis-item time="2021-11-9" line-style="solid">测试1</d-time-axis-item>
114+
<d-time-axis-item time="2021-11-10" line-style="dashed">测试2</d-time-axis-item>
115+
<d-time-axis-item time="2021-11-11" line-style="dotted">测试3</d-time-axis-item>
116+
<d-time-axis-item time="2021-11-12" line-style="none">测试4</d-time-axis-item>
117+
<d-time-axis-item time="2021-11-13">测试5</d-time-axis-item>
118+
</d-time-axis>
119+
`,
120+
setup() {
121+
return
122+
}
123+
});
124+
const timeAxisItemAxis = wrapper.findAll('.devui-time-axis-item .devui-time-axis-item-axis')
125+
expect(timeAxisItemAxis[0].find('.devui-time-axis-item-line').classes()).toContain('devui-time-axis-item-line-style-solid')
126+
expect(timeAxisItemAxis[1].find('.devui-time-axis-item-line').classes()).toContain('devui-time-axis-item-line-style-dashed')
127+
expect(timeAxisItemAxis[2].find('.devui-time-axis-item-line').classes()).toContain('devui-time-axis-item-line-style-dotted')
128+
expect(timeAxisItemAxis[3].find('.devui-time-axis-item-line').classes()).toContain('devui-time-axis-item-line-style-none')
129+
expect(timeAxisItemAxis[4].find('.devui-time-axis-item-line').classes()).toContain('devui-time-axis-item-line-style-none')
7130
})
8131
})
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
import type { App } from 'vue'
22
import TimeAxis from './src/time-axis'
3+
import TimeAxisItem from './src/components/time-axis-item'
34

45
TimeAxis.install = function(app: App): void {
56
app.component(TimeAxis.name, TimeAxis)
7+
app.component(TimeAxisItem.name, TimeAxisItem)
68
}
79

8-
export { TimeAxis }
10+
export { TimeAxis,TimeAxisItem }
911

1012
export default {
1113
title: 'TimeAxis 时间轴',
1214
category: '数据展示',
13-
status: '10%', // TODO: 组件若开发完成则填入"已完成",并删除该注释
15+
status: '已完成',
1416
install(app: App): void {
1517
app.use(TimeAxis as any)
18+
app.use(TimeAxisItem as any)
1619
}
1720
}

packages/devui-vue/devui/time-axis/src/components/time-axis-item/index.scss

Lines changed: 0 additions & 160 deletions
This file was deleted.

0 commit comments

Comments
 (0)