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:
Anders Näsman
2022-04-26 12:09:42 +02:00
parent 0ac974d551
commit f010dc30b7
3 changed files with 41 additions and 45 deletions
@@ -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(