diff --git a/.changeset/eleven-ghosts-strive.md b/.changeset/eleven-ghosts-strive.md
new file mode 100644
index 0000000000..ac48c19524
--- /dev/null
+++ b/.changeset/eleven-ghosts-strive.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-scaffolder': patch
+---
+
+Full support in EntityPicker (and derivatives) for default EntityPresentationApi
diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
index 6a379f8380..2098e3e07d 100644
--- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.test.tsx
@@ -95,10 +95,13 @@ describe('', () => {
expect(catalogApi.getEntities).toHaveBeenCalledWith({
fields: [
+ 'kind',
'metadata.name',
'metadata.namespace',
'metadata.title',
- 'kind',
+ 'metadata.description',
+ 'spec.profile.displayName',
+ 'spec.type',
],
filter: undefined,
});
@@ -422,6 +425,82 @@ describe('', () => {
expect(onChange).toHaveBeenCalledWith('group:default/team-b');
});
});
+ describe('entity presentation', () => {
+ beforeEach(() => {
+ uiSchema = {
+ 'ui:options': {
+ defaultKind: 'Group',
+ },
+ };
+ props = {
+ onChange,
+ schema,
+ required,
+ uiSchema,
+ rawErrors,
+ formData,
+ } as unknown as FieldProps;
+ });
+
+ it('renders selection displayName', async () => {
+ catalogApi.getEntities.mockResolvedValue({
+ items: entities.map(item => ({
+ ...item,
+ spec: {
+ profile: { displayName: item.metadata.name.replace('-', ' ') },
+ },
+ })),
+ });
+
+ const { getByRole, getByText } = await renderInTestApp(
+
+
+ ,
+ );
+
+ const input = getByRole('textbox');
+
+ fireEvent.change(input, { target: { value: 't' } });
+
+ expect(getByText('team a')).toBeInTheDocument();
+
+ fireEvent.change(input, { target: { value: 's' } });
+
+ expect(getByText('squad b')).toBeInTheDocument();
+
+ fireEvent.blur(input);
+ });
+
+ it('renders selection title', async () => {
+ catalogApi.getEntities.mockResolvedValue({
+ items: entities.map(item => ({
+ ...item,
+ metadata: {
+ ...item.metadata,
+ title: item.metadata.name.replace('-', ' ').toUpperCase(),
+ },
+ })),
+ });
+
+ const { getByRole, getByText } = await renderInTestApp(
+
+
+ ,
+ );
+
+ const input = getByRole('textbox');
+
+ fireEvent.change(input, { target: { value: 't' } });
+
+ expect(getByText('TEAM A')).toBeInTheDocument();
+
+ fireEvent.change(input, { target: { value: 's' } });
+
+ expect(getByText('SQUAD B')).toBeInTheDocument();
+
+ fireEvent.blur(input);
+ });
+ });
describe('Required EntityPicker', () => {
beforeEach(() => {
diff --git a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
index b15c197945..26f88ea85d 100644
--- a/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
+++ b/plugins/scaffolder/src/components/fields/EntityPicker/EntityPicker.tsx
@@ -81,10 +81,13 @@ export const EntityPicker = (props: EntityPickerProps) => {
const { value: entities, loading } = useAsync(async () => {
const fields = [
+ 'kind',
'metadata.name',
'metadata.namespace',
'metadata.title',
- 'kind',
+ 'metadata.description',
+ 'spec.profile.displayName',
+ 'spec.type',
];
const { items } = await catalogApi.getEntities(
catalogFilter
diff --git a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx
index af75408754..3abe1c9353 100644
--- a/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx
+++ b/plugins/scaffolder/src/components/fields/OwnerPicker/OwnerPicker.test.tsx
@@ -105,10 +105,13 @@ describe('', () => {
kind: ['Group', 'User'],
},
fields: [
+ 'kind',
'metadata.name',
'metadata.namespace',
'metadata.title',
- 'kind',
+ 'metadata.description',
+ 'spec.profile.displayName',
+ 'spec.type',
],
}),
);
@@ -208,10 +211,13 @@ describe('', () => {
kind: ['User'],
},
fields: [
+ 'kind',
'metadata.name',
'metadata.namespace',
'metadata.title',
- 'kind',
+ 'metadata.description',
+ 'spec.profile.displayName',
+ 'spec.type',
],
}),
);