import { createStackNavigator } from '@react-navigation/stack' import React from 'react' import 'react-native' import { fireEvent, 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('../best.service.ts', () => ({ getBestSet: () => Promise.resolve({}), })) jest.mock('../db.ts', () => ({ getNow: () => Promise.resolve(new Date().toISOString()), setRepo: { findOne: () => Promise.resolve({}), save: () => 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 }, ]) ), }, }, })) test('renders correctly', async () => { const Stack = createStackNavigator() const { getByText, getAllByText } = render( , ) 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) }) test('saves', async () => { const Stack = createStackNavigator() const { getByText } = render( , ) const save = await waitFor(() => getByText('Save')) expect(save).toBeDefined() fireEvent.press(save) const save2 = await waitFor(() => getByText('Save')) expect(save2).toBeDefined() })