From a844dcf20a5d61ad1a81234e6a705ee5373fd2ca Mon Sep 17 00:00:00 2001 From: Jason Lin <98117700+JasonLin0991@users.noreply.github.com> Date: Mon, 18 Nov 2024 14:54:12 -0500 Subject: [PATCH] Remove Q&A by rates flag (#2938) --- .../src/common-code/featureFlags/flags.ts | 7 -- .../src/common-code/featureFlags/flags.ts | 7 -- services/app-web/src/pages/App/AppRoutes.tsx | 79 ++++++------------- .../ContractQuestionResponse.test.tsx | 27 ------- .../RateQuestionResponse.test.tsx | 30 ------- .../pages/RateSummary/RateSummary.test.tsx | 27 ------- .../src/pages/RateSummary/RateSummary.tsx | 25 ++---- .../RateSummarySideNav.test.tsx | 9 --- .../SubmissionSideNav.test.tsx | 6 -- .../SubmissionSideNav/SubmissionSideNav.tsx | 12 +-- .../cypress/support/launchDarklyCommands.ts | 1 - 11 files changed, 33 insertions(+), 197 deletions(-) diff --git a/services/app-api/src/common-code/featureFlags/flags.ts b/services/app-api/src/common-code/featureFlags/flags.ts index f1b5128ca9..e7bc435a98 100644 --- a/services/app-api/src/common-code/featureFlags/flags.ts +++ b/services/app-api/src/common-code/featureFlags/flags.ts @@ -25,13 +25,6 @@ const featureFlags = { flag: 'rate-edit-unlock', defaultValue: false, }, - /** - * Enables Q&A by rates feature - */ - QA_BY_RATES: { - flag: 'qa-by-rates', - defaultValue: false, - }, /** * Enables submission approvals, withdraws, and reviews features */ diff --git a/services/app-web/src/common-code/featureFlags/flags.ts b/services/app-web/src/common-code/featureFlags/flags.ts index b4dddc40c4..745ccb8939 100644 --- a/services/app-web/src/common-code/featureFlags/flags.ts +++ b/services/app-web/src/common-code/featureFlags/flags.ts @@ -25,13 +25,6 @@ const featureFlags = { flag: 'rate-edit-unlock', defaultValue: false, }, - /** - * Enables Q&A by rates feature - */ - QA_BY_RATES: { - flag: 'qa-by-rates', - defaultValue: false - }, /** * Enables submission approvals, withdraws, and reviews features */ diff --git a/services/app-web/src/pages/App/AppRoutes.tsx b/services/app-web/src/pages/App/AppRoutes.tsx index 9ee0a2c29b..9e885108dd 100644 --- a/services/app-web/src/pages/App/AppRoutes.tsx +++ b/services/app-web/src/pages/App/AppRoutes.tsx @@ -92,11 +92,6 @@ const StateUserRoutes = ({ featureFlags.RATE_EDIT_UNLOCK.defaultValue ) - const showQAbyRates: boolean = ldClient?.variation( - featureFlags.QA_BY_RATES.flag, - featureFlags.QA_BY_RATES.defaultValue - ) - return ( @@ -156,22 +151,16 @@ const StateUserRoutes = ({ path={RoutesRecord.SUBMISSIONS_EDIT_TOP_LEVEL} element={} /> - {showQAbyRates && ( - <> - } - /> - } - /> - - )} + } + /> + } + /> stageName?: string }): React.ReactElement => { - const ldClient = useLDClient() - const showQAbyRates: boolean = ldClient?.variation( - featureFlags.QA_BY_RATES.flag, - featureFlags.QA_BY_RATES.defaultValue - ) return ( @@ -246,37 +230,26 @@ const CMSUserRoutes = ({ /> - {showQAbyRates ? ( - <> - }> - } - /> - } - /> - } - /> - {/*This route will cause the RateSummarySideNav to redirect to rate summary Q&A page*/} - - - - ) : ( + }> } /> - )} + } + /> + } + /> + {/*This route will cause the RateSummarySideNav to redirect to rate summary Q&A page*/} + + { routerProvider: { route: '/submissions/test-contract-id/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, } ) @@ -183,9 +180,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: '/submissions/15/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -219,9 +213,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: '/submissions/15/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -295,9 +286,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: `/submissions/test-contract-id/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -338,9 +326,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: `/submissions/test-contract-id/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -450,9 +435,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: `/submissions/test-contract-id/question-and-answers?submit=question`, }, - featureFlags: { - 'qa-by-rates': true, - }, } ) @@ -479,9 +461,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: `/submissions/not-real/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -504,9 +483,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: `/submissions/${contract.id}/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -531,9 +507,6 @@ describe('ContractQuestionResponse', () => { routerProvider: { route: `/submissions/${contract.id}/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { diff --git a/services/app-web/src/pages/QuestionResponse/QuestionResponseSummary/RateQuestionResponse.test.tsx b/services/app-web/src/pages/QuestionResponse/QuestionResponseSummary/RateQuestionResponse.test.tsx index d33909f5ae..a3eabe89f5 100644 --- a/services/app-web/src/pages/QuestionResponse/QuestionResponseSummary/RateQuestionResponse.test.tsx +++ b/services/app-web/src/pages/QuestionResponse/QuestionResponseSummary/RateQuestionResponse.test.tsx @@ -87,9 +87,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: '/submissions/15/rates/second-rate/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, }) // Wait for sidebar nav to exist. @@ -131,9 +128,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: '/submissions/15/rates/test-rate-id/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, } ) @@ -251,9 +245,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: '/submissions/15/rates/second-rate/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -287,9 +278,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: '/submissions/15/rates/second-rate/question-and-answers', }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -353,9 +341,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: `/rates/test-rate-id/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -389,9 +374,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: `/rates/test-rate-id/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -492,9 +474,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: `/rates/test-rate-id/question-and-answers?submit=question`, }, - featureFlags: { - 'qa-by-rates': true, - }, } ) @@ -521,9 +500,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: `/rates/not-real/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -546,9 +522,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: `/rates/${rate.id}/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -573,9 +546,6 @@ describe('RateQuestionResponse', () => { routerProvider: { route: `/rates/${rate.id}/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { diff --git a/services/app-web/src/pages/RateSummary/RateSummary.test.tsx b/services/app-web/src/pages/RateSummary/RateSummary.test.tsx index 52efd724eb..017d4dd74f 100644 --- a/services/app-web/src/pages/RateSummary/RateSummary.test.tsx +++ b/services/app-web/src/pages/RateSummary/RateSummary.test.tsx @@ -149,33 +149,6 @@ describe('RateSummary', () => { expect(error).toHaveBeenCalled() }) }) - - it('renders back to dashboard link for CMS users', async () => { - renderWithProviders(wrapInRoutes(), { - apolloProvider: { - mocks: [ - fetchCurrentUserMock({ - user: mockUser(), - statusCode: 200, - }), - fetchRateMockSuccess({ id: '7a' }), - ], - }, - routerProvider: { - route: '/rates/7a', - }, - }) - - const backLink = await screen.findByRole('link', { - name: /Back to dashboard/, - }) - expect(backLink).toBeInTheDocument() - - expect(backLink).toHaveAttribute( - 'href', - '/dashboard/rate-reviews' - ) - }) } ) diff --git a/services/app-web/src/pages/RateSummary/RateSummary.tsx b/services/app-web/src/pages/RateSummary/RateSummary.tsx index fc8b1d0096..62c42b150a 100644 --- a/services/app-web/src/pages/RateSummary/RateSummary.tsx +++ b/services/app-web/src/pages/RateSummary/RateSummary.tsx @@ -12,8 +12,6 @@ import { useAuth } from '../../contexts/AuthContext' import { ErrorForbiddenPage } from '../Errors/ErrorForbiddenPage' import { Error404 } from '../Errors/Error404Page' import { RateWithdrawnBanner } from '../../components/Banner' -import { useLDClient } from 'launchdarkly-react-client-sdk' -import { featureFlags } from '../../common-code/featureFlags' export const RateSummary = (): React.ReactElement => { // Page level state @@ -23,16 +21,12 @@ export const RateSummary = (): React.ReactElement => { const [rateName, setRateName] = useState(undefined) const { id } = useParams() as { id: string } - const ldClient = useLDClient() - const showQAbyRates: boolean = ldClient?.variation( - featureFlags.QA_BY_RATES.flag, - featureFlags.QA_BY_RATES.defaultValue - ) - useEffect(() => { updateHeading({ customHeading: rateName }) }, [rateName, updateHeading]) + const isStateUser = loggedInUser?.role === 'STATE_USER' + const { data, loading, error } = useFetchRateQuery({ variables: { input: { @@ -81,11 +75,7 @@ export const RateSummary = (): React.ReactElement => { } return ( -
+
{ className={styles.banner} /> )} - {!showQAbyRates && ( + {isStateUser && ( + // state user does not see the RateSummarySideNav which has its own back button.
diff --git a/services/app-web/src/pages/SubmissionSideNav/RateSummarySideNav.test.tsx b/services/app-web/src/pages/SubmissionSideNav/RateSummarySideNav.test.tsx index 57a2820fa8..3e156ace72 100644 --- a/services/app-web/src/pages/SubmissionSideNav/RateSummarySideNav.test.tsx +++ b/services/app-web/src/pages/SubmissionSideNav/RateSummarySideNav.test.tsx @@ -43,9 +43,6 @@ describe('RateSummarySideNav', () => { routerProvider: { route: `/rates/${rate.id}`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -98,9 +95,6 @@ describe('RateSummarySideNav', () => { routerProvider: { route: `/rates/${rate.id}`, }, - featureFlags: { - 'qa-by-rates': true, - }, }) await waitFor(() => { @@ -140,9 +134,6 @@ describe('RateSummarySideNav', () => { routerProvider: { route: `/submissions/some-contract-id/rates/${rate.id}/question-and-answers`, }, - featureFlags: { - 'qa-by-rates': true, - }, } ) diff --git a/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.test.tsx b/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.test.tsx index 1164a05835..25e8d6c50e 100644 --- a/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.test.tsx +++ b/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.test.tsx @@ -56,9 +56,6 @@ describe('SubmissionSideNav', () => { routerProvider: { route: '/submissions/15', }, - featureFlags: { - 'qa-by-rates': true, - }, }) // Wait for sidebar nav and sections to exist. Addresses test flakes to wait for these up front. @@ -159,9 +156,6 @@ describe('SubmissionSideNav', () => { routerProvider: { route: '/submissions/15', }, - featureFlags: { - 'qa-by-rates': true, - }, }) // Wait for sidebar nav and sections to exist. Addresses test flakes to wait for these up front. diff --git a/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.tsx b/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.tsx index b920d56f0e..52ce86bc68 100644 --- a/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.tsx +++ b/services/app-web/src/pages/SubmissionSideNav/SubmissionSideNav.tsx @@ -21,8 +21,6 @@ import { recordJSException } from '../../otelHelpers' import { GenericErrorPage } from '../Errors/GenericErrorPage' import { Error404 } from '../Errors/Error404Page' import { Contract, User } from '../../gen/gqlClient' -import { useLDClient } from 'launchdarkly-react-client-sdk' -import { featureFlags } from '../../common-code/featureFlags' import { isUnlockedOrDraft, shouldUseFormPageStyles } from './helpers' export type SideNavOutletContextType = { @@ -44,12 +42,6 @@ export const SubmissionSideNav = () => { const { pathname } = useLocation() const routeName = getRouteName(pathname) - const ldClient = useLDClient() - const showQAbyRates: boolean = ldClient?.variation( - featureFlags.QA_BY_RATES.flag, - featureFlags.QA_BY_RATES.defaultValue - ) - const isSelectedLink = (route: string | string[]): string => { //We pass an array of the form routes in order to display the sideNav on all of the pages if (typeof route != 'string') { @@ -252,9 +244,7 @@ export const SubmissionSideNav = () => { > Contract questions , - ...(showQAbyRates && isStateUser - ? generateRateLinks() - : []), + ...(isStateUser ? generateRateLinks() : []), ]} />
diff --git a/services/cypress/support/launchDarklyCommands.ts b/services/cypress/support/launchDarklyCommands.ts index 958fa1043a..a0016f06c2 100644 --- a/services/cypress/support/launchDarklyCommands.ts +++ b/services/cypress/support/launchDarklyCommands.ts @@ -98,7 +98,6 @@ Cypress.Commands.add('stubFeatureFlags', () => { cy.interceptFeatureFlags({ '438-attestation': true, 'hide-supporting-docs-page': true, - 'qa-by-rates': true, }) })