import { QueryClientProvider } from "@tanstack/react-query"; import { render, screen } from '@testing-library/react'; import { RoutineCard } from "@/components/Dashboard/RoutineCard"; import { useActiveRoutineQuery } from "@/components/Routines"; import { testQueryClient } from "@/tests/queryClient"; import { testRoutine1 } from "@/tests/workoutRoutinesTestData"; import type { Mock } from 'vitest'; vi.mock("@/components/Routines/queries"); vi.useFakeTimers(); describe("test the RoutineCard component", () => { describe("Routines are available", () => { beforeEach(() => { (useActiveRoutineQuery as Mock).mockImplementation(() => ({ isSuccess: true, isLoading: false, data: testRoutine1 })); }); test('renders the current routine correctly', async () => { // Act render( ); // Assert expect(useActiveRoutineQuery).toHaveBeenCalled(); expect(screen.getByText('Test routine 1')).toBeInTheDocument(); expect(screen.getByText('Every day is leg day 🦵🏻')).toBeInTheDocument(); }); }); describe("No routines available", () => { beforeEach(() => { (useActiveRoutineQuery as Mock).mockImplementation(() => ({ isSuccess: true, isLoading: false, data: null })); }); test('renders the call to action correctly', async () => { // Act render( ); // Assert expect(useActiveRoutineQuery).toHaveBeenCalled(); expect(screen.getByText('nothingHereYet')).toBeInTheDocument(); expect(screen.getByText('nothingHereYetAction')).toBeInTheDocument(); expect(screen.getByText('add')).toBeInTheDocument(); }); }); });