52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
|
import {createStackNavigator} from '@react-navigation/stack'
|
||
|
import React from 'react'
|
||
|
import 'react-native'
|
||
|
import {render, waitFor} from 'react-native-testing-library'
|
||
|
import EditPlan from '../EditPlan'
|
||
|
import {MockProviders} from '../mock-providers'
|
||
|
import {Plan} from '../plan'
|
||
|
import {PlanPageParams} from '../plan-page-params'
|
||
|
|
||
|
jest.mock('../db.ts', () => ({
|
||
|
setRepo: {
|
||
|
createQueryBuilder: () => ({
|
||
|
select: jest.fn().mockReturnThis(),
|
||
|
distinct: jest.fn().mockReturnThis(),
|
||
|
getRawMany: jest.fn(() =>
|
||
|
Promise.resolve([
|
||
|
{name: 'Bench press'},
|
||
|
{name: 'Bicep curls'},
|
||
|
{name: 'Rows'},
|
||
|
]),
|
||
|
),
|
||
|
}),
|
||
|
},
|
||
|
}))
|
||
|
|
||
|
it('renders correctly', async () => {
|
||
|
const Stack = createStackNavigator<PlanPageParams>()
|
||
|
const {getByText, getAllByText} = render(
|
||
|
<MockProviders>
|
||
|
<Stack.Navigator>
|
||
|
<Stack.Screen
|
||
|
initialParams={{
|
||
|
plan: {
|
||
|
workouts: 'Bench,Rows,Curls',
|
||
|
days: 'Monday,Tuesday,Thursday',
|
||
|
} as Plan,
|
||
|
}}
|
||
|
name="EditPlan"
|
||
|
component={EditPlan}
|
||
|
/>
|
||
|
</Stack.Navigator>
|
||
|
</MockProviders>,
|
||
|
)
|
||
|
const title = await waitFor(() => getByText(/Edit plan/i))
|
||
|
expect(title).toBeDefined()
|
||
|
expect(getAllByText('Days').length).toBeGreaterThan(0)
|
||
|
expect(getAllByText('Monday').length).toBeGreaterThan(0)
|
||
|
expect(getAllByText('Workouts').length).toBeGreaterThan(0)
|
||
|
expect(getAllByText('Bench press').length).toBeGreaterThan(0)
|
||
|
expect(getAllByText('Save').length).toBeGreaterThan(0)
|
||
|
})
|