From 21c1e22aee219e8557cc121d0f64b369914bb710 Mon Sep 17 00:00:00 2001 From: Adriano Interaminense Date: Tue, 15 Aug 2023 15:47:14 -0300 Subject: [PATCH] LRAC-14385 Create unit test --- .../pages/ExperimentOverviewPage.tsx | 1 + .../__tests__/ExperimentOverviewPage.tsx | 71 +++++++++++++++++++ .../src/main/js/test/graphql-data.js | 24 +++++++ 3 files changed, 96 insertions(+) create mode 100644 modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/__tests__/ExperimentOverviewPage.tsx diff --git a/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/ExperimentOverviewPage.tsx b/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/ExperimentOverviewPage.tsx index 8a41c6ceaeca2e..468e8d4adfdbe1 100644 --- a/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/ExperimentOverviewPage.tsx +++ b/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/ExperimentOverviewPage.tsx @@ -108,6 +108,7 @@ const ExperimentOverviewPage: React.FC = ({ const {selectedChannel} = useChannelContext(); useAddRefetch(refetch); + return ( {({experiment}) => diff --git a/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/__tests__/ExperimentOverviewPage.tsx b/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/__tests__/ExperimentOverviewPage.tsx new file mode 100644 index 00000000000000..62b0236b32cfd0 --- /dev/null +++ b/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/experiments/pages/__tests__/ExperimentOverviewPage.tsx @@ -0,0 +1,71 @@ +import client from 'shared/apollo/client'; +import ExperimentOverviewPage from '../ExperimentOverviewPage'; +import mockStore from 'test/mock-store'; +import React from 'react'; +import {ApolloProvider} from '@apollo/react-hooks'; +import {MemoryRouter, Route} from 'react-router-dom'; +import {MockedProvider} from '@apollo/react-testing'; +import {mockExperimentRootReq, mockTimeRangeReq} from 'test/graphql-data'; +import {Provider} from 'react-redux'; +import {render} from '@testing-library/react'; +import {Routes} from 'shared/util/router'; +import {waitForLoadingToBeRemoved} from 'test/helpers'; + +jest.unmock('react-dom'); + +const WrappedComponent = ({status}) => ( + + + + + + + + + + + +); + +describe('ExperimentOverviewPage', () => { + it('renders review and delete button to experiment to status DRAFT', async () => { + const {container, getByRole} = render( + + ); + + await waitForLoadingToBeRemoved(container); + + const reviewButton = getByRole('link', { + name: /review/i + }) as HTMLAnchorElement; + const deleteButton = getByRole('link', { + name: /delete/i + }) as HTMLAnchorElement; + + expect(reviewButton).toBeInTheDocument(); + expect(reviewButton.href).toEqual( + 'https://www.beryl.com/experiment-test?segmentsExperimentKey=123&segmentsExperimentAction=reviewAndRun' + ); + + expect(deleteButton).toBeInTheDocument(); + expect(deleteButton.href).toEqual( + 'https://www.beryl.com/experiment-test?segmentsExperimentKey=123&segmentsExperimentAction=delete' + ); + }); +}); diff --git a/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/test/graphql-data.js b/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/test/graphql-data.js index d7e18f83a59475..c29b09553b9a07 100644 --- a/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/test/graphql-data.js +++ b/modules/dxp/apps/osb/osb-faro/osb-faro-web/src/main/js/test/graphql-data.js @@ -37,6 +37,7 @@ import { import {EventTypes} from 'event-analysis/utils/types'; import { EXPERIMENT_QUERY, + EXPERIMENT_ROOT_QUERY, EXPERIMENT_SESSION_HISTOGRAM_QUERY, EXPERIMENT_SESSION_VARIANTS_HISTOGRAM_QUERY, EXPERIMENT_VARIANTS_HISTOGRAM_QUERY @@ -263,6 +264,29 @@ export function mockExperimentReq() { }; } +export function mockExperimentRootReq({status}) { + return { + request: { + query: EXPERIMENT_ROOT_QUERY, + variables: { + experimentId: '123' + } + }, + result: { + data: { + experiment: { + __typename: 'Experiment', + channelId: '2000', + id: '123', + name: 'Experiment Test', + pageURL: 'https://www.beryl.com/experiment-test', + status + } + } + } + }; +} + export function mockBag({items, itemTypeName, name, typeName}) { return { [name]: {