From 5e0ce5274259f469f1b1da229fe1aeaf31e4776b Mon Sep 17 00:00:00 2001 From: lucasgarfield Date: Wed, 23 Feb 2022 10:45:41 +0100 Subject: [PATCH] CreateImageWizard: Show empty available state on failed search Resolves issue #588. 'No packages found' is now correctly displayed after a failed search that follows a successful search. --- .../formComponents/Packages.js | 1 + .../CreateImageWizard.test.js | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/Components/CreateImageWizard/formComponents/Packages.js b/src/Components/CreateImageWizard/formComponents/Packages.js index 27eca1d0..cccfaa29 100644 --- a/src/Components/CreateImageWizard/formComponents/Packages.js +++ b/src/Components/CreateImageWizard/formComponents/Packages.js @@ -114,6 +114,7 @@ const Packages = ({ defaultArch, ...props }) => { sortPackages(packagesAvailableFiltered); setPackagesAvailableFound(true); } else { + setPackagesAvailable([]); setPackagesAvailableFound(false); } }; diff --git a/src/test/Components/CreateImageWizard/CreateImageWizard.test.js b/src/test/Components/CreateImageWizard/CreateImageWizard.test.js index 6b76e646..eb0d761b 100644 --- a/src/test/Components/CreateImageWizard/CreateImageWizard.test.js +++ b/src/test/Components/CreateImageWizard/CreateImageWizard.test.js @@ -705,6 +705,29 @@ describe('Step Packages', () => { screen.getByText('No packages found'); }); + test('should display empty available state on failed search after a successful search', async () => { + await setUp(); + + const searchbox = screen.getAllByRole('textbox')[0]; // searching by id doesn't update the input ref + + searchbox.click(); + + let getPackages = jest + .spyOn(api, 'getPackages') + .mockImplementation(() => Promise.resolve(mockPkgResult)); + + await searchForAvailablePackages(searchbox, 'test'); + + getPackages = jest + .spyOn(api, 'getPackages') + .mockImplementation(() => Promise.resolve(mockPkgResultEmpty)); + + await searchForAvailablePackages(searchbox, 'asdf'); + + expect(getPackages).toHaveBeenCalledTimes(2); + screen.getByText('No packages found'); + }); + test('should display empty chosen state on failed search', async () => { await setUp();