import { render, screen } from '@testing-library/react';
import userEvent from "@testing-library/user-event";
import { useDeleteRoutineLogQuery, useEditRoutineLogQuery } from '@/components/Routines/queries';
import { ExerciseLog } from "@/components/Routines/widgets/LogWidgets";
import { testExerciseBenchPress } from "@/tests/exerciseTestdata";
import { testWorkoutLogs } from "@/tests/workoutLogsRoutinesTestData";
import type { Mock } from 'vitest';
vi.mock('@/components/Routines/queries', () => ({
useDeleteRoutineLogQuery: vi.fn(),
useEditRoutineLogQuery: vi.fn()
}));
describe('ExerciseLog', () => {
let mockDeleteMutate: Mock;
let mockEditMutate: Mock;
beforeEach(() => {
vi.clearAllMocks();
mockDeleteMutate = vi.fn();
mockEditMutate = vi.fn();
(useDeleteRoutineLogQuery as Mock).mockReturnValue({ mutate: mockDeleteMutate });
(useEditRoutineLogQuery as Mock).mockReturnValue({ mutate: mockEditMutate });
});
afterEach(() => {
vi.restoreAllMocks();
});
const mockRoutineId = 123;
const user = userEvent.setup();
test('renders the DataGrid table correctly', () => {
render(
);
expect(screen.getByRole('grid')).toBeInTheDocument();
expect(screen.getByText('Benchpress')).toBeInTheDocument();
expect(mockDeleteMutate).not.toHaveBeenCalled();
expect(mockEditMutate).not.toHaveBeenCalled();
});
test('calls deleteLogQuery when DeleteIcon is clicked', async () => {
render(
);
await user.click(screen.getAllByRole('menuitem', { name: /delete/i })[0]);
expect(mockDeleteMutate).toHaveBeenCalledWith('aaaaaaaa-aaaa-aaaa-aaaa-000000000005');
expect(mockEditMutate).not.toHaveBeenCalled();
});
test('calls editLogQuery when SaveIcon is clicked', async () => {
render(
);
await user.click(screen.getAllByRole('menuitem', { name: /edit/i })[0]);
await user.click(screen.getAllByRole('menuitem', { name: /save/i })[0]);
expect(mockDeleteMutate).not.toHaveBeenCalled();
expect(mockEditMutate).toHaveBeenCalled();
});
});