Test start plan + edit plan

This commit is contained in:
Brandon Presley 2023-01-01 15:06:42 +13:00
parent 58f1c905b2
commit 8246155c13
2 changed files with 117 additions and 0 deletions

51
tests/EditPlan.test.tsx Normal file
View File

@ -0,0 +1,51 @@
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)
})

66
tests/StartPlan.test.tsx Normal file
View File

@ -0,0 +1,66 @@
import {createStackNavigator} from '@react-navigation/stack'
import React from 'react'
import 'react-native'
import {render, waitFor} from 'react-native-testing-library'
import GymSet from '../gym-set'
import {MockProviders} from '../mock-providers'
import {Plan} from '../plan'
import {PlanPageParams} from '../plan-page-params'
import Settings from '../settings'
import StartPlan from '../StartPlan'
jest.mock('../db.ts', () => ({
setRepo: {findOne: () => Promise.resolve({})},
settingsRepo: {
findOne: () =>
Promise.resolve({
showUnit: true,
showDate: true,
images: true,
} as Settings),
},
}))
jest.mock('../data-source.ts', () => ({
AppDataSource: {
manager: {
query: jest.fn(() =>
Promise.resolve([
{name: 'Bench', total: 0},
{name: 'Rows', total: 0},
{name: 'Curls', total: 0},
]),
),
},
},
}))
it('renders correctly', async () => {
const Stack = createStackNavigator<PlanPageParams>()
const {getByText, getAllByText} = render(
<MockProviders>
<Stack.Navigator>
<Stack.Screen
initialParams={{
first: {reps: 0, weight: 0} as GymSet,
plan: {
workouts: 'Bench,Rows,Curls',
days: 'Monday,Tuesday,Thursday',
} as Plan,
}}
name="StartPlan"
component={StartPlan}
/>
</Stack.Navigator>
</MockProviders>,
)
const title = await waitFor(() => getByText(/Monday/i))
expect(title).toBeDefined()
expect(getAllByText('Reps').length).toBeGreaterThan(0)
expect(getAllByText('Weight').length).toBeGreaterThan(0)
expect(getAllByText('Unit').length).toBeGreaterThan(0)
expect(getAllByText('Bench').length).toBeGreaterThan(0)
expect(getAllByText('Rows').length).toBeGreaterThan(0)
expect(getAllByText('Curls').length).toBeGreaterThan(0)
expect(getAllByText('Save').length).toBeGreaterThan(0)
})