2023-01-01 02:06:42 +00:00
|
|
|
import {createStackNavigator} from '@react-navigation/stack'
|
|
|
|
import React from 'react'
|
|
|
|
import 'react-native'
|
2023-01-01 05:13:45 +00:00
|
|
|
import {fireEvent, render, waitFor} from 'react-native-testing-library'
|
2023-01-01 02:06:42 +00:00
|
|
|
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'
|
|
|
|
|
2023-01-01 05:13:45 +00:00
|
|
|
jest.mock('../best.service.ts', () => ({
|
|
|
|
getBestSet: () => Promise.resolve({}),
|
|
|
|
}))
|
|
|
|
|
2023-01-01 02:06:42 +00:00
|
|
|
jest.mock('../db.ts', () => ({
|
2023-01-04 00:24:49 +00:00
|
|
|
getNow: () => Promise.resolve(new Date().toISOString()),
|
2023-01-01 05:13:45 +00:00
|
|
|
setRepo: {
|
|
|
|
findOne: () => Promise.resolve({}),
|
|
|
|
save: () => Promise.resolve(),
|
|
|
|
},
|
2023-01-01 02:06:42 +00:00
|
|
|
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},
|
|
|
|
]),
|
|
|
|
),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
|
2023-01-04 00:44:28 +00:00
|
|
|
test('renders correctly', async () => {
|
2023-01-01 02:06:42 +00:00
|
|
|
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)
|
|
|
|
})
|
2023-01-01 05:13:45 +00:00
|
|
|
|
2023-01-04 00:44:28 +00:00
|
|
|
test('saves', async () => {
|
2023-01-01 05:13:45 +00:00
|
|
|
const Stack = createStackNavigator<PlanPageParams>()
|
|
|
|
const {getByText} = 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 save = await waitFor(() => getByText('Save'))
|
|
|
|
expect(save).toBeDefined()
|
|
|
|
fireEvent.press(save)
|
|
|
|
const save2 = await waitFor(() => getByText('Save'))
|
|
|
|
expect(save2).toBeDefined()
|
|
|
|
})
|