Merge pull request #15217 from wayfair-contribs/smedeiros_remaining_filters

Fix entity tag picker
This commit is contained in:
Johan Haals
2022-12-22 09:47:22 +01:00
committed by GitHub
3 changed files with 40 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-react': patch
---
Fixed bug in `EntityTagPicker` that filtered on unavailable tags for the selected kind.
@@ -202,4 +202,33 @@ describe('<EntityTagPicker/>', () => {
tags: new EntityTagFilter(['tag2']),
});
});
it('removes tags from filters if there are none available', async () => {
const updateFilters = jest.fn();
const mockCatalogApiRefNoTags = {
getEntityFacets: async () => ({
facets: {
'metadata.tags': {},
},
}),
} as unknown as CatalogApi;
render(
<TestApiProvider apis={[[catalogApiRef, mockCatalogApiRefNoTags]]}>
<MockEntityListContextProvider
value={{
updateFilters,
queryParameters: { tags: ['tag1'] },
}}
>
<EntityTagPicker />
</MockEntityListContextProvider>
,
</TestApiProvider>,
);
await waitFor(() =>
expect(updateFilters).toHaveBeenLastCalledWith({
tags: undefined,
}),
);
});
});
@@ -93,10 +93,14 @@ export const EntityTagPicker = (props: EntityTagPickerProps) => {
}, [queryParamTags]);
useEffect(() => {
const tags = Object.keys(availableTags ?? {});
updateFilters({
tags: selectedTags.length ? new EntityTagFilter(selectedTags) : undefined,
tags:
selectedTags.length && tags.length
? new EntityTagFilter(selectedTags)
: undefined,
});
}, [selectedTags, updateFilters]);
}, [selectedTags, updateFilters, availableTags]);
if (!Object.keys(availableTags ?? {}).length) return null;