From 4c1c54e834bb2dc0fcdc03494040b9f60b7d2bc8 Mon Sep 17 00:00:00 2001 From: bartoval Date: Tue, 7 Nov 2023 10:43:42 +0100 Subject: [PATCH] test(Metrics): :white_check_mark: Request and response unit test empty case --- src/pages/Topology/services/index.ts | 2 +- .../shared/Metrics/__tests__/Request.spec.tsx | 27 +++++++ .../Metrics/__tests__/Response.spec.tsx | 79 +++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 src/pages/shared/Metrics/__tests__/Response.spec.tsx diff --git a/src/pages/Topology/services/index.ts b/src/pages/Topology/services/index.ts index 86c0b4394..2e15748d0 100644 --- a/src/pages/Topology/services/index.ts +++ b/src/pages/Topology/services/index.ts @@ -37,7 +37,7 @@ const shape = { const platformsMap: Record = { kubernetes: kubernetesIcon, - pdoman: podmanIcon + podman: podmanIcon }; export const TopologyController = { diff --git a/src/pages/shared/Metrics/__tests__/Request.spec.tsx b/src/pages/shared/Metrics/__tests__/Request.spec.tsx index 50fbde98e..b4e4e4234 100644 --- a/src/pages/shared/Metrics/__tests__/Request.spec.tsx +++ b/src/pages/shared/Metrics/__tests__/Request.spec.tsx @@ -3,6 +3,7 @@ import { Suspense } from 'react'; import { render, screen, waitForElementToBeRemoved } from '@testing-library/react'; import { Server } from 'miragejs'; +import * as PrometheusAPIModule from '@API/Prometheus.api'; import { ProcessResponse } from '@API/REST.interfaces'; import { waitForElementToBeRemovedTimeout } from '@config/config'; import { getTestsIds } from '@config/testIds'; @@ -49,4 +50,30 @@ describe('Request component', () => { expect(screen.getByText(MetricsLabels.RequestsTitle)).toBeInTheDocument(); }); + + it('should not render the Request section', async () => { + jest + .spyOn(PrometheusAPIModule.PrometheusApi, 'fetchRequestRateByMethodInInTimeRange') + .mockImplementation(jest.fn().mockReturnValue({ data: null })); + + render( + + }> + + + + ); + + await waitForElementToBeRemoved(() => screen.queryByTestId(getTestsIds.loadingView()), { + timeout: waitForElementToBeRemovedTimeout + }); + + expect(screen.queryByText(MetricsLabels.RequestsTitle)).not.toBeInTheDocument(); + }); }); diff --git a/src/pages/shared/Metrics/__tests__/Response.spec.tsx b/src/pages/shared/Metrics/__tests__/Response.spec.tsx new file mode 100644 index 000000000..36d1bfaaf --- /dev/null +++ b/src/pages/shared/Metrics/__tests__/Response.spec.tsx @@ -0,0 +1,79 @@ +import { Suspense } from 'react'; + +import { render, screen, waitForElementToBeRemoved } from '@testing-library/react'; +import { Server } from 'miragejs'; + +import * as PrometheusAPIModule from '@API/Prometheus.api'; +import { ProcessResponse } from '@API/REST.interfaces'; +import { waitForElementToBeRemovedTimeout } from '@config/config'; +import { getTestsIds } from '@config/testIds'; +import { Wrapper } from '@core/components/Wrapper'; +import processesData from '@mocks/data/PROCESSES.json'; +import { loadMockServer } from '@mocks/server'; +import LoadingPage from '@pages/shared/Loading'; + +import Response from '../components/Response'; +import { MetricsLabels } from '../Metrics.enum'; + +const processResult = processesData.results[0] as ProcessResponse; + +describe('Response component', () => { + let server: Server; + beforeEach(() => { + server = loadMockServer() as Server; + server.logging = false; + }); + + afterEach(() => { + server.shutdown(); + jest.clearAllMocks(); + }); + + it('should render the Reponse section of the metric', async () => { + render( + + }> + + + + ); + + await waitForElementToBeRemoved(() => screen.queryByTestId(getTestsIds.loadingView()), { + timeout: waitForElementToBeRemovedTimeout + }); + + expect(screen.getByText(MetricsLabels.ResposeTitle)).toBeInTheDocument(); + }); + + it('should not render the Response section', async () => { + jest + .spyOn(PrometheusAPIModule.PrometheusApi, 'fetchResponseCountsByPartialCodeInTimeRange') + .mockImplementation(jest.fn().mockReturnValue({ data: null })); + + render( + + }> + + + + ); + + await waitForElementToBeRemoved(() => screen.queryByTestId(getTestsIds.loadingView()), { + timeout: waitForElementToBeRemovedTimeout + }); + + expect(screen.queryByText(MetricsLabels.ResposeTitle)).not.toBeInTheDocument(); + }); +});