From 345dd7a978f737e3b88ca0bb80648c839fbfebf2 Mon Sep 17 00:00:00 2001 From: sjaanus Date: Mon, 13 May 2024 14:36:52 +0300 Subject: [PATCH] feat: mark completed tests --- .../MarkCompletedDialogue.test.tsx | 72 +++++++++++++++++++ .../MarkCompletedDialogue.tsx | 2 +- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.test.tsx diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.test.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.test.tsx new file mode 100644 index 0000000000..54a8e17ca2 --- /dev/null +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.test.tsx @@ -0,0 +1,72 @@ +import { screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { vi } from 'vitest'; +import { MarkCompletedDialogue } from './MarkCompletedDialogue'; +import { render } from 'utils/testRenderer'; +import { + testServerRoute, + testServerSetup, +} from '../../../../../utils/testServer'; + +const defaultProps = { + isOpen: true, + setIsOpen: vi.fn(), + onComplete: vi.fn(), + projectId: 'project1', + featureId: 'feature1', +}; + +const server = testServerSetup(); + +const setup = (props = defaultProps) => { + testServerRoute( + server, + `/api/admin/projects/${defaultProps.projectId}/features/${defaultProps.featureId}/parent-variants`, + ['fard'], + ); + + render(); +}; + +test('dialog opens correctly and can be closed', async () => { + const { setIsOpen } = defaultProps; + setup(); + + expect(screen.getByText('Mark completed')).toBeInTheDocument(); + userEvent.click(screen.getByText('Cancel')); + expect(setIsOpen).toHaveBeenCalledWith(false); +}); + +test('selecting options updates state appropriately', async () => { + setup(); + + const radioKept = screen.getByLabelText('We decided to keep the feature'); + userEvent.click(radioKept); + expect(radioKept).toBeChecked(); + + const radioDiscarded = screen.getByLabelText( + 'We decided to discard the feature', + ); + userEvent.click(radioDiscarded); + expect(radioDiscarded).toBeChecked(); + + const radioVariant = screen.getByLabelText( + 'We decided to keep the feature variant', + ); + userEvent.click(radioVariant); + expect(radioVariant).toBeChecked(); +}); + +test('variant selection is shown when appropriate', async () => { + setup(); + + userEvent.click( + screen.getByLabelText('We decided to keep the feature variant'), + ); + + expect( + screen.getByText( + 'Choose to specify which feature variant will be kept', + ), + ).toBeInTheDocument(); +}); diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.tsx index 297392b92b..a5e878f1e2 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureLifecycle/MarkCompletedDialogue.tsx @@ -44,7 +44,7 @@ export const MarkCompletedDialogue = ({ return ( { setIsOpen(false); }}