Skip to content

Commit f828513

Browse files
ElenaBitireyjose
authored andcommitted
refactor: refactor unit tests
1 parent 95f21ef commit f828513

File tree

5 files changed

+61
-59
lines changed

5 files changed

+61
-59
lines changed

src/components/login-form.test.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ const onSubmitMock: jest.Mock<LoginFormProps['onSubmit']> = jest.fn();
1212
describe('LoginForm Form ', () => {
1313
it('renders correctly', async () => {
1414
render(<LoginForm />);
15-
expect(await screen.findByText(/Sign in/i)).not.toBeNull();
15+
expect(await screen.findByText(/Sign in/i)).toBeOnTheScreen();
1616
});
1717

1818
it('should display required error when values are empty', async () => {
1919
render(<LoginForm />);
2020

2121
const button = screen.getByTestId('login-button');
22-
expect(screen.queryByText(/Email is required/i)).toBeNull();
22+
expect(screen.queryByText(/Email is required/i)).not.toBeOnTheScreen();
2323
fireEvent.press(button);
24-
expect(await screen.findByText(/Email is required/i)).not.toBeNull();
25-
expect(screen.getByText(/Password is required/i)).not.toBeNull();
24+
expect(await screen.findByText(/Email is required/i)).toBeOnTheScreen();
25+
expect(screen.getByText(/Password is required/i)).toBeOnTheScreen();
2626
});
2727

2828
it('should display matching error when email is invalid', async () => {
@@ -36,8 +36,8 @@ describe('LoginForm Form ', () => {
3636
fireEvent.changeText(passwordInput, 'test');
3737
fireEvent.press(button);
3838

39-
expect(screen.queryByText(/Email is required/i)).toBeNull();
40-
expect(await screen.findByText(/Invalid Email Format/i)).not.toBeNull();
39+
expect(screen.queryByText(/Email is required/i)).not.toBeOnTheScreen();
40+
expect(await screen.findByText(/Invalid Email Format/i)).toBeOnTheScreen();
4141
});
4242

4343
it('Should call LoginForm with correct values when values are valid', async () => {

src/ui/button.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ describe('Button component ', () => {
6666
variant="secondary"
6767
/>
6868
);
69-
expect(screen.getByTestId('button')).not.toBeNull();
69+
expect(screen.getByTestId('button')).toBeOnTheScreen();
7070
fireEvent.press(screen.getByTestId('button'));
7171
expect(screen.getByTestId('button').props.accessibilityState.disabled).toBe(
7272
true

src/ui/checkbox.test.tsx

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ describe('Checkbox, Radio & Switch components ', () => {
2020
accessibilityHint="toggle Agree"
2121
/>
2222
);
23-
expect(screen.queryByTestId('checkbox')).not.toBeNull();
24-
expect(screen.queryByTestId('checkbox-label')).toBeNull();
23+
expect(screen.getByTestId('checkbox')).toBeOnTheScreen();
24+
expect(screen.queryByTestId('checkbox-label')).not.toBeOnTheScreen();
2525
expect(
2626
screen.getByTestId('checkbox').props.accessibilityState.checked
2727
).toBe(false);
@@ -48,7 +48,7 @@ describe('Checkbox, Radio & Switch components ', () => {
4848
accessibilityHint="toggle Agree"
4949
/>
5050
);
51-
expect(screen.queryByTestId('checkbox')).not.toBeNull();
51+
expect(screen.getByTestId('checkbox')).toBeOnTheScreen();
5252

5353
fireEvent.press(screen.getByTestId('checkbox'));
5454
expect(mockOnChange).toHaveBeenCalledTimes(0);
@@ -65,8 +65,8 @@ describe('Checkbox, Radio & Switch components ', () => {
6565
label="I agree to terms and conditions"
6666
/>
6767
);
68-
expect(screen.queryByTestId('checkbox')).not.toBeNull();
69-
expect(screen.queryByTestId('checkbox-label')).not.toBeNull();
68+
expect(screen.getByTestId('checkbox')).toBeOnTheScreen();
69+
expect(screen.getByTestId('checkbox-label')).toBeOnTheScreen();
7070
expect(
7171
screen.getByTestId('checkbox').props.accessibilityState.checked
7272
).toBe(false);
@@ -77,7 +77,7 @@ describe('Checkbox, Radio & Switch components ', () => {
7777
'agree'
7878
);
7979

80-
expect(screen.queryByTestId('checkbox-label')?.props.children).toBe(
80+
expect(screen.getByTestId('checkbox-label')?.props.children).toBe(
8181
'I agree to terms and conditions'
8282
);
8383
fireEvent.press(screen.getByTestId('checkbox'));
@@ -94,8 +94,8 @@ describe('Checkbox, Radio & Switch components ', () => {
9494
accessibilityHint="toggle Agree"
9595
/>
9696
);
97-
expect(screen.queryByTestId('radio')).not.toBeNull();
98-
expect(screen.queryByTestId('radio-label')).toBeNull();
97+
expect(screen.getByTestId('radio')).toBeOnTheScreen();
98+
expect(screen.queryByTestId('radio-label')).not.toBeOnTheScreen();
9999

100100
expect(screen.getByTestId('radio').props.accessibilityState.checked).toBe(
101101
false
@@ -118,9 +118,9 @@ describe('Checkbox, Radio & Switch components ', () => {
118118
accessibilityHint="toggle Agree"
119119
/>
120120
);
121-
expect(screen.queryByTestId('radio')).not.toBeNull();
122-
expect(screen.queryByTestId('radio-label')).not.toBeNull();
123-
expect(screen.queryByTestId('radio-label')?.props.children).toBe(
121+
expect(screen.getByTestId('radio')).toBeOnTheScreen();
122+
expect(screen.getByTestId('radio-label')).toBeOnTheScreen();
123+
expect(screen.getByTestId('radio-label')?.props.children).toBe(
124124
'I agree to terms and conditions'
125125
);
126126

@@ -145,7 +145,7 @@ describe('Checkbox, Radio & Switch components ', () => {
145145
accessibilityHint="toggle Agree"
146146
/>
147147
);
148-
expect(screen.queryByTestId('radio')).not.toBeNull();
148+
expect(screen.getByTestId('radio')).toBeOnTheScreen();
149149

150150
fireEvent.press(screen.getByTestId('radio'));
151151
expect(mockOnChange).toHaveBeenCalledTimes(0);
@@ -161,8 +161,8 @@ describe('Checkbox, Radio & Switch components ', () => {
161161
accessibilityHint="toggle Agree"
162162
/>
163163
);
164-
expect(screen.queryByTestId('switch')).not.toBeNull();
165-
expect(screen.queryByTestId('switch-label')).toBeNull();
164+
expect(screen.getByTestId('switch')).toBeOnTheScreen();
165+
expect(screen.queryByTestId('switch-label')).not.toBeOnTheScreen();
166166

167167
expect(screen.getByTestId('switch').props.accessibilityState.checked).toBe(
168168
false
@@ -185,9 +185,9 @@ describe('Checkbox, Radio & Switch components ', () => {
185185
accessibilityHint="toggle Agree"
186186
/>
187187
);
188-
expect(screen.queryByTestId('switch')).not.toBeNull();
189-
expect(screen.queryByTestId('switch-label')).not.toBeNull();
190-
expect(screen.queryByTestId('switch-label')?.props.children).toBe(
188+
expect(screen.getByTestId('switch')).toBeOnTheScreen();
189+
expect(screen.getByTestId('switch-label')).toBeOnTheScreen();
190+
expect(screen.getByTestId('switch-label')?.props.children).toBe(
191191
'I agree to terms and conditions'
192192
);
193193
expect(screen.getByTestId('switch').props.accessibilityState.checked).toBe(
@@ -211,7 +211,7 @@ describe('Checkbox, Radio & Switch components ', () => {
211211
accessibilityHint="toggle Agree"
212212
/>
213213
);
214-
expect(screen.queryByTestId('switch')).not.toBeNull();
214+
expect(screen.getByTestId('switch')).toBeOnTheScreen();
215215
fireEvent.press(screen.getByTestId('switch'));
216216
expect(mockOnChange).toHaveBeenCalledTimes(0);
217217
});

src/ui/input.test.tsx

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,33 @@ afterEach(cleanup);
1010
describe('Input component ', () => {
1111
it('renders correctly ', () => {
1212
render(<Input testID="text-input" />);
13-
expect(screen.queryByTestId('text-input')).not.toBeNull();
13+
const input = screen.getByTestId('text-input');
14+
expect(input).toBeOnTheScreen();
15+
expect(screen.getByTestId('text-input')).toBeOnTheScreen();
1416
});
1517

1618
it('should render the placeholder correctly ', () => {
1719
render(<Input testID="text-input" placeholder="Enter your username" />);
18-
expect(screen.queryByTestId('text-input')).not.toBeNull();
19-
expect(screen.getByPlaceholderText('Enter your username')).toBeDefined();
20+
expect(screen.getByTestId('text-input')).toBeOnTheScreen();
21+
expect(
22+
screen.getByPlaceholderText('Enter your username')
23+
).toBeOnTheScreen();
2024
});
2125

2226
it('should render the label correctly ', () => {
2327
render(<Input testID="text-input" label="Username" />);
24-
expect(screen.queryByTestId('text-input')).not.toBeNull();
25-
expect(screen.queryByTestId('text-input-label')).not.toBeNull();
26-
expect(screen.queryByTestId('text-input-label')?.props.children).toBe(
28+
expect(screen.getByTestId('text-input')).toBeOnTheScreen();
29+
expect(screen.getByTestId('text-input-label')).toBeOnTheScreen();
30+
expect(screen.getByTestId('text-input-label')?.props.children).toBe(
2731
'Username'
2832
);
2933
});
3034

3135
it('should render the error message correctly ', () => {
3236
render(<Input testID="text-input" error="This is an error message" />);
33-
expect(screen.queryByTestId('text-input')).not.toBeNull();
34-
expect(screen.queryByTestId('text-input-error')).not.toBeNull();
35-
expect(screen.queryByTestId('text-input-error')?.props.children).toBe(
37+
expect(screen.getByTestId('text-input')).toBeOnTheScreen();
38+
expect(screen.getByTestId('text-input-error')).toBeOnTheScreen();
39+
expect(screen.getByTestId('text-input-error')?.props.children).toBe(
3640
'This is an error message'
3741
);
3842
});
@@ -45,16 +49,18 @@ describe('Input component ', () => {
4549
error="This is an error message"
4650
/>
4751
);
48-
expect(screen.queryByTestId('text-input')).not.toBeNull();
49-
expect(screen.queryByTestId('text-input-label')).not.toBeNull();
50-
expect(screen.queryByTestId('text-input-label')?.props.children).toBe(
52+
expect(screen.getByTestId('text-input')).toBeOnTheScreen();
53+
expect(screen.getByTestId('text-input-label')).toBeOnTheScreen();
54+
expect(screen.getByTestId('text-input-label')?.props.children).toBe(
5155
'Username'
5256
);
53-
expect(screen.queryByTestId('text-input-error')).not.toBeNull();
54-
expect(screen.queryByTestId('text-input-error')?.props.children).toBe(
57+
expect(screen.getByTestId('text-input-error')).toBeOnTheScreen();
58+
expect(screen.getByTestId('text-input-error')?.props.children).toBe(
5559
'This is an error message'
5660
);
57-
expect(screen.getByPlaceholderText('Enter your username')).toBeDefined();
61+
expect(
62+
screen.getByPlaceholderText('Enter your username')
63+
).toBeOnTheScreen();
5864
});
5965

6066
it('should trigger onFocus event correctly ', () => {

src/ui/select.test.tsx

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable max-lines-per-function */
22
import React from 'react';
33

4-
import { cleanup, fireEvent, render, screen, waitFor } from '@/core/test-utils';
4+
import { cleanup, fireEvent, render, screen } from '@/core/test-utils';
55
import type { Option } from '@/ui';
66

77
import { Select } from './select';
@@ -24,8 +24,8 @@ describe('Select component ', () => {
2424
testID="test-select"
2525
/>
2626
);
27-
expect(screen.queryByTestId('test-select-trigger')).not.toBeNull();
28-
expect(screen.queryByTestId('test-select-label')).not.toBeNull();
27+
expect(screen.getByTestId('test-select-trigger')).toBeOnTheScreen();
28+
expect(screen.getByTestId('test-select-label')).toBeOnTheScreen();
2929
});
3030

3131
it('should render the label correctly ', () => {
@@ -38,9 +38,9 @@ describe('Select component ', () => {
3838
testID="test-select"
3939
/>
4040
);
41-
expect(screen.queryByTestId('test-select-trigger')).not.toBeNull();
42-
expect(screen.queryByTestId('test-select-label')).not.toBeNull();
43-
expect(screen.queryByTestId('test-select-label')?.props.children).toBe(
41+
expect(screen.getByTestId('test-select-trigger')).toBeOnTheScreen();
42+
expect(screen.getByTestId('test-select-label')).toBeOnTheScreen();
43+
expect(screen.getByTestId('test-select-label')?.props.children).toBe(
4444
'Select'
4545
);
4646
});
@@ -56,14 +56,14 @@ describe('Select component ', () => {
5656
error="Please select an option"
5757
/>
5858
);
59-
expect(screen.queryByTestId('test-select-trigger')).not.toBeNull();
60-
expect(screen.queryByTestId('test-select-error')).not.toBeNull();
61-
expect(screen.queryByTestId('test-select-error')?.props.children).toBe(
59+
expect(screen.getByTestId('test-select-trigger')).toBeOnTheScreen();
60+
expect(screen.getByTestId('test-select-error')).toBeOnTheScreen();
61+
expect(screen.getByTestId('test-select-error')?.props.children).toBe(
6262
'Please select an option'
6363
);
6464
});
6565

66-
it('should open options modal on press', async () => {
66+
it('should open options modal on press', () => {
6767
render(
6868
<Select
6969
label="Select"
@@ -76,14 +76,12 @@ describe('Select component ', () => {
7676
const selectTrigger = screen.getByTestId('test-select-trigger');
7777
fireEvent.press(selectTrigger);
7878

79-
await waitFor(() => {
80-
expect(screen.getByTestId('test-select-item-chocolate')).not.toBeNull();
81-
expect(screen.getByTestId('test-select-item-strawberry')).not.toBeNull();
82-
expect(screen.getByTestId('test-select-item-vanilla')).not.toBeNull();
83-
});
79+
expect(screen.getByTestId('test-select-item-chocolate')).toBeOnTheScreen();
80+
expect(screen.getByTestId('test-select-item-strawberry')).toBeOnTheScreen();
81+
expect(screen.getByTestId('test-select-item-vanilla')).toBeOnTheScreen();
8482
});
8583

86-
it('should call onSelect on selecting an option', async () => {
84+
it('should call onSelect on selecting an option', () => {
8785
const onSelect = jest.fn();
8886

8987
render(
@@ -96,8 +94,6 @@ describe('Select component ', () => {
9694
const optionItem1 = screen.getByTestId('test-select-item-chocolate');
9795
fireEvent.press(optionItem1);
9896

99-
await waitFor(() => {
100-
expect(onSelect).toHaveBeenCalledWith(options[0].value);
101-
});
97+
expect(onSelect).toHaveBeenCalledWith(options[0].value);
10298
});
10399
});

0 commit comments

Comments
 (0)