From 8246155c13b48dab8a1adb76f5455f1bf4eb16e3 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Sun, 1 Jan 2023 15:06:42 +1300 Subject: [PATCH] Test start plan + edit plan --- tests/EditPlan.test.tsx | 51 +++++++++++++++++++++++++++++++ tests/StartPlan.test.tsx | 66 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 tests/EditPlan.test.tsx create mode 100644 tests/StartPlan.test.tsx diff --git a/tests/EditPlan.test.tsx b/tests/EditPlan.test.tsx new file mode 100644 index 0000000..c8b0f1f --- /dev/null +++ b/tests/EditPlan.test.tsx @@ -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() + const {getByText, getAllByText} = render( + + + + + , + ) + 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) +}) diff --git a/tests/StartPlan.test.tsx b/tests/StartPlan.test.tsx new file mode 100644 index 0000000..cdeb448 --- /dev/null +++ b/tests/StartPlan.test.tsx @@ -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() + 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) +})