Merge pull request #31756 from coltMcKissick/31502-colt
catalog-react: OwnerEntityPicker case insensitive
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-catalog-react': patch
|
||||
---
|
||||
|
||||
Fixed an issue where `EntityOwnerPicker` failed to filter options when the input text contained uppercase characters.
|
||||
@@ -362,6 +362,76 @@ describe('<EntityOwnerPicker mode="all" />', () => {
|
||||
owners: new EntityOwnerFilter(['group:default/team-b']),
|
||||
});
|
||||
});
|
||||
|
||||
it('calls fetch with lowercased input and displays results', async () => {
|
||||
const updateFilters = jest.fn();
|
||||
const someOwnerEntities: Entity[] = [
|
||||
{
|
||||
apiVersion: '1',
|
||||
kind: 'Group',
|
||||
metadata: {
|
||||
name: 'some-owner',
|
||||
},
|
||||
},
|
||||
{
|
||||
apiVersion: '1',
|
||||
kind: 'Group',
|
||||
metadata: {
|
||||
name: 'some-owner-2',
|
||||
},
|
||||
spec: {
|
||||
profile: {
|
||||
displayName: 'Some Owner 2',
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
mockCatalogApi.queryEntities.mockImplementation(async _request => {
|
||||
const totalItems = 2;
|
||||
return {
|
||||
items: someOwnerEntities,
|
||||
pageInfo: {
|
||||
nextCursor: '',
|
||||
},
|
||||
totalItems,
|
||||
};
|
||||
});
|
||||
await renderInTestApp(
|
||||
<ApiProvider apis={mockApis}>
|
||||
<MockEntityListContextProvider
|
||||
value={{
|
||||
updateFilters,
|
||||
}}
|
||||
>
|
||||
<EntityOwnerPicker mode="all" />
|
||||
</MockEntityListContextProvider>
|
||||
</ApiProvider>,
|
||||
);
|
||||
|
||||
expect(mockCatalogApi.getEntitiesByRefs).not.toHaveBeenCalled();
|
||||
expect(updateFilters).toHaveBeenLastCalledWith({
|
||||
owners: undefined,
|
||||
});
|
||||
|
||||
const input = screen.getByRole('textbox');
|
||||
fireEvent.change(input, { target: { value: 'Some-Owner' } });
|
||||
|
||||
await waitFor(() =>
|
||||
expect(screen.getByText('some-owner')).toBeInTheDocument(),
|
||||
);
|
||||
expect(mockCatalogApi.queryEntities).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({
|
||||
fullTextFilter: expect.objectContaining({
|
||||
term: 'some-owner',
|
||||
}),
|
||||
}),
|
||||
);
|
||||
|
||||
fireEvent.click(screen.getByText('some-owner'));
|
||||
expect(updateFilters).toHaveBeenLastCalledWith({
|
||||
owners: new EntityOwnerFilter(['group:default/some-owner']),
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('<EntityOwnerPicker mode="owners-only" />', () => {
|
||||
|
||||
@@ -146,7 +146,11 @@ export const EntityOwnerPicker = (props?: EntityOwnerPickerProps) => {
|
||||
mode,
|
||||
initialSelectedOwnersRefs: selectedOwners,
|
||||
});
|
||||
useDebouncedEffect(() => handleFetch({ text }), [text, handleFetch], 250);
|
||||
useDebouncedEffect(
|
||||
() => handleFetch({ text: text.toLocaleLowerCase('en-US') }),
|
||||
[text, handleFetch],
|
||||
250,
|
||||
);
|
||||
|
||||
const availableOwners = value?.items || [];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user