@backstage/plugin-techdocs-addons-test-utils 0.0.0-nightly-20220504024625

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,39 @@
1
+ # @backstage/plugin-techdocs-addons-test-utils
2
+
3
+ ## 0.0.0-nightly-20220504024625
4
+
5
+ ### Minor Changes
6
+
7
+ - 52fddad92d: Introducing a package with utilities to help test TechDocs Addons.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @backstage/core-components@0.0.0-nightly-20220504024625
13
+ - @backstage/test-utils@0.0.0-nightly-20220504024625
14
+ - @backstage/core-plugin-api@0.0.0-nightly-20220504024625
15
+ - @backstage/plugin-catalog@0.0.0-nightly-20220504024625
16
+ - @backstage/integration-react@0.0.0-nightly-20220504024625
17
+ - @backstage/plugin-techdocs@0.0.0-nightly-20220504024625
18
+ - @backstage/plugin-search-react@0.0.0-nightly-20220504024625
19
+ - @backstage/plugin-techdocs-react@0.0.0-nightly-20220504024625
20
+ - @backstage/core-app-api@0.0.0-nightly-20220504024625
21
+
22
+ ## 0.1.0-next.0
23
+
24
+ ### Minor Changes
25
+
26
+ - 52fddad92d: Introducing a package with utilities to help test TechDocs Addons.
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies
31
+ - @backstage/core-components@0.9.4-next.0
32
+ - @backstage/test-utils@1.1.0-next.1
33
+ - @backstage/core-plugin-api@1.0.2-next.0
34
+ - @backstage/plugin-catalog@1.2.0-next.1
35
+ - @backstage/plugin-search-react@0.2.0-next.1
36
+ - @backstage/plugin-techdocs-react@0.1.1-next.1
37
+ - @backstage/plugin-techdocs@1.1.1-next.1
38
+ - @backstage/integration-react@1.1.0-next.1
39
+ - @backstage/core-app-api@1.0.2-next.0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # techdocs-addons-test-utils
2
+
3
+ A package containing utilities for testing TechDocs Addons.
@@ -0,0 +1,29 @@
1
+ import React, { ReactElement } from 'react';
2
+ import { screen } from 'testing-library__dom';
3
+ import { ApiRef } from '@backstage/core-plugin-api';
4
+ import { TechDocsMetadata, TechDocsEntityMetadata } from '@backstage/plugin-techdocs-react';
5
+
6
+ /** @ignore */
7
+ declare type TechDocsAddonTesterTestApiPair<TApi> = TApi extends infer TImpl ? readonly [ApiRef<TApi>, Partial<TImpl>] : never;
8
+ /** @ignore */
9
+ declare type TechdocsAddonTesterApis<T> = TechDocsAddonTesterTestApiPair<T>[];
10
+ /**
11
+ * @public
12
+ */
13
+ declare class TechDocsAddonTester {
14
+ private options;
15
+ private addons;
16
+ static buildAddonsInTechDocs(addons: ReactElement[]): TechDocsAddonTester;
17
+ private constructor();
18
+ withApis<T>(apis: TechdocsAddonTesterApis<T>): this;
19
+ withDom(dom: ReactElement): this;
20
+ withMetadata(metadata: Partial<TechDocsMetadata>): this;
21
+ withEntity(entity: Partial<TechDocsEntityMetadata>): this;
22
+ atPath(path: string): this;
23
+ build(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
24
+ renderWithEffects(): Promise<typeof screen & {
25
+ shadowRoot: ShadowRoot | null;
26
+ }>;
27
+ }
28
+
29
+ export { TechDocsAddonTester };
@@ -0,0 +1,139 @@
1
+ import React, { Fragment } from 'react';
2
+ import { screen } from 'testing-library__dom';
3
+ import { renderToStaticMarkup } from 'react-dom/server';
4
+ import { Route } from 'react-router-dom';
5
+ import { act, render } from '@testing-library/react';
6
+ import { wrapInTestApp, TestApiProvider } from '@backstage/test-utils';
7
+ import { FlatRoutes } from '@backstage/core-app-api';
8
+ import { techdocsApiRef, techdocsStorageApiRef, TechDocsAddons } from '@backstage/plugin-techdocs-react';
9
+ import { techdocsPlugin, TechDocsReaderPage } from '@backstage/plugin-techdocs';
10
+ import { catalogPlugin } from '@backstage/plugin-catalog';
11
+ import { searchApiRef } from '@backstage/plugin-search-react';
12
+ import { scmIntegrationsApiRef } from '@backstage/integration-react';
13
+
14
+ const techdocsApi = {
15
+ getTechDocsMetadata: jest.fn(),
16
+ getEntityMetadata: jest.fn()
17
+ };
18
+ const techdocsStorageApi = {
19
+ getApiOrigin: jest.fn(),
20
+ getEntityDocs: jest.fn(),
21
+ syncEntityDocs: jest.fn()
22
+ };
23
+ const searchApi = {
24
+ query: jest.fn().mockResolvedValue({ results: [] })
25
+ };
26
+ const scmIntegrationsApi = {
27
+ fromConfig: jest.fn().mockReturnValue({})
28
+ };
29
+ const defaultOptions = {
30
+ dom: /* @__PURE__ */ React.createElement(React.Fragment, null),
31
+ entity: {},
32
+ metadata: {},
33
+ componentId: "docs",
34
+ apis: [],
35
+ path: ""
36
+ };
37
+ const defaultMetadata = {
38
+ site_name: "Tech Docs",
39
+ site_description: "Tech Docs"
40
+ };
41
+ const defaultEntity = {
42
+ kind: "Component",
43
+ metadata: { namespace: "default", name: "docs" }
44
+ };
45
+ const defaultDom = /* @__PURE__ */ React.createElement("html", {
46
+ lang: "en"
47
+ }, /* @__PURE__ */ React.createElement("head", null), /* @__PURE__ */ React.createElement("body", null, /* @__PURE__ */ React.createElement("div", {
48
+ "data-md-component": "container"
49
+ }, /* @__PURE__ */ React.createElement("div", {
50
+ "data-md-component": "navigation"
51
+ }), /* @__PURE__ */ React.createElement("div", {
52
+ "data-md-component": "toc"
53
+ }), /* @__PURE__ */ React.createElement("div", {
54
+ "data-md-component": "main"
55
+ }))));
56
+ class TechDocsAddonTester {
57
+ constructor(addons) {
58
+ this.options = defaultOptions;
59
+ this.addons = addons;
60
+ }
61
+ static buildAddonsInTechDocs(addons) {
62
+ return new TechDocsAddonTester(addons);
63
+ }
64
+ withApis(apis) {
65
+ const refs = apis.map(([ref]) => ref);
66
+ this.options.apis = this.options.apis.filter(([ref]) => !refs.includes(ref)).concat(apis);
67
+ return this;
68
+ }
69
+ withDom(dom) {
70
+ this.options.dom = dom;
71
+ return this;
72
+ }
73
+ withMetadata(metadata) {
74
+ this.options.metadata = metadata;
75
+ return this;
76
+ }
77
+ withEntity(entity) {
78
+ this.options.entity = entity;
79
+ return this;
80
+ }
81
+ atPath(path) {
82
+ this.options.path = path;
83
+ return this;
84
+ }
85
+ build() {
86
+ var _a, _b, _c, _d, _e;
87
+ const apis = [
88
+ [techdocsApiRef, techdocsApi],
89
+ [techdocsStorageApiRef, techdocsStorageApi],
90
+ [searchApiRef, searchApi],
91
+ [scmIntegrationsApiRef, scmIntegrationsApi],
92
+ ...this.options.apis
93
+ ];
94
+ const entityName = {
95
+ namespace: ((_b = (_a = this.options.entity) == null ? void 0 : _a.metadata) == null ? void 0 : _b.namespace) || defaultEntity.metadata.namespace,
96
+ kind: ((_c = this.options.entity) == null ? void 0 : _c.kind) || defaultEntity.kind,
97
+ name: ((_e = (_d = this.options.entity) == null ? void 0 : _d.metadata) == null ? void 0 : _e.name) || defaultEntity.metadata.name
98
+ };
99
+ techdocsApi.getTechDocsMetadata.mockReturnValue(this.options.metadata || { ...defaultMetadata });
100
+ techdocsApi.getEntityMetadata.mockResolvedValue(this.options.entity || { ...defaultEntity });
101
+ techdocsStorageApi.syncEntityDocs.mockResolvedValue("cached");
102
+ techdocsStorageApi.getApiOrigin.mockResolvedValue("https://backstage.example.com/api/techdocs");
103
+ techdocsStorageApi.getEntityDocs.mockResolvedValue(renderToStaticMarkup(this.options.dom || defaultDom));
104
+ const TechDocsAddonsPage = () => {
105
+ return /* @__PURE__ */ React.createElement(TestApiProvider, {
106
+ apis
107
+ }, /* @__PURE__ */ React.createElement(FlatRoutes, null, /* @__PURE__ */ React.createElement(Route, {
108
+ path: "/docs/:namespace/:kind/:name/*",
109
+ element: /* @__PURE__ */ React.createElement(TechDocsReaderPage, null)
110
+ }, /* @__PURE__ */ React.createElement(TechDocsAddons, null, this.addons.map((addon, index) => /* @__PURE__ */ React.createElement(Fragment, {
111
+ key: index
112
+ }, addon))))));
113
+ };
114
+ return wrapInTestApp(/* @__PURE__ */ React.createElement(TechDocsAddonsPage, null), {
115
+ routeEntries: [
116
+ `/docs/${entityName.namespace}/${entityName.kind}/${entityName.name}/${this.options.path}`
117
+ ],
118
+ mountedRoutes: {
119
+ "/docs": techdocsPlugin.routes.root,
120
+ "/docs/:namespace/:kind/:name/*": techdocsPlugin.routes.docRoot,
121
+ "/catalog/:namespace/:kind/:name": catalogPlugin.routes.catalogEntity
122
+ }
123
+ });
124
+ }
125
+ async renderWithEffects() {
126
+ await act(async () => {
127
+ render(this.build());
128
+ });
129
+ const shadowHost = screen.getByTestId("techdocs-native-shadowroot");
130
+ return {
131
+ ...screen,
132
+ shadowRoot: (shadowHost == null ? void 0 : shadowHost.shadowRoot) || null
133
+ };
134
+ }
135
+ }
136
+ TechDocsAddonTester.buildAddonsInTechDocs;
137
+
138
+ export { TechDocsAddonTester };
139
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/test-utils.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { ReactElement, Fragment } from 'react';\n\n// Shadow DOM support for the simple and complete DOM testing utilities\n// https://github.com/testing-library/dom-testing-library/issues/742#issuecomment-674987855\nimport { screen } from 'testing-library__dom';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { Route } from 'react-router-dom';\nimport { act, render } from '@testing-library/react';\n\nimport { wrapInTestApp, TestApiProvider } from '@backstage/test-utils';\nimport { FlatRoutes } from '@backstage/core-app-api';\nimport { ApiRef } from '@backstage/core-plugin-api';\n\nimport {\n TechDocsAddons,\n techdocsApiRef,\n TechDocsEntityMetadata,\n TechDocsMetadata,\n techdocsStorageApiRef,\n} from '@backstage/plugin-techdocs-react';\nimport { TechDocsReaderPage, techdocsPlugin } from '@backstage/plugin-techdocs';\nimport { catalogPlugin } from '@backstage/plugin-catalog';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport { scmIntegrationsApiRef } from '@backstage/integration-react';\n\nconst techdocsApi = {\n getTechDocsMetadata: jest.fn(),\n getEntityMetadata: jest.fn(),\n};\n\nconst techdocsStorageApi = {\n getApiOrigin: jest.fn(),\n getEntityDocs: jest.fn(),\n syncEntityDocs: jest.fn(),\n};\n\nconst searchApi = {\n query: jest.fn().mockResolvedValue({ results: [] }),\n};\n\nconst scmIntegrationsApi = {\n fromConfig: jest.fn().mockReturnValue({}),\n};\n\n/** @ignore */\ntype TechDocsAddonTesterTestApiPair<TApi> = TApi extends infer TImpl\n ? readonly [ApiRef<TApi>, Partial<TImpl>]\n : never;\n\n/** @ignore */\ntype TechdocsAddonTesterApis<T> = TechDocsAddonTesterTestApiPair<T>[];\n\ntype TechDocsAddonTesterOptions = {\n dom: ReactElement;\n entity: Partial<TechDocsEntityMetadata>;\n metadata: Partial<TechDocsMetadata>;\n componentId: string;\n apis: TechdocsAddonTesterApis<any>;\n path: string;\n};\n\nconst defaultOptions: TechDocsAddonTesterOptions = {\n dom: <></>,\n entity: {},\n metadata: {},\n componentId: 'docs',\n apis: [],\n path: '',\n};\n\nconst defaultMetadata = {\n site_name: 'Tech Docs',\n site_description: 'Tech Docs',\n};\n\nconst defaultEntity = {\n kind: 'Component',\n metadata: { namespace: 'default', name: 'docs' },\n};\n\nconst defaultDom = (\n <html lang=\"en\">\n <head />\n <body>\n <div data-md-component=\"container\">\n <div data-md-component=\"navigation\" />\n <div data-md-component=\"toc\" />\n <div data-md-component=\"main\" />\n </div>\n </body>\n </html>\n);\n\n/**\n * @public\n */\n\nexport class TechDocsAddonTester {\n private options: TechDocsAddonTesterOptions = defaultOptions;\n private addons: ReactElement[];\n\n static buildAddonsInTechDocs(addons: ReactElement[]) {\n return new TechDocsAddonTester(addons);\n }\n\n private constructor(addons: ReactElement[]) {\n this.addons = addons;\n }\n\n withApis<T>(apis: TechdocsAddonTesterApis<T>) {\n const refs = apis.map(([ref]) => ref);\n this.options.apis = this.options.apis\n .filter(([ref]) => !refs.includes(ref))\n .concat(apis);\n return this;\n }\n\n withDom(dom: ReactElement) {\n this.options.dom = dom;\n return this;\n }\n\n withMetadata(metadata: Partial<TechDocsMetadata>) {\n this.options.metadata = metadata;\n return this;\n }\n\n withEntity(entity: Partial<TechDocsEntityMetadata>) {\n this.options.entity = entity;\n return this;\n }\n\n atPath(path: string) {\n this.options.path = path;\n return this;\n }\n\n build() {\n const apis: TechdocsAddonTesterApis<any> = [\n [techdocsApiRef, techdocsApi],\n [techdocsStorageApiRef, techdocsStorageApi],\n [searchApiRef, searchApi],\n [scmIntegrationsApiRef, scmIntegrationsApi],\n ...this.options.apis,\n ];\n\n const entityName = {\n namespace:\n this.options.entity?.metadata?.namespace ||\n defaultEntity.metadata.namespace,\n kind: this.options.entity?.kind || defaultEntity.kind,\n name: this.options.entity?.metadata?.name || defaultEntity.metadata.name,\n };\n\n techdocsApi.getTechDocsMetadata.mockReturnValue(\n this.options.metadata || { ...defaultMetadata },\n );\n techdocsApi.getEntityMetadata.mockResolvedValue(\n this.options.entity || { ...defaultEntity },\n );\n\n techdocsStorageApi.syncEntityDocs.mockResolvedValue('cached');\n techdocsStorageApi.getApiOrigin.mockResolvedValue(\n 'https://backstage.example.com/api/techdocs',\n );\n\n techdocsStorageApi.getEntityDocs.mockResolvedValue(\n renderToStaticMarkup(this.options.dom || defaultDom),\n );\n\n const TechDocsAddonsPage = () => {\n return (\n <TestApiProvider apis={apis}>\n <FlatRoutes>\n <Route\n path=\"/docs/:namespace/:kind/:name/*\"\n element={<TechDocsReaderPage />}\n >\n <TechDocsAddons>\n {this.addons.map((addon, index) => (\n <Fragment key={index}>{addon}</Fragment>\n ))}\n </TechDocsAddons>\n </Route>\n </FlatRoutes>\n </TestApiProvider>\n );\n };\n\n return wrapInTestApp(<TechDocsAddonsPage />, {\n routeEntries: [\n `/docs/${entityName.namespace}/${entityName.kind}/${entityName.name}/${this.options.path}`,\n ],\n mountedRoutes: {\n '/docs': techdocsPlugin.routes.root,\n '/docs/:namespace/:kind/:name/*': techdocsPlugin.routes.docRoot,\n '/catalog/:namespace/:kind/:name': catalogPlugin.routes.catalogEntity,\n },\n });\n }\n\n // Components using useEffect to perform an asynchronous action (such as fetch) must be rendered within an async\n // act call to properly get the final state, even with mocked responses. This utility method makes the signature a bit\n // cleaner, since act doesn't return the result of the evaluated function.\n // https://github.com/testing-library/react-testing-library/issues/281\n // https://github.com/facebook/react/pull/14853\n async renderWithEffects(): Promise<\n typeof screen & { shadowRoot: ShadowRoot | null }\n > {\n await act(async () => {\n render(this.build());\n });\n\n const shadowHost = screen.getByTestId('techdocs-native-shadowroot');\n\n return {\n ...screen,\n shadowRoot: shadowHost?.shadowRoot || null,\n };\n }\n}\n\nexport default TechDocsAddonTester.buildAddonsInTechDocs;\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@backstage/plugin-techdocs-addons-test-utils",
3
+ "version": "0.0.0-nightly-20220504024625",
4
+ "main": "dist/index.esm.js",
5
+ "types": "dist/index.d.ts",
6
+ "license": "Apache-2.0",
7
+ "publishConfig": {
8
+ "access": "public",
9
+ "main": "dist/index.esm.js",
10
+ "types": "dist/index.d.ts"
11
+ },
12
+ "backstage": {
13
+ "role": "web-library"
14
+ },
15
+ "homepage": "https://backstage.io",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/backstage/backstage",
19
+ "directory": "plugins/techdocs-addons-test-utils"
20
+ },
21
+ "keywords": [
22
+ "backstage",
23
+ "techdocs"
24
+ ],
25
+ "scripts": {
26
+ "start": "backstage-cli package start",
27
+ "build": "backstage-cli package build",
28
+ "lint": "backstage-cli package lint",
29
+ "test": "backstage-cli package test",
30
+ "clean": "backstage-cli package clean",
31
+ "prepack": "backstage-cli package prepack",
32
+ "postpack": "backstage-cli package postpack"
33
+ },
34
+ "dependencies": {
35
+ "@backstage/core-components": "^0.0.0-nightly-20220504024625",
36
+ "@backstage/core-app-api": "^0.0.0-nightly-20220504024625",
37
+ "@backstage/core-plugin-api": "^0.0.0-nightly-20220504024625",
38
+ "@backstage/integration-react": "^0.0.0-nightly-20220504024625",
39
+ "@backstage/plugin-catalog": "^0.0.0-nightly-20220504024625",
40
+ "@backstage/plugin-search-react": "^0.0.0-nightly-20220504024625",
41
+ "@backstage/plugin-techdocs": "^0.0.0-nightly-20220504024625",
42
+ "@backstage/plugin-techdocs-react": "^0.0.0-nightly-20220504024625",
43
+ "@backstage/test-utils": "^0.0.0-nightly-20220504024625",
44
+ "@backstage/theme": "^0.2.15",
45
+ "@material-ui/core": "^4.9.13",
46
+ "@material-ui/icons": "^4.9.1",
47
+ "@material-ui/lab": "4.0.0-alpha.57",
48
+ "react-use": "^17.2.4",
49
+ "react-router-dom": "6.0.0-beta.0",
50
+ "@testing-library/react": "^12.1.3",
51
+ "testing-library__dom": "^7.29.4-beta.1"
52
+ },
53
+ "peerDependencies": {
54
+ "@types/react": "^16.13.1 || ^17.0.0",
55
+ "react": "^16.13.1 || ^17.0.0",
56
+ "react-dom": "^16.13.1 || ^17.0.0"
57
+ },
58
+ "devDependencies": {
59
+ "@backstage/cli": "^0.0.0-nightly-20220504024625",
60
+ "@backstage/dev-utils": "^0.0.0-nightly-20220504024625",
61
+ "@testing-library/jest-dom": "^5.10.1",
62
+ "@testing-library/react": "^12.1.3",
63
+ "@testing-library/user-event": "^14.0.0",
64
+ "@types/jest": "^26.0.7",
65
+ "@types/node": "^16.11.26",
66
+ "msw": "^0.35.0",
67
+ "cross-fetch": "^3.1.5"
68
+ },
69
+ "files": [
70
+ "dist"
71
+ ]
72
+ }