review feedback
Co-authored-by: Camila Belo <camilaibs@gmail.com> Co-authored-by: Eric Peterson <iamEAP@users.noreply.github.com> Signed-off-by: Anders Näsman <andersn@spotify.com>
This commit is contained in:
@@ -3,24 +3,15 @@
|
||||
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
||||
|
||||
```ts
|
||||
import { ApiRef } from '@backstage/core-plugin-api';
|
||||
import { default as React_2 } from 'react';
|
||||
import { ReactElement } from 'react';
|
||||
import { screen as screen_2 } from 'testing-library__dom';
|
||||
import { TechDocsEntityMetadata } from '@backstage/plugin-techdocs-react';
|
||||
import { TechDocsMetadata } from '@backstage/plugin-techdocs-react';
|
||||
import { TestApiProviderProps } from '@backstage/test-utils';
|
||||
|
||||
// @public (undocumented)
|
||||
export type Apis = TestApiProviderProps<any>['apis'];
|
||||
|
||||
// @public (undocumented)
|
||||
export type RecursivePartial<T> = {
|
||||
[P in keyof T]?: RecursivePartial<T[P]>;
|
||||
};
|
||||
|
||||
// @public (undocumented)
|
||||
export class TechDocsAddonBuilder {
|
||||
constructor(addons: ReactElement[]);
|
||||
export class TechDocsAddonTester {
|
||||
// (undocumented)
|
||||
atPath(path: string): this;
|
||||
// (undocumented)
|
||||
@@ -29,7 +20,7 @@ export class TechDocsAddonBuilder {
|
||||
string | React_2.JSXElementConstructor<any>
|
||||
>;
|
||||
// (undocumented)
|
||||
static buildAddonsInTechDocs(addons: ReactElement[]): TechDocsAddonBuilder;
|
||||
static buildAddonsInTechDocs(addons: ReactElement[]): TechDocsAddonTester;
|
||||
// (undocumented)
|
||||
renderWithEffects(): Promise<
|
||||
typeof screen_2 & {
|
||||
@@ -37,12 +28,20 @@ export class TechDocsAddonBuilder {
|
||||
}
|
||||
>;
|
||||
// (undocumented)
|
||||
withApis(apis: Apis): this;
|
||||
withApis<T>(apis: TechdocsAddonTesterApis<T>): this;
|
||||
// (undocumented)
|
||||
withDom(dom: ReactElement): this;
|
||||
// (undocumented)
|
||||
withEntity(entity: RecursivePartial<TechDocsEntityMetadata>): this;
|
||||
withEntity(entity: Partial<TechDocsEntityMetadata>): this;
|
||||
// (undocumented)
|
||||
withMetadata(metadata: RecursivePartial<TechDocsMetadata>): this;
|
||||
withMetadata(metadata: Partial<TechDocsMetadata>): this;
|
||||
}
|
||||
|
||||
// @public (undocumented)
|
||||
export type TechdocsAddonTesterApis<T> = TechDocsAddonTesterTestApiPair<T>[];
|
||||
|
||||
// @public (undocumented)
|
||||
export type TechDocsAddonTesterTestApiPair<TApi> = TApi extends infer TImpl
|
||||
? readonly [ApiRef<TApi>, Partial<TImpl>]
|
||||
: never;
|
||||
```
|
||||
|
||||
@@ -23,12 +23,9 @@ import { renderToStaticMarkup } from 'react-dom/server';
|
||||
import { Route } from 'react-router-dom';
|
||||
import { act, render } from '@testing-library/react';
|
||||
|
||||
import {
|
||||
wrapInTestApp,
|
||||
TestApiProvider,
|
||||
TestApiProviderProps,
|
||||
} from '@backstage/test-utils';
|
||||
import { wrapInTestApp, TestApiProvider } from '@backstage/test-utils';
|
||||
import { FlatRoutes } from '@backstage/core-app-api';
|
||||
import { ApiRef } from '@backstage/core-plugin-api';
|
||||
|
||||
import {
|
||||
TechDocsAddons,
|
||||
@@ -41,13 +38,6 @@ import { TechDocsReaderPage, techdocsPlugin } from '@backstage/plugin-techdocs';
|
||||
import { catalogPlugin } from '@backstage/plugin-catalog';
|
||||
import { searchApiRef } from '@backstage/plugin-search-react';
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export type RecursivePartial<T> = {
|
||||
[P in keyof T]?: RecursivePartial<T[P]>;
|
||||
};
|
||||
|
||||
const techdocsApi = {
|
||||
getTechDocsMetadata: jest.fn(),
|
||||
getEntityMetadata: jest.fn(),
|
||||
@@ -66,18 +56,25 @@ const searchApi = {
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export type Apis = TestApiProviderProps<any>['apis'];
|
||||
export type TechDocsAddonTesterTestApiPair<TApi> = TApi extends infer TImpl
|
||||
? readonly [ApiRef<TApi>, Partial<TImpl>]
|
||||
: never;
|
||||
|
||||
type TechDocsAddonBuilderOptions = {
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
export type TechdocsAddonTesterApis<T> = TechDocsAddonTesterTestApiPair<T>[];
|
||||
|
||||
type TechDocsAddonTesterOptions = {
|
||||
dom: ReactElement;
|
||||
entity: RecursivePartial<TechDocsEntityMetadata>;
|
||||
metadata: RecursivePartial<TechDocsMetadata>;
|
||||
entity: Partial<TechDocsEntityMetadata>;
|
||||
metadata: Partial<TechDocsMetadata>;
|
||||
componentId: string;
|
||||
apis: Apis;
|
||||
apis: TechdocsAddonTesterApis<any>;
|
||||
path: string;
|
||||
};
|
||||
|
||||
const defaultOptions: TechDocsAddonBuilderOptions = {
|
||||
const defaultOptions: TechDocsAddonTesterOptions = {
|
||||
dom: <></>,
|
||||
entity: {},
|
||||
metadata: {},
|
||||
@@ -113,19 +110,19 @@ const defaultDom = (
|
||||
* @public
|
||||
*/
|
||||
|
||||
export class TechDocsAddonBuilder {
|
||||
private options: TechDocsAddonBuilderOptions = defaultOptions;
|
||||
export class TechDocsAddonTester {
|
||||
private options: TechDocsAddonTesterOptions = defaultOptions;
|
||||
private addons: ReactElement[];
|
||||
|
||||
static buildAddonsInTechDocs(addons: ReactElement[]) {
|
||||
return new TechDocsAddonBuilder(addons);
|
||||
return new TechDocsAddonTester(addons);
|
||||
}
|
||||
|
||||
constructor(addons: ReactElement[]) {
|
||||
private constructor(addons: ReactElement[]) {
|
||||
this.addons = addons;
|
||||
}
|
||||
|
||||
withApis(apis: Apis) {
|
||||
withApis<T>(apis: TechdocsAddonTesterApis<T>) {
|
||||
const refs = apis.map(([ref]) => ref);
|
||||
this.options.apis = this.options.apis
|
||||
.filter(([ref]) => !refs.includes(ref))
|
||||
@@ -138,12 +135,12 @@ export class TechDocsAddonBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
withMetadata(metadata: RecursivePartial<TechDocsMetadata>) {
|
||||
withMetadata(metadata: Partial<TechDocsMetadata>) {
|
||||
this.options.metadata = metadata;
|
||||
return this;
|
||||
}
|
||||
|
||||
withEntity(entity: RecursivePartial<TechDocsEntityMetadata>) {
|
||||
withEntity(entity: Partial<TechDocsEntityMetadata>) {
|
||||
this.options.entity = entity;
|
||||
return this;
|
||||
}
|
||||
@@ -154,7 +151,7 @@ export class TechDocsAddonBuilder {
|
||||
}
|
||||
|
||||
build() {
|
||||
const apis = [
|
||||
const apis: TechdocsAddonTesterApis<any> = [
|
||||
[techdocsApiRef, techdocsApi],
|
||||
[techdocsStorageApiRef, techdocsStorageApi],
|
||||
[searchApiRef, searchApi],
|
||||
@@ -237,4 +234,4 @@ export class TechDocsAddonBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
export default TechDocsAddonBuilder.buildAddonsInTechDocs;
|
||||
export default TechDocsAddonTester.buildAddonsInTechDocs;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { TechDocsAddonBuilder } from '@backstage/plugin-techdocs-addons-test-utils';
|
||||
import { TechDocsAddonTester } from '@backstage/plugin-techdocs-addons-test-utils';
|
||||
|
||||
import React from 'react';
|
||||
import { fireEvent, waitFor } from '@testing-library/react';
|
||||
@@ -59,7 +59,7 @@ describe('ReportIssue', () => {
|
||||
it('renders github link without exploding', async () => {
|
||||
byUrl.mockReturnValue({ type: 'github' });
|
||||
const { shadowRoot, getByText } =
|
||||
await TechDocsAddonBuilder.buildAddonsInTechDocs([
|
||||
await TechDocsAddonTester.buildAddonsInTechDocs([
|
||||
<ReportIssue debounceTime={0} />,
|
||||
])
|
||||
.withDom(
|
||||
@@ -117,7 +117,7 @@ describe('ReportIssue', () => {
|
||||
it('renders gitlab link without exploding', async () => {
|
||||
byUrl.mockReturnValue({ type: 'gitlab' });
|
||||
const { shadowRoot, getByText } =
|
||||
await TechDocsAddonBuilder.buildAddonsInTechDocs([
|
||||
await TechDocsAddonTester.buildAddonsInTechDocs([
|
||||
<ReportIssue debounceTime={0} />,
|
||||
])
|
||||
.withDom(
|
||||
|
||||
Reference in New Issue
Block a user