refactor stack. Add details to example tests.
This commit is contained in:
20
components/TTNavStack.tsx
Normal file
20
components/TTNavStack.tsx
Normal file
@ -0,0 +1,20 @@
|
||||
import * as React from 'react';
|
||||
import { NavigationContainer } from '@react-navigation/native';
|
||||
import SettingsComponent from '@/components/Settings';
|
||||
import { LanguageSelection } from '@/components/LanguageSelection';
|
||||
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
||||
import ConversationThread from '@/components/ConversationThread';
|
||||
|
||||
const Stack = createNativeStackNavigator();
|
||||
|
||||
export default function TTNavStack() {
|
||||
return (
|
||||
<NavigationContainer>
|
||||
<Stack.Navigator initialRouteName='LanguageSelection'>
|
||||
<Stack.Screen name="LanguageSelection" component={LanguageSelection} />
|
||||
<Stack.Screen name="ConversationThread" component={ConversationThread} />
|
||||
<Stack.Screen name="Settings" component={SettingsComponent} />
|
||||
</Stack.Navigator>
|
||||
</NavigationContainer>
|
||||
);
|
||||
}
|
30
components/__tests__/index.spec.tsx
Normal file
30
components/__tests__/index.spec.tsx
Normal file
@ -0,0 +1,30 @@
|
||||
import React from 'react';
|
||||
import { fireEvent, render, screen } from '@testing-library/react-native';
|
||||
import { NavigationContainer } from '@react-navigation/native';
|
||||
import { createStackNavigator } from '@react-navigation/stack';
|
||||
import TTNavStack from '../TTNavStack';
|
||||
|
||||
jest.mock('expo-file-system', () => require('./__mocks__/expo-file-system'));
|
||||
|
||||
const Stack = createStackNavigator();
|
||||
|
||||
describe('Navigation', () => {
|
||||
beforeEach(() => {
|
||||
// Reset the navigation state before each test
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
it('Navigates to ConversationThread on language selection', async () => {
|
||||
render(<TTNavStack />);
|
||||
const languageSelectionText = await screen.findByText("Language Selection");
|
||||
fireEvent.press(languageSelectionText);
|
||||
expect(await screen.findByText("Conversation Thread")).toBeOnTheScreen();
|
||||
});
|
||||
|
||||
it('Navigates to Settings on settings selection', async () => {
|
||||
render(<TTNavStack />);
|
||||
const settingsButton = await screen.findByText("Settings");
|
||||
fireEvent.press(settingsButton);
|
||||
expect(await screen.findByText("Settings")).toBeOnTheScreen();
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user