From 96d68583a3292b804b0e876046e44785d7313213 Mon Sep 17 00:00:00 2001 From: regexowl Date: Tue, 14 Jan 2025 10:03:09 +0100 Subject: [PATCH] Wizard: Add kernel to Review step This adds a kernel expandable to the Review step. --- .../steps/Review/ReviewStep.tsx | 22 ++++++++++++ .../steps/Review/ReviewStepTextLists.tsx | 36 +++++++++++++++++++ .../steps/Kernel/Kernel.test.tsx | 19 ++++++++-- 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/src/Components/CreateImageWizard/steps/Review/ReviewStep.tsx b/src/Components/CreateImageWizard/steps/Review/ReviewStep.tsx index 6889ca02..1c23de0c 100644 --- a/src/Components/CreateImageWizard/steps/Review/ReviewStep.tsx +++ b/src/Components/CreateImageWizard/steps/Review/ReviewStep.tsx @@ -32,6 +32,7 @@ import { TimezoneList, LocaleList, HostnameList, + KernelList, } from './ReviewStepTextLists'; import isRhel from '../../../../../src/Utilities/isRhel'; @@ -83,12 +84,14 @@ const Review = ({ snapshottingEnabled }: { snapshottingEnabled: boolean }) => { const [isExpandedTimezone, setIsExpandedTimezone] = useState(true); const [isExpandedLocale, setIsExpandedLocale] = useState(true); const [isExpandedHostname, setIsExpandedHostname] = useState(true); + const [isExpandedKernel, setIsExpandedKernel] = useState(true); const [isExpandableFirstBoot, setIsExpandedFirstBoot] = useState(true); const [isExpandedUsers, setIsExpandedUsers] = useState(true); const isTimezoneEnabled = useFlag('image-builder.timezone.enabled'); const isLocaleEnabled = useFlag('image-builder.locale.enabled'); const isHostnameEnabled = useFlag('image-builder.hostname.enabled'); + const isKernelEnabled = useFlag('image-builder.kernel.enabled'); const onToggleImageOutput = (isExpandedImageOutput: boolean) => setIsExpandedImageOutput(isExpandedImageOutput); @@ -112,6 +115,8 @@ const Review = ({ snapshottingEnabled }: { snapshottingEnabled: boolean }) => { setIsExpandedLocale(isExpandedLocale); const onToggleHostname = (isExpandedHostname: boolean) => setIsExpandedHostname(isExpandedHostname); + const onToggleKernel = (isExpandedKernel: boolean) => + setIsExpandedKernel(isExpandedKernel); const onToggleFirstBoot = (isExpandableFirstBoot: boolean) => setIsExpandedFirstBoot(isExpandableFirstBoot); const onToggleUsers = (isExpandedUsers: boolean) => @@ -398,6 +403,23 @@ const Review = ({ snapshottingEnabled }: { snapshottingEnabled: boolean }) => { )} + {isKernelEnabled && ( + + onToggleKernel(isExpandedKernel) + } + isExpanded={isExpandedKernel} + isIndented + data-testid="kernel-expandable" + > + + + )} {isFirstBootEnabled && ( { ); }; +export const KernelList = () => { + const kernel = useAppSelector(selectKernel); + + return ( + + + + Name + + + {kernel.name ? kernel.name : 'None'} + + + Append + + + + + {kernel.append.length > 0 ? kernel.append.join(' ') : 'None'} + + + + + + ); +}; + export const FirstBootList = () => { const isFirstbootEnabled = !!useAppSelector(selectFirstBootScript); diff --git a/src/test/Components/CreateImageWizard/steps/Kernel/Kernel.test.tsx b/src/test/Components/CreateImageWizard/steps/Kernel/Kernel.test.tsx index 262e4c82..ca71dc77 100644 --- a/src/test/Components/CreateImageWizard/steps/Kernel/Kernel.test.tsx +++ b/src/test/Components/CreateImageWizard/steps/Kernel/Kernel.test.tsx @@ -1,5 +1,5 @@ import type { Router as RemixRouter } from '@remix-run/router'; -import { screen, waitFor } from '@testing-library/react'; +import { screen, waitFor, within } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import { CREATE_BLUEPRINT } from '../../../../../constants'; @@ -140,6 +140,13 @@ const selectProfile = async () => { await waitFor(() => user.click(cis1Profile)); }; +const clickRevisitButton = async () => { + const user = userEvent.setup(); + const expandable = await screen.findByTestId('kernel-expandable'); + const revisitButton = await within(expandable).findByTestId('revisit-kernel'); + await waitFor(() => user.click(revisitButton)); +}; + describe('Step Kernel', () => { beforeEach(() => { vi.clearAllMocks(); @@ -219,6 +226,15 @@ describe('Step Kernel', () => { screen.queryByRole('button', { name: /close audit=1/i }) ).not.toBeInTheDocument(); }); + + test('revisit step button on Review works', async () => { + await renderCreateMode(); + await goToKernelStep(); + await selectKernelName('kernel'); + await goToReviewStep(); + await clickRevisitButton(); + await screen.findByRole('heading', { name: /Kernel/ }); + }); }); describe('Kernel request generated correctly', () => { @@ -333,5 +349,4 @@ describe('Kernel request generated correctly', () => { }); }); -// TO DO 'Kernel step' -> 'revisit step button on Review works' // TO DO 'Kernel edit mode'