Skip to content

Commit d1045a4

Browse files
committed
test: 新增 toggle 测试
1 parent 9653824 commit d1045a4

File tree

4 files changed

+68
-0
lines changed

4 files changed

+68
-0
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/lib
2+
/tests
23
*.md

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ JSON tree view for Vue.
88
| [Demo & Docs](https://mathink12.github.io/json-tree/) | [Demo & Docs](http://mathink12.gitee.io/json-tree/) |
99

1010
![demo](./docs/imgs/json-tree.gif)
11+
12+
## License
13+
14+
[MIT](http://opensource.org/licenses/MIT)

src/json-tree/JsonTreeNode.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
:class="{
88
'cursor-pointer': true,
99
'json-tree__toggle': true,
10+
'json-tree__toggle--collapse': localCollapse,
1011
'json-tree__toggle--hidden': shouldHideToggle
1112
}"
1213
@click.stop="onToggle">

tests/unit/toggle.spec.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { mount } from '@vue/test-utils'
2+
import JsonTree from '@/index.js'
3+
4+
// 使用这个方法生成的 json 结构数据
5+
// 根据 JsonTree 的默认项
6+
// 将会全部展开(默认展开两级), 并显示 3 条连接线
7+
const genJsonData = () => {
8+
return {
9+
name: 'Tom',
10+
age: 2,
11+
friends: [
12+
{ name: 'Jerry' },
13+
{ name: 'Tuffy' }
14+
]
15+
}
16+
}
17+
18+
const factory = (propsData) => {
19+
return mount(JsonTree, {
20+
propsData: {
21+
jsonData: genJsonData(),
22+
...propsData
23+
}
24+
})
25+
}
26+
27+
describe('JsonTree.vue toggle', () => {
28+
it('toggle 图标显示', () => {
29+
// 这里需要注意 jsonData 要使得生成的结果中既有 + 又有 -
30+
const wrapper = factory()
31+
32+
const toggles = wrapper
33+
.findAll('.json-tree__toggle:not(.json-tree__toggle--hidden)')
34+
35+
const iconCorrent = toggles.wrappers.every(v => {
36+
if (v.classes('json-tree__toggle--collapse')) {
37+
return v.text() === '+'
38+
}
39+
return v.text() === '-'
40+
})
41+
42+
expect(iconCorrent).toBe(true)
43+
})
44+
45+
it('toggle 切换交互', async () => {
46+
// 只判定第一个即可
47+
const rootToggle = wrapper.find('.json-tree__toggle')
48+
if (rootToggle.classes('json-tree__toggle--collapse')) {
49+
// 当前节点是折叠起来的
50+
await rootToggle.trigger('click')
51+
expect(rootToggle.classes('json-tree__toggle--collapse')).toBe(false)
52+
} else {
53+
await rootToggle.trigger('click')
54+
expect(rootToggle.classes('json-tree__toggle--collapse')).toBe(true)
55+
}
56+
})
57+
58+
it('全部收起、全部展开', () => {
59+
const wrapper = factory()
60+
// wrapper.
61+
})
62+
})

0 commit comments

Comments
 (0)