import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { render, screen } from '@testing-library/react';
import { MeasurementCard } from "@/components/Dashboard/MeasurementCard";
import { useMeasurementsCategoryQuery } from "@/components/Measurements";
import { TEST_MEASUREMENT_CATEGORY_1, TEST_MEASUREMENT_CATEGORY_2 } from "@/tests/measurementsTestData";
import type { Mock } from 'vitest';
vi.mock("@/components/Measurements/queries");
vi.useFakeTimers();
const queryClient = new QueryClient();
describe("smoke test the MeasurementCard component", () => {
describe("Measurements available", () => {
beforeEach(() => {
(useMeasurementsCategoryQuery as Mock).mockImplementation(() => ({
isSuccess: true,
isLoading: false,
data: [
TEST_MEASUREMENT_CATEGORY_1,
TEST_MEASUREMENT_CATEGORY_2
]
}));
});
test('renders the current categories correctly', async () => {
// Act
render(
);
// Assert
expect(useMeasurementsCategoryQuery).toHaveBeenCalled();
expect(screen.getAllByText('Biceps').length).toBeGreaterThan(0);
expect(screen.getAllByText('11 %').length).toBeGreaterThan(0);
expect(screen.getAllByText('22 %').length).toBeGreaterThan(0);
expect(screen.getAllByText('33 %').length).toBeGreaterThan(0);
expect(screen.getAllByText('44 %').length).toBeGreaterThan(0);
});
});
describe("No data available", () => {
beforeEach(() => {
(useMeasurementsCategoryQuery as Mock).mockImplementation(() => ({
isSuccess: true,
isLoading: false,
data: null
}));
});
test('renders the overview correctly', async () => {
// Act
render(
);
// Assert
expect(useMeasurementsCategoryQuery).toHaveBeenCalled();
expect(screen.getByText('nothingHereYet')).toBeInTheDocument();
expect(screen.getByText('nothingHereYetAction')).toBeInTheDocument();
expect(screen.getByText('add')).toBeInTheDocument();
});
});
});