2023-06-27 03:16:59 +00:00
|
|
|
import { createStackNavigator } from '@react-navigation/stack'
|
2023-01-01 01:35:22 +00:00
|
|
|
import React from 'react'
|
|
|
|
import 'react-native'
|
2023-07-07 01:17:19 +00:00
|
|
|
import { fireEvent, render, waitFor } from '@testing-library/react-native'
|
2023-01-01 01:47:16 +00:00
|
|
|
import EditSet from '../EditSet'
|
|
|
|
import GymSet from '../gym-set'
|
2023-06-27 03:16:59 +00:00
|
|
|
import { HomePageParams } from '../home-page-params'
|
|
|
|
import { MockProviders } from '../mock-providers'
|
2023-01-01 05:01:38 +00:00
|
|
|
import SetList from '../SetList'
|
2023-01-01 01:35:22 +00:00
|
|
|
import Settings from '../settings'
|
|
|
|
|
|
|
|
jest.mock('../db.ts', () => ({
|
2023-01-04 00:24:49 +00:00
|
|
|
getNow: () => Promise.resolve(new Date().toISOString()),
|
2023-01-01 05:01:38 +00:00
|
|
|
setRepo: {
|
|
|
|
findOne: () => Promise.resolve({}),
|
|
|
|
save: jest.fn(() => Promise.resolve({})),
|
|
|
|
},
|
2023-01-01 01:35:22 +00:00
|
|
|
settingsRepo: {
|
2023-01-01 01:47:16 +00:00
|
|
|
findOne: () =>
|
|
|
|
Promise.resolve({
|
|
|
|
showUnit: true,
|
|
|
|
showDate: true,
|
|
|
|
images: true,
|
|
|
|
} as Settings),
|
2023-01-01 01:35:22 +00:00
|
|
|
},
|
|
|
|
}))
|
|
|
|
|
2023-01-04 00:44:28 +00:00
|
|
|
test('renders correctly', async () => {
|
2023-01-01 01:47:16 +00:00
|
|
|
const Stack = createStackNavigator<HomePageParams>()
|
2023-06-27 03:16:59 +00:00
|
|
|
const { getByText, getAllByText } = render(
|
2023-01-01 01:35:22 +00:00
|
|
|
<MockProviders>
|
2023-01-01 01:47:16 +00:00
|
|
|
<Stack.Navigator>
|
|
|
|
<Stack.Screen
|
|
|
|
initialParams={{
|
|
|
|
set: {
|
|
|
|
created: '2023-01-01T01:45:13.238Z',
|
|
|
|
id: 1,
|
|
|
|
} as GymSet,
|
|
|
|
}}
|
2023-06-27 03:16:59 +00:00
|
|
|
name='EditSet'
|
2023-01-01 01:47:16 +00:00
|
|
|
component={EditSet}
|
|
|
|
/>
|
|
|
|
</Stack.Navigator>
|
2023-01-01 01:35:22 +00:00
|
|
|
</MockProviders>,
|
|
|
|
)
|
2023-01-01 01:47:16 +00:00
|
|
|
const title = await waitFor(() => getByText('Edit set'))
|
2023-01-01 01:35:22 +00:00
|
|
|
expect(title).toBeDefined()
|
2023-01-01 01:47:16 +00:00
|
|
|
expect(getAllByText('Name').length).toBeGreaterThan(0)
|
|
|
|
expect(getAllByText('Reps').length).toBeGreaterThan(0)
|
|
|
|
expect(getAllByText('Weight').length).toBeGreaterThan(0)
|
|
|
|
expect(getAllByText('Unit').length).toBeGreaterThan(0)
|
|
|
|
expect(getAllByText('Created').length).toBeGreaterThan(0)
|
|
|
|
expect(getAllByText('Image').length).toBeGreaterThan(0)
|
2023-01-01 01:35:22 +00:00
|
|
|
})
|
2023-01-01 05:01:38 +00:00
|
|
|
|
2023-01-04 00:44:28 +00:00
|
|
|
test('saves', async () => {
|
2023-01-01 05:01:38 +00:00
|
|
|
const Stack = createStackNavigator<HomePageParams>()
|
2023-06-27 03:16:59 +00:00
|
|
|
const { getByText, getAllByText, getByTestId } = render(
|
2023-01-01 05:01:38 +00:00
|
|
|
<MockProviders>
|
|
|
|
<Stack.Navigator>
|
2023-06-27 03:16:59 +00:00
|
|
|
<Stack.Screen name='Sets' component={SetList} />
|
2023-01-01 05:01:38 +00:00
|
|
|
<Stack.Screen
|
|
|
|
initialParams={{
|
|
|
|
set: {
|
|
|
|
created: '2023-01-01T01:45:13.238Z',
|
|
|
|
id: 1,
|
|
|
|
} as GymSet,
|
|
|
|
}}
|
2023-06-27 03:16:59 +00:00
|
|
|
name='EditSet'
|
2023-01-01 05:01:38 +00:00
|
|
|
component={EditSet}
|
|
|
|
/>
|
|
|
|
</Stack.Navigator>
|
|
|
|
</MockProviders>,
|
|
|
|
)
|
|
|
|
const add = await waitFor(() => getByTestId('add'))
|
|
|
|
fireEvent.press(add)
|
|
|
|
const names = await waitFor(() => getAllByText('Name'))
|
|
|
|
fireEvent.changeText(names[0], 'Bench Press')
|
|
|
|
const reps = await waitFor(() => getAllByText('Reps'))
|
|
|
|
fireEvent.changeText(reps[0], '10')
|
|
|
|
const weights = await waitFor(() => getAllByText('Weight'))
|
|
|
|
fireEvent.changeText(weights[0], '60')
|
2023-01-04 00:27:17 +00:00
|
|
|
const units = await waitFor(() => getAllByText('Unit'))
|
|
|
|
fireEvent.changeText(units[0], 'lb')
|
2023-01-01 05:01:38 +00:00
|
|
|
const save = getByText('Save')
|
|
|
|
fireEvent.press(save)
|
|
|
|
const home = await waitFor(() => getByText('Home'))
|
|
|
|
expect(home).toBeDefined()
|
|
|
|
})
|