make room for the new named export

Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2024-10-07 12:11:11 +02:00
parent ad8ff14dd0
commit e5944f626a
18 changed files with 147 additions and 17 deletions
+3
View File
@@ -16,6 +16,9 @@
"publishConfig": {
"access": "public"
},
"keywords": [
"backstage"
],
"homepage": "https://backstage.io",
"repository": {
"type": "git",
+4
View File
@@ -30,6 +30,7 @@
"exports": {
".": "./src/index.ts",
"./alpha": "./src/alpha/index.ts",
"./testUtils": "./src/testUtils.ts",
"./package.json": "./package.json"
},
"main": "src/index.ts",
@@ -39,6 +40,9 @@
"alpha": [
"src/alpha/index.ts"
],
"testUtils": [
"src/testUtils.ts"
],
"package.json": [
"package.json"
]
@@ -0,0 +1,19 @@
## API Report File for "@backstage/plugin-catalog-react"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { DefaultEntityFilters } from '@backstage/plugin-catalog-react';
import { EntityListContextProps } from '@backstage/plugin-catalog-react';
import { PropsWithChildren } from 'react';
import { default as React_2 } from 'react';
// @public
export function MockEntityListContextProvider<
T extends DefaultEntityFilters = DefaultEntityFilters,
>(
props: PropsWithChildren<{
value?: Partial<EntityListContextProps<T>>;
}>,
): React_2.JSX.Element;
```
+2 -2
View File
@@ -695,7 +695,7 @@ export function MissingAnnotationEmptyState(props: {
// @public (undocumented)
export type MissingAnnotationEmptyStateClassKey = 'code';
// @public (undocumented)
// @public @deprecated (undocumented)
export function MockEntityListContextProvider<
T extends DefaultEntityFilters = DefaultEntityFilters,
>(
@@ -887,6 +887,7 @@ export function useStarredEntity(
// src/components/UserListPicker/UserListPicker.d.ts:5:1 - (ae-undocumented) Missing documentation for "CatalogReactUserListPickerClassKey".
// src/components/UserListPicker/UserListPicker.d.ts:15:1 - (ae-undocumented) Missing documentation for "UserListPickerProps".
// src/components/UserListPicker/UserListPicker.d.ts:20:22 - (ae-undocumented) Missing documentation for "UserListPicker".
// src/deprecated.d.ts:7:1 - (ae-undocumented) Missing documentation for "MockEntityListContextProvider".
// src/filters.d.ts:8:5 - (ae-undocumented) Missing documentation for "value".
// src/filters.d.ts:10:5 - (ae-undocumented) Missing documentation for "getCatalogFilters".
// src/filters.d.ts:11:5 - (ae-undocumented) Missing documentation for "toQueryValue".
@@ -948,7 +949,6 @@ export function useStarredEntity(
// src/hooks/useStarredEntity.d.ts:3:1 - (ae-undocumented) Missing documentation for "useStarredEntity".
// src/overridableComponents.d.ts:6:1 - (ae-undocumented) Missing documentation for "CatalogReactComponentsNameToClassKey".
// src/overridableComponents.d.ts:19:1 - (ae-undocumented) Missing documentation for "BackstageOverrides".
// src/testUtils/providers.d.ts:4:1 - (ae-undocumented) Missing documentation for "MockEntityListContextProvider".
// src/types.d.ts:3:1 - (ae-undocumented) Missing documentation for "EntityFilter".
// src/types.d.ts:25:1 - (ae-undocumented) Missing documentation for "UserListFilterKind".
// src/types.d.ts:27:1 - (ae-undocumented) Missing documentation for "EntityListPagination".
@@ -16,7 +16,7 @@
import { fireEvent, render, waitFor, screen } from '@testing-library/react';
import React from 'react';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityAutocompletePicker } from './EntityAutocompletePicker';
import { TestApiProvider } from '@backstage/test-utils';
import { catalogApiRef } from '../../api';
@@ -24,7 +24,7 @@ import { capitalize } from 'lodash';
import { default as React } from 'react';
import { catalogApiRef } from '../../api';
import { EntityKindFilter } from '../../filters';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityKindPicker } from './EntityKindPicker';
const entities: Entity[] = [
@@ -16,7 +16,7 @@
import { fireEvent, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityLifecycleFilter } from '../../filters';
import { EntityLifecyclePicker } from './EntityLifecyclePicker';
import { TestApiProvider, renderInTestApp } from '@backstage/test-utils';
@@ -16,7 +16,7 @@
import { fireEvent, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityNamespaceFilter } from '../../filters';
import { EntityNamespacePicker } from './EntityNamespacePicker';
import { TestApiProvider, renderInTestApp } from '@backstage/test-utils';
@@ -17,7 +17,7 @@
import { Entity, stringifyEntityRef } from '@backstage/catalog-model';
import { fireEvent, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityOwnerFilter } from '../../filters';
import { EntityOwnerPicker } from './EntityOwnerPicker';
import { ApiProvider } from '@backstage/core-app-api';
@@ -17,7 +17,7 @@
import { fireEvent, screen } from '@testing-library/react';
import React from 'react';
import { EntityErrorFilter, EntityOrphanFilter } from '../../filters';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityProcessingStatusPicker } from './EntityProcessingStatusPicker';
import { renderInTestApp } from '@backstage/test-utils';
@@ -18,7 +18,7 @@ import React from 'react';
import { fireEvent, waitFor, screen } from '@testing-library/react';
import { EntitySearchBar } from './EntitySearchBar';
import { EntityTextFilter } from '../../filters';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { renderInTestApp } from '@backstage/test-utils';
describe('EntitySearchBar', () => {
@@ -16,7 +16,7 @@
import { fireEvent, waitFor, screen, act } from '@testing-library/react';
import React from 'react';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { EntityTagFilter } from '../../filters';
import { EntityTagPicker } from './EntityTagPicker';
import { TestApiProvider, renderInTestApp } from '@backstage/test-utils';
@@ -18,7 +18,7 @@ import React from 'react';
import { fireEvent, waitFor, screen, within } from '@testing-library/react';
import { Entity } from '@backstage/catalog-model';
import { EntityTypePicker } from './EntityTypePicker';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import { catalogApiRef } from '../../api';
import { EntityKindFilter, EntityTypeFilter } from '../../filters';
import { alertApiRef } from '@backstage/core-plugin-api';
@@ -18,7 +18,7 @@ import React from 'react';
import { fireEvent, waitFor, screen } from '@testing-library/react';
import { UserEntity } from '@backstage/catalog-model';
import { UserListPicker, UserListPickerProps } from './UserListPicker';
import { MockEntityListContextProvider } from '../../testUtils/providers';
import { MockEntityListContextProvider } from '@backstage/plugin-catalog-react/testUtils';
import {
EntityKindFilter,
EntityNamespaceFilter,
+93
View File
@@ -0,0 +1,93 @@
/*
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import React, {
PropsWithChildren,
useCallback,
useMemo,
useState,
} from 'react';
import {
DefaultEntityFilters,
EntityListContext,
EntityListContextProps,
} from './hooks/useEntityListProvider';
/**
* @public
* @deprecated Moved to `@backstage/plugin-catalog-react/testUtils`
*/
export function MockEntityListContextProvider<
T extends DefaultEntityFilters = DefaultEntityFilters,
>(
props: PropsWithChildren<{
value?: Partial<EntityListContextProps<T>>;
}>,
) {
const { children, value } = props;
// Provides a default implementation that stores filter state, for testing components that
// reflect filter state.
const [filters, setFilters] = useState<T>(value?.filters ?? ({} as T));
const updateFilters = useCallback(
(update: Partial<T> | ((prevFilters: T) => Partial<T>)) => {
setFilters(prevFilters => {
const newFilters =
typeof update === 'function' ? update(prevFilters) : update;
return { ...prevFilters, ...newFilters };
});
},
[],
);
// Memoize the default values since pickers have useEffect triggers on these; naively defaulting
// below with `?? <X>` breaks referential equality on subsequent updates.
const defaultValues = useMemo(
() => ({
entities: [],
backendEntities: [],
queryParameters: {},
}),
[],
);
const resolvedValue: EntityListContextProps<T> = useMemo(
() => ({
entities: value?.entities ?? defaultValues.entities,
backendEntities: value?.backendEntities ?? defaultValues.backendEntities,
updateFilters: value?.updateFilters ?? updateFilters,
filters,
loading: value?.loading ?? false,
queryParameters: value?.queryParameters ?? defaultValues.queryParameters,
error: value?.error,
totalItems:
value?.totalItems ?? (value?.entities ?? defaultValues.entities).length,
limit: value?.limit ?? 20,
offset: value?.offset,
setLimit: value?.setLimit ?? (() => {}),
setOffset: value?.setOffset,
paginationMode: value?.paginationMode ?? 'none',
}),
[value, defaultValues, filters, updateFilters],
);
return (
<EntityListContext.Provider value={resolvedValue}>
{children}
</EntityListContext.Provider>
);
}
+1 -1
View File
@@ -28,8 +28,8 @@ export * from './components';
export * from './hooks';
export * from './filters';
export { entityRouteParams, entityRouteRef } from './routes';
export * from './testUtils';
export * from './types';
export * from './overridableComponents';
export { getEntityRelations, getEntitySourceLocation } from './utils';
export type { EntitySourceLocation } from './utils';
export * from './deprecated';
@@ -1,5 +1,5 @@
/*
* Copyright 2021 The Backstage Authors
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,4 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export { MockEntityListContextProvider } from './providers';
/**
* Frontend test helpers for the Catalog plugin.
*
* @packageDocumentation
*/
export { MockEntityListContextProvider } from './testUtils/MockEntityListContextProvider';
@@ -24,9 +24,13 @@ import {
DefaultEntityFilters,
EntityListContext,
EntityListContextProps,
} from '../hooks/useEntityListProvider';
} from '@backstage/plugin-catalog-react';
/** @public */
/**
* Simplifies testing of code that uses the entity list hooks.
*
* @public
*/
export function MockEntityListContextProvider<
T extends DefaultEntityFilters = DefaultEntityFilters,
>(