-
Notifications
You must be signed in to change notification settings - Fork 272
/
Copy pathDrawerNavigator.test.js
34 lines (27 loc) · 1.16 KB
/
DrawerNavigator.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import * as React from 'react';
import { screen, fireEvent } from '@testing-library/react-native';
import { renderNavigator } from './test-utils';
import DrawerNavigator from './DrawerNavigator';
test('Changing screens', () => {
renderNavigator(<DrawerNavigator />);
// Assert initial screen
expect(screen.getByRole('header', { name: 'Home screen' })).toBeOnTheScreen();
// Open drawer by pressing button
const toggleButton = screen.getByText('Toggle drawer');
fireEvent.press(toggleButton);
// Assert drawer state
expect(screen.getByRole('button', { name: 'Home' })).toBeSelected();
expect(screen.getByRole('button', { name: 'Settings' })).not.toBeSelected();
// Press drawer item
fireEvent.press(screen.getByRole('button', { name: 'Settings' }));
// Assert drawer state after action
expect(screen.getByRole('button', { name: 'Home' })).not.toBeSelected();
expect(screen.getByRole('button', { name: 'Settings' })).toBeSelected();
// Assert visible screen
expect(
screen.getByRole('header', { name: 'Settings screen' })
).toBeOnTheScreen();
expect(
screen.queryByRole('header', { name: 'Home screen' })
).not.toBeOnTheScreen();
});