-
Notifications
You must be signed in to change notification settings - Fork 278
Expand file tree
/
Copy pathDrawerNavigator.test.js
More file actions
30 lines (23 loc) · 1.14 KB
/
DrawerNavigator.test.js
File metadata and controls
30 lines (23 loc) · 1.14 KB
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
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();
});