Wizard: Swap kernel name input with drop down

This replaces the kernel name input with a static drop down populated with valid values.
This commit is contained in:
regexowl 2024-12-18 10:48:47 +01:00 committed by Klara Simickova
parent c121e5caba
commit 1fce574146
4 changed files with 92 additions and 77 deletions

View file

@ -8,7 +8,6 @@ import {
clickBack,
clickNext,
enterBlueprintName,
getNextButton,
interceptBlueprintRequest,
openAndDismissSaveAndBuildModal,
verifyCancelButton,
@ -38,26 +37,20 @@ const goToKernelStep = async () => {
};
const goToReviewStep = async () => {
await clickNext(); // Firewall
await clickNext(); // First boot script
await clickNext(); // Details
await enterBlueprintName();
await clickNext(); // Review
};
const enterKernelName = async (kernelName: string) => {
const selectKernelName = async (kernelName: string) => {
const user = userEvent.setup();
const kernelNameInput = await screen.findByPlaceholderText(
/Add a kernel name/i
);
await waitFor(() => user.type(kernelNameInput, kernelName));
};
const kernelNameDropdown = await screen.findByTestId('kernel-name-dropdown');
await waitFor(() => user.click(kernelNameDropdown));
const clearKernelName = async () => {
const user = userEvent.setup();
const kernelNameInput = await screen.findByPlaceholderText(
/Add a kernel name/i
);
await waitFor(() => user.clear(kernelNameInput));
const kernelOption = await screen.findByText(kernelName);
await waitFor(() => user.click(kernelOption));
};
describe('Step Kernel', () => {
@ -87,27 +80,6 @@ describe('Step Kernel', () => {
await goToKernelStep();
await verifyCancelButton(router);
});
test('validation works', async () => {
await renderCreateMode();
await goToKernelStep();
// with empty kernel name input
const nextButton = await getNextButton();
expect(nextButton).toBeEnabled();
// invalid name
await enterKernelName('INVALID/NAME');
expect(nextButton).toBeDisabled();
await clickNext(); // dummy click to blur and render error (doesn't render when pristine)
await screen.findByText(/Invalid kernel name/);
// valid name
await clearKernelName();
await enterKernelName('valid-kernel-name');
expect(nextButton).toBeEnabled();
expect(screen.queryByText(/Invalid kernel name/)).not.toBeInTheDocument();
});
});
describe('Kernel request generated correctly', () => {
@ -115,10 +87,10 @@ describe('Kernel request generated correctly', () => {
vi.clearAllMocks();
});
test('with valid kernel name', async () => {
test('with kernel name', async () => {
await renderCreateMode();
await goToKernelStep();
await enterKernelName('kernel-name');
await selectKernelName('kernel-debug');
await goToReviewStep();
// informational modal pops up in the first test only as it's tied
// to a 'imageBuilder.saveAndBuildModalSeen' variable in localStorage
@ -129,7 +101,7 @@ describe('Kernel request generated correctly', () => {
...blueprintRequest,
customizations: {
kernel: {
name: 'kernel-name',
name: 'kernel-debug',
},
},
};
@ -138,6 +110,23 @@ describe('Kernel request generated correctly', () => {
expect(receivedRequest).toEqual(expectedRequest);
});
});
test('when unselecting kernel name', async () => {
await renderCreateMode();
await goToKernelStep();
await selectKernelName('kernel-debug');
await selectKernelName('Default kernel package');
await goToReviewStep();
const receivedRequest = await interceptBlueprintRequest(CREATE_BLUEPRINT);
const expectedRequest = {
...blueprintRequest,
};
await waitFor(() => {
expect(receivedRequest).toEqual(expectedRequest);
});
});
});
// TO DO 'Kernel step' -> 'revisit step button on Review works'