Skip to content

Commit 29ed766

Browse files
committed
refactor(reply-card-spec): improve test coverage and test quality for reply card tests
1 parent 76e466a commit 29ed766

File tree

1 file changed

+24
-56
lines changed

1 file changed

+24
-56
lines changed

src/components/reply-card/reply-card.test.tsx

+24-56
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ import { shallow } from 'enzyme';
44

55
import ReplyCard, { Properties } from './reply-card';
66
import { ContentHighlighter } from '../content-highlighter';
7+
import { IconButton } from '@zero-tech/zui/components';
8+
9+
import { bem } from '../../lib/bem';
10+
11+
const c = bem('.reply-card');
712

813
describe('ReplyCard', () => {
914
const subject = (props: Partial<Properties>) => {
@@ -22,10 +27,9 @@ describe('ReplyCard', () => {
2227
};
2328

2429
it('renders reply message', function () {
25-
const message = 'hello';
26-
const wrapper = subject({ message });
30+
const wrapper = subject({ message: 'hello' });
2731

28-
expect(wrapper.find(ContentHighlighter).prop('message').trim()).toStrictEqual(message);
32+
expect(wrapper.find(ContentHighlighter)).toHaveProp('message', 'hello');
2933
});
3034

3135
it('does not render reply message if no message is present', function () {
@@ -34,72 +38,36 @@ describe('ReplyCard', () => {
3438
expect(wrapper).not.toHaveElement(ContentHighlighter);
3539
});
3640

37-
it('call onRemove when close icon is clicked', function () {
38-
const onRemove = jest.fn();
39-
40-
const wrapper = subject({ onRemove });
41-
wrapper.find('IconButton').simulate('click');
41+
it('renders media when media url is present', function () {
42+
const wrapper = subject({ mediaName: 'test-media-name', mediaUrl: 'test-media-url' });
4243

43-
expect(onRemove).toHaveBeenCalledOnce();
44+
expect(wrapper).toHaveElement(c('media-container'));
4445
});
4546

46-
it('renders the sender name', function () {
47-
const wrapper = subject({
48-
senderIsCurrentUser: false,
49-
senderFirstName: 'Jackie',
50-
senderLastName: 'Chan',
51-
});
47+
it('does not render media when media url is NOT present', function () {
48+
const wrapper = subject({ message: 'hello' });
5249

53-
expect(wrapper.find('.reply-card__header').text()).toEqual('Jackie Chan');
50+
expect(wrapper).not.toHaveElement(c('media-container'));
5451
});
5552

56-
it('renders "You" if the sender is the current user', function () {
57-
const wrapper = subject({
58-
senderIsCurrentUser: true,
59-
senderFirstName: 'Jackie',
60-
senderLastName: 'Chan',
61-
});
53+
it('renders the sender name when senderIsCurrentUser is false', function () {
54+
const wrapper = subject({ senderIsCurrentUser: false, senderFirstName: 'Jackie', senderLastName: 'Chan' });
6255

63-
expect(wrapper.find('.reply-card__header').text()).toEqual('You');
56+
expect(wrapper.find(c('header'))).toHaveText('Jackie Chan');
6457
});
6558

66-
it('renders media when media url is present and NO message', function () {
67-
const wrapper = subject({
68-
senderIsCurrentUser: true,
69-
senderFirstName: 'Jackie',
70-
senderLastName: 'Chan',
71-
mediaName: 'test-media-name',
72-
mediaUrl: 'test-media-url',
73-
});
59+
it('renders "You" if the sender is the current user', function () {
60+
const wrapper = subject({ senderIsCurrentUser: true, senderFirstName: 'Jackie', senderLastName: 'Chan' });
7461

75-
expect(wrapper).toHaveElement('.reply-card__media-container');
76-
expect(wrapper).not.toHaveElement(ContentHighlighter);
62+
expect(wrapper.find(c('header'))).toHaveText('You');
7763
});
7864

79-
it('renders media and message when media url and message are present', function () {
80-
const wrapper = subject({
81-
senderIsCurrentUser: true,
82-
senderFirstName: 'Jackie',
83-
senderLastName: 'Chan',
84-
mediaName: 'test-media-name',
85-
mediaUrl: 'test-media-url',
86-
message: 'hello',
87-
});
88-
89-
expect(wrapper).toHaveElement('.reply-card__media-container');
90-
expect(wrapper).toHaveElement(ContentHighlighter);
91-
});
65+
it('call onRemove when close icon is clicked', function () {
66+
const onRemove = jest.fn();
9267

93-
it('does not render media when media url is NOT present', function () {
94-
const wrapper = subject({
95-
senderIsCurrentUser: true,
96-
senderFirstName: 'Jackie',
97-
senderLastName: 'Chan',
98-
mediaName: '',
99-
mediaUrl: '',
100-
message: 'hello',
101-
});
68+
const wrapper = subject({ onRemove });
69+
wrapper.find(IconButton).simulate('click');
10270

103-
expect(wrapper).not.toHaveElement('.reply-card__media-container');
71+
expect(onRemove).toHaveBeenCalledOnce();
10472
});
10573
});

0 commit comments

Comments
 (0)