refactor stack. Add details to example tests.

This commit is contained in:
Jordan Hewitt
2025-02-18 16:56:19 -08:00
parent bc3d481d25
commit b3c2e09987
7 changed files with 76 additions and 19 deletions

20
components/TTNavStack.tsx Normal file
View 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>
);
}

View 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();
});
});