Skip to content

Commit e0a9209

Browse files
wangxueliangtangjinzhou
authored andcommitted
test: add comment test and update snapshots (#429)
1 parent 159c549 commit e0a9209

File tree

3 files changed

+245
-86
lines changed

3 files changed

+245
-86
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Comment Comment can be used as editor, user can customize the editor component. 1`] = `
4+
<div>
5+
<div class="ant-list ant-list-split">
6+
<div class="ant-list-header">1 reply</div>
7+
<div class="ant-spin-nested-loading">
8+
<div class="ant-spin-container">
9+
<div class="ant-list-item">
10+
<div class="ant-list-item-content ant-list-item-content-single">
11+
<div class="ant-comment">
12+
<div class="ant-comment-inner">
13+
<div class="ant-comment-avatar"><img src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png"></div>
14+
<div class="ant-comment-content">
15+
<div class="ant-comment-content-author"><span class="ant-comment-content-author-name">Han Solo</span><span class="ant-comment-content-author-time">a few seconds ago</span></div>
16+
<div class="ant-comment-content-detail">222</div>
17+
</div>
18+
</div>
19+
</div>
20+
</div>
21+
</div>
22+
</div>
23+
</div>
24+
</div>
25+
<div class="ant-comment">
26+
<div class="ant-comment-inner">
27+
<div class="ant-comment-avatar"></div>
28+
<div class="ant-comment-content">
29+
<div class="ant-comment-content-author"></div>
30+
<div class="ant-comment-content-detail">
31+
<div>
32+
<div class="ant-row ant-form-item">
33+
<div class="ant-form-item-control-wrapper">
34+
<div class="ant-form-item-control"><span class="ant-form-item-children"><textarea rows="4" class="ant-input"></textarea></span>
35+
<!---->
36+
</div>
37+
</div>
38+
</div>
39+
<div class="ant-row ant-form-item">
40+
<div class="ant-form-item-control-wrapper">
41+
<div class="ant-form-item-control"><span class="ant-form-item-children"><button type="submit" class="ant-btn ant-btn-primary" ant-click-animating-without-extra-node="true"><span>Add Comment</span></button></span>
42+
<!---->
43+
</div>
44+
</div>
45+
</div>
46+
</div>
47+
</div>
48+
</div>
49+
</div>
50+
</div>
51+
</div>
52+
`;
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import { mount } from '@vue/test-utils';
2+
import moment from 'moment';
3+
import { asyncExpect } from '@/tests/utils';
4+
import Comment from '..';
5+
import List from '../../list';
6+
import Form from '../../form';
7+
import Button from '../../button';
8+
import Input from '../../input';
9+
10+
const CommentTest = {
11+
data() {
12+
return {
13+
comments: [],
14+
submitting: false,
15+
value: '',
16+
moment,
17+
};
18+
},
19+
methods: {
20+
handleSubmit() {
21+
if (!this.value) {
22+
return;
23+
}
24+
25+
this.submitting = true;
26+
27+
setTimeout(() => {
28+
this.submitting = false;
29+
this.comments = [
30+
{
31+
author: 'Han Solo',
32+
avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
33+
content: this.value,
34+
datetime: moment().fromNow(),
35+
},
36+
...this.comments,
37+
];
38+
this.value = '';
39+
}, 1000);
40+
},
41+
handleChange(e) {
42+
this.value = e.target.value;
43+
},
44+
},
45+
render() {
46+
return (
47+
<div>
48+
{this.comments.length ? (
49+
<List
50+
dataSource={this.comments}
51+
header={`${this.comments.length} ${this.comments.length > 1 ? 'replies' : 'reply'}`}
52+
itemLayout="horizontal"
53+
renderItem={item => {
54+
return (
55+
<List.Item>
56+
<Comment
57+
author={item.author}
58+
avatar={item.avatar}
59+
content={item.content}
60+
datetime={item.datetime}
61+
/>
62+
</List.Item>
63+
);
64+
}}
65+
/>
66+
) : null}
67+
<Comment>
68+
<div slot="content">
69+
<Form.Item>
70+
<Input.TextArea rows={4} onChange={this.handleChange} value={this.value} />
71+
</Form.Item>
72+
<Form.Item>
73+
<Button
74+
htmlType="submit"
75+
loading={this.submitting}
76+
onClick={this.handleSubmit}
77+
type="primary"
78+
>
79+
Add Comment
80+
</Button>
81+
</Form.Item>
82+
</div>
83+
</Comment>
84+
</div>
85+
);
86+
},
87+
};
88+
89+
describe('Comment', () => {
90+
it('Comment can be used as editor, user can customize the editor component.', async () => {
91+
const wrapper = mount(CommentTest, {
92+
sync: false,
93+
});
94+
await asyncExpect(() => {
95+
wrapper.find('textarea').element.value = '222';
96+
wrapper.find('textarea').trigger('input');
97+
});
98+
await asyncExpect(() => {
99+
wrapper.find('Button').trigger('click');
100+
});
101+
102+
await asyncExpect(() => {
103+
expect(wrapper.findAll('.ant-list-header').wrappers[0].element.innerHTML).toBe('1 reply');
104+
expect(wrapper.html()).toMatchSnapshot();
105+
}, 2000);
106+
});
107+
});

0 commit comments

Comments
 (0)