@rocali/expo-ts-rest-template
Version:
Expo project template with TypeScript, eslint, prettier, react-navigation, storybook, jest and examples for a quick start.
61 lines (49 loc) • 1.47 kB
text/troff
---
to: src/screens/<%= name %>/index.test.tsx
---
import React from 'react';
import { jest } from '@jest/globals';
import { useNavigation /*, useRoute*/ } from '@react-navigation/native';
import { fireEvent, render } from '@testing-library/react-native';
import { rest } from 'msw';
import { setupServer } from 'msw/node';
import { AppProviders } from 'src/context';
import { API_URL } from 'src/data/api';
import <%= name %>Screen from './';
const mockGoBack = jest.fn();
const mockNavigate = jest.fn();
jest.mock('@react-navigation/native');
(useNavigation as jest.Mock).mockReturnValue({
goBack: mockGoBack,
navigate: mockNavigate,
});
// (useRoute as jest.Mock).mockReturnValue({
// params: {
// id: '',
// },
// });
const server = setupServer(
rest.get(`${API_URL}/SOME_URL`, (_, res, ctx) => {
return res(ctx.json({ foo: 'bar' }));
}),
);
describe('<%= name %>Screen', () => {
beforeEach(() => {
jest.clearAllMocks();
});
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
test('should ...', async () => {
const { findByText, getByTestId } = render(
<AppProviders>
<<%= name %>Screen />
</AppProviders>,
);
const title = await findByText('<%= name %>');
expect(title).toBeTruthy();
const backButtonIcon = getByTestId('backButtonIcon');
fireEvent.press(backButtonIcon);
expect(mockGoBack).toBeCalled();
});
});