Merge pull request #22596 from Vity01/entitypicker-fields-limitation
Fields limitation for EntityPicker
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
---
|
||||
'@backstage/plugin-scaffolder': minor
|
||||
---
|
||||
|
||||
Updating the `EntityPicker` to only select `kind` `metadata.name` and `metadata.namespace` by default to improve performance on larger datasets.
|
||||
@@ -89,7 +89,10 @@ describe('<EntityPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(undefined);
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
fields: ['metadata.name', 'metadata.namespace', 'kind'],
|
||||
filter: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('updates even if there is not an exact match', async () => {
|
||||
@@ -130,11 +133,13 @@ describe('<EntityPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: {
|
||||
kind: ['User'],
|
||||
},
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: {
|
||||
kind: ['User'],
|
||||
},
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -173,18 +178,20 @@ describe('<EntityPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group'],
|
||||
'metadata.name': 'test-entity',
|
||||
},
|
||||
{
|
||||
kind: ['User'],
|
||||
'metadata.name': 'test-entity',
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group'],
|
||||
'metadata.name': 'test-entity',
|
||||
},
|
||||
{
|
||||
kind: ['User'],
|
||||
'metadata.name': 'test-entity',
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
it('allow single top level filter', async () => {
|
||||
uiSchema = {
|
||||
@@ -204,12 +211,14 @@ describe('<EntityPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: {
|
||||
kind: ['Group'],
|
||||
'metadata.name': 'test-entity',
|
||||
},
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: {
|
||||
kind: ['Group'],
|
||||
'metadata.name': 'test-entity',
|
||||
},
|
||||
}),
|
||||
);
|
||||
});
|
||||
|
||||
it('search for entitities containing an specific key', async () => {
|
||||
@@ -230,14 +239,16 @@ describe('<EntityPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: [
|
||||
{
|
||||
kind: ['User'],
|
||||
'metadata.annotation.some/anotation': CATALOG_FILTER_EXISTS,
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: [
|
||||
{
|
||||
kind: ['User'],
|
||||
'metadata.annotation.some/anotation': CATALOG_FILTER_EXISTS,
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -273,14 +284,16 @@ describe('<EntityPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group'],
|
||||
'metadata.name': 'test-group',
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group'],
|
||||
'metadata.name': 'test-group',
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -67,8 +67,11 @@ export const EntityPicker = (props: EntityPickerProps) => {
|
||||
const catalogApi = useApi(catalogApiRef);
|
||||
|
||||
const { value: entities, loading } = useAsync(async () => {
|
||||
const fields = ['metadata.name', 'metadata.namespace', 'kind'];
|
||||
const { items } = await catalogApi.getEntities(
|
||||
catalogFilter ? { filter: catalogFilter } : undefined,
|
||||
catalogFilter
|
||||
? { filter: catalogFilter, fields }
|
||||
: { filter: undefined, fields },
|
||||
);
|
||||
return items;
|
||||
});
|
||||
|
||||
@@ -94,11 +94,14 @@ describe('<OwnerPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: {
|
||||
kind: ['Group', 'User'],
|
||||
},
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: {
|
||||
kind: ['Group', 'User'],
|
||||
},
|
||||
fields: ['metadata.name', 'metadata.namespace', 'kind'],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -124,11 +127,14 @@ describe('<OwnerPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: {
|
||||
kind: ['User'],
|
||||
},
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: {
|
||||
kind: ['User'],
|
||||
},
|
||||
fields: ['metadata.name', 'metadata.namespace', 'kind'],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -163,14 +169,16 @@ describe('<OwnerPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group'],
|
||||
'spec.type': 'team',
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group'],
|
||||
'spec.type': 'team',
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -208,16 +216,18 @@ describe('<OwnerPicker />', () => {
|
||||
</Wrapper>,
|
||||
);
|
||||
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group', 'User'],
|
||||
},
|
||||
{
|
||||
'spec.type': ['team', 'business-unit'],
|
||||
},
|
||||
],
|
||||
});
|
||||
expect(catalogApi.getEntities).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
filter: [
|
||||
{
|
||||
kind: ['Group', 'User'],
|
||||
},
|
||||
{
|
||||
'spec.type': ['team', 'business-unit'],
|
||||
},
|
||||
],
|
||||
}),
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user