From 614bd96e2a0d68cae0b8fc8cff8a2e2e55152069 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 11 May 2022 09:19:04 +0200 Subject: [PATCH] Fix typing on withApis() when multiple APIs provided Signed-off-by: Eric Peterson --- .changeset/techdocs-wee-britain.md | 5 +++++ plugins/techdocs-addons-test-utils/api-report.md | 2 +- .../techdocs-addons-test-utils/src/test-utils.tsx | 12 ++++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 .changeset/techdocs-wee-britain.md diff --git a/.changeset/techdocs-wee-britain.md b/.changeset/techdocs-wee-britain.md new file mode 100644 index 0000000000..661ff76fc5 --- /dev/null +++ b/.changeset/techdocs-wee-britain.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-addons-test-utils': patch +--- + +Fixed a type bug preventing `buildAddonsInTechDocs().withApis()` from being called with multiple partial API implementations. diff --git a/plugins/techdocs-addons-test-utils/api-report.md b/plugins/techdocs-addons-test-utils/api-report.md index 14bffbc8b3..6374707b90 100644 --- a/plugins/techdocs-addons-test-utils/api-report.md +++ b/plugins/techdocs-addons-test-utils/api-report.md @@ -29,7 +29,7 @@ export class TechDocsAddonTester { } >; // (undocumented) - withApis(apis: TechdocsAddonTesterApis): this; + withApis(apis: TechdocsAddonTesterApis): this; // (undocumented) withDom(dom: ReactElement): this; // (undocumented) diff --git a/plugins/techdocs-addons-test-utils/src/test-utils.tsx b/plugins/techdocs-addons-test-utils/src/test-utils.tsx index 9d668eaf3d..0bb46001f7 100644 --- a/plugins/techdocs-addons-test-utils/src/test-utils.tsx +++ b/plugins/techdocs-addons-test-utils/src/test-utils.tsx @@ -65,14 +65,18 @@ type TechDocsAddonTesterTestApiPair = TApi extends infer TImpl : never; /** @ignore */ -type TechdocsAddonTesterApis = TechDocsAddonTesterTestApiPair[]; +type TechdocsAddonTesterApis = { + [TIndex in keyof TApiPairs]: TechDocsAddonTesterTestApiPair< + TApiPairs[TIndex] + >; +}; type TechDocsAddonTesterOptions = { dom: ReactElement; entity: Partial; metadata: Partial; componentId: string; - apis: TechdocsAddonTesterApis; + apis: TechdocsAddonTesterApis; path: string; }; @@ -125,7 +129,7 @@ export class TechDocsAddonTester { this.addons = addons; } - withApis(apis: TechdocsAddonTesterApis) { + withApis(apis: TechdocsAddonTesterApis) { const refs = apis.map(([ref]) => ref); this.options.apis = this.options.apis .filter(([ref]) => !refs.includes(ref)) @@ -154,7 +158,7 @@ export class TechDocsAddonTester { } build() { - const apis: TechdocsAddonTesterApis = [ + const apis: TechdocsAddonTesterApis = [ [techdocsApiRef, techdocsApi], [techdocsStorageApiRef, techdocsStorageApi], [searchApiRef, searchApi],