diff --git a/.changeset/breezy-books-matter.md b/.changeset/breezy-books-matter.md new file mode 100644 index 0000000000..1bc206bdc5 --- /dev/null +++ b/.changeset/breezy-books-matter.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-search': patch +--- + +Fix empty state not being displayed on missing results. diff --git a/plugins/search/src/components/SearchResult/SearchResult.test.tsx b/plugins/search/src/components/SearchResult/SearchResult.test.tsx index 0a18690353..9508eec259 100644 --- a/plugins/search/src/components/SearchResult/SearchResult.test.tsx +++ b/plugins/search/src/components/SearchResult/SearchResult.test.tsx @@ -55,7 +55,7 @@ describe('SearchResult', () => { }); }); - it('On empty result value state', async () => { + it('On no result value state', async () => { (useSearch as jest.Mock).mockReturnValueOnce({ result: { loading: false, error: '', value: undefined }, }); @@ -69,6 +69,20 @@ describe('SearchResult', () => { }); }); + it('On empty result value state', async () => { + (useSearch as jest.Mock).mockReturnValueOnce({ + result: { loading: false, error: '', value: { results: [] } }, + }); + + const { getByRole } = render({() => <>}); + + await waitFor(() => { + expect( + getByRole('heading', { name: 'Sorry, no results were found' }), + ).toBeInTheDocument(); + }); + }); + it('Calls children with results set to result.value', () => { (useSearch as jest.Mock).mockReturnValueOnce({ result: { loading: false, error: '', value: { results: [] } }, diff --git a/plugins/search/src/components/SearchResult/SearchResult.tsx b/plugins/search/src/components/SearchResult/SearchResult.tsx index d720ff933a..a713ae3372 100644 --- a/plugins/search/src/components/SearchResult/SearchResult.tsx +++ b/plugins/search/src/components/SearchResult/SearchResult.tsx @@ -41,7 +41,7 @@ const SearchResultComponent = ({ children }: Props) => { ); } - if (!value) { + if (!value?.results.length) { return ; }