CreateImageWizard: Fix deselecting selected packages
Deselecting a selected set of package didn't change the state correctly.
This commit is contained in:
parent
0d5ab8b86b
commit
a16212ddc3
3 changed files with 43 additions and 6 deletions
|
|
@ -139,14 +139,15 @@ const Packages = ({ defaultArch, ...props }) => {
|
|||
|
||||
if (fromAvailable) {
|
||||
sortPackages(updatedSourcePackages);
|
||||
setPackagesChosen([ ...destinationPackages ]);
|
||||
setPackagesChosen(destinationPackages);
|
||||
// set the steps field to the current chosen packages list
|
||||
change(input.name, removePackagesDisplayFields(destinationPackages));
|
||||
} else {
|
||||
setPackagesChosen(updatedSourcePackages);
|
||||
sortPackages([ ...destinationPackages ]);
|
||||
sortPackages(packagesAvailable);
|
||||
// set the steps field to the current chosen packages list
|
||||
change(input.name, removePackagesDisplayFields(updatedSourcePackages));
|
||||
}
|
||||
|
||||
// set the steps field to the current chosen packages list
|
||||
change(input.name, removePackagesDisplayFields(packagesChosen));
|
||||
};
|
||||
|
||||
// move all packages
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ const ReviewStep = () => {
|
|||
<TextListItem component={ TextListItemVariants.dt }>
|
||||
Chosen
|
||||
</TextListItem>
|
||||
<TextListItem component={ TextListItemVariants.dd }>
|
||||
<TextListItem component={ TextListItemVariants.dd } data-testid='chosen-packages-count'>
|
||||
{getState()?.values?.['selected-packages']?.length || 0}
|
||||
</TextListItem>
|
||||
</TextList>
|
||||
|
|
|
|||
|
|
@ -522,6 +522,42 @@ describe('Step Packages', () => {
|
|||
expect(secondItem).toHaveTextContent('testPkgtest package summary');
|
||||
expect(thirdItem).toHaveTextContent('lib-testlib-test package summary');
|
||||
});
|
||||
|
||||
test('removing a single package updates the state correctly', async () => {
|
||||
const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref
|
||||
searchbox.click();
|
||||
const getPackages = jest
|
||||
.spyOn(api, 'getPackages')
|
||||
.mockImplementation(() => Promise.resolve(mockPkgResult));
|
||||
|
||||
await searchForPackages(searchbox, 'test');
|
||||
expect(getPackages).toHaveBeenCalledTimes(1);
|
||||
screen.getByRole('button', { name: /Add all/ }).click();
|
||||
|
||||
// remove a single package
|
||||
screen.getByRole('option', { name: /lib-test lib-test package summary/ }).click();
|
||||
screen.getByRole('button', { name: /Remove selected/ }).click();
|
||||
|
||||
// review page
|
||||
screen.getByRole('button', { name: /Next/ }).click();
|
||||
|
||||
// await screen.findByTestId('chosen-packages-count');
|
||||
let chosen = await screen.findByTestId('chosen-packages-count');
|
||||
expect(chosen).toHaveTextContent('2');
|
||||
|
||||
// remove another package
|
||||
screen.getByRole('button', { name: /Back/ }).click();
|
||||
await screen.findByTestId('search-available-pkgs-input');
|
||||
screen.getByRole('option', { name: /summary for test package/ }).click();
|
||||
screen.getByRole('button', { name: /Remove selected/ }).click();
|
||||
|
||||
// review page
|
||||
screen.getByRole('button', { name: /Next/ }).click();
|
||||
|
||||
// await screen.findByTestId('chosen-packages-count');
|
||||
chosen = await screen.findByTestId('chosen-packages-count');
|
||||
expect(chosen).toHaveTextContent('1');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Step Review', () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue