diff options
author | Sebastian <sebasjm@gmail.com> | 2022-12-20 15:42:53 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-12-20 15:42:53 -0300 |
commit | 382e66b179d6fda2598936196b2ae1b97bfab8ef (patch) | |
tree | 84b6be6a6f83626ece36160e102c22c94ab7132b /packages | |
parent | 1500c91f36da96226af1226c10bdd83c55c92c23 (diff) |
fix testing not compiling
Diffstat (limited to 'packages')
-rwxr-xr-x | packages/merchant-backoffice-ui/build.mjs | 2 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/package.json | 6 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/admin/create/stories.ts | 48 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/admin/index.stories.ts | 18 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/index.stories.ts | 2 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx (renamed from packages/merchant-backoffice-ui/src/paths/instance/details/Details.stories.tsx) | 0 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/instance/index.stories.ts | 18 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/instance/templates/create/Create.stories.tsx | 13 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/stories.test.ts | 49 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/src/stories.tsx | 21 | ||||
-rw-r--r-- | packages/merchant-backoffice-ui/tests/stories.test.tsx | 86 |
11 files changed, 149 insertions, 114 deletions
diff --git a/packages/merchant-backoffice-ui/build.mjs b/packages/merchant-backoffice-ui/build.mjs index 3bc1916b5..611ef7044 100755 --- a/packages/merchant-backoffice-ui/build.mjs +++ b/packages/merchant-backoffice-ui/build.mjs @@ -64,7 +64,7 @@ function getFilesInDirectory(startPath, regex) { return result } -const allTestFiles = getFilesInDirectory(path.join(BASE, 'src'), /.test.ts$/) +const allTestFiles = getFilesInDirectory(path.join(BASE, 'tests'), /.test.tsx?$/) const entryPoints = ["src/index.tsx", "src/stories.tsx", ...allTestFiles]; diff --git a/packages/merchant-backoffice-ui/package.json b/packages/merchant-backoffice-ui/package.json index b78b3636c..085f92d76 100644 --- a/packages/merchant-backoffice-ui/package.json +++ b/packages/merchant-backoffice-ui/package.json @@ -8,7 +8,7 @@ "check": "tsc", "compile": "tsc && ./build.mjs", "dev": "preact watch --port ${PORT:=8080} --no-sw --no-esm", - "test": "pnpm compile && mocha --require source-map-support/register 'dist/**/test.js'", + "test": "pnpm compile && mocha --require source-map-support/register '*.test.js' 'dist/**/test.js'", "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'", "i18n:extract": "pogen extract", "i18n:merge": "pogen merge", @@ -51,7 +51,7 @@ "@testing-library/preact-hooks": "^1.1.0", "@types/history": "^4.7.8", "@types/jest": "^26.0.23", - "@types/mocha": "^8.2.2", + "@types/mocha": "^8.2.3", "@types/node": "^18.8.5", "@typescript-eslint/eslint-plugin": "^4.22.0", "@typescript-eslint/parser": "^4.22.0", @@ -73,6 +73,8 @@ "inline-chunk-html-plugin": "^1.1.1", "jest": "^26.6.3", "jest-preset-preact": "^4.0.2", + "mocha": "^9.2.0", + "preact-render-to-string": "^5.2.6", "rimraf": "^3.0.2", "sass": "1.56.1", "typedoc": "^0.20.36", diff --git a/packages/merchant-backoffice-ui/src/paths/admin/create/stories.ts b/packages/merchant-backoffice-ui/src/paths/admin/create/stories.ts new file mode 100644 index 000000000..45b94ec8c --- /dev/null +++ b/packages/merchant-backoffice-ui/src/paths/admin/create/stories.ts @@ -0,0 +1,48 @@ +/* + This file is part of GNU Taler + (C) 2021-2023 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * + * @author Sebastian Javier Marchano (sebasjm) + */ + +import { h, VNode, FunctionalComponent } from "preact"; +import { CreatePage as TestedComponent } from "./CreatePage.js"; + +export default { + title: "Pages/Instance/Create", + component: TestedComponent, + argTypes: { + onCreate: { action: "onCreate" }, + goBack: { action: "goBack" }, + }, +}; + +function createExample<Props>( + Component: FunctionalComponent<Props>, + props: Partial<Props>, +) { + const r = (args: any) => h(Component, args); + // const r = (args: any) => <Component {...args} />; + r.args = props; + return r; +} + +export const Example = createExample(TestedComponent, {}); +// export const Example = (a: any): VNode => <CreatePage {...a} />; +// Example.args = { +// isLoading: false +// } diff --git a/packages/merchant-backoffice-ui/src/paths/admin/index.stories.ts b/packages/merchant-backoffice-ui/src/paths/admin/index.stories.ts new file mode 100644 index 000000000..fdae1a24d --- /dev/null +++ b/packages/merchant-backoffice-ui/src/paths/admin/index.stories.ts @@ -0,0 +1,18 @@ +/* + This file is part of GNU Taler + (C) 2021-2023 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +// export * as list from "./list/stories.js"; +export * as create from "./create/stories.js"; diff --git a/packages/merchant-backoffice-ui/src/paths/index.stories.ts b/packages/merchant-backoffice-ui/src/paths/index.stories.ts deleted file mode 100644 index ecf28445b..000000000 --- a/packages/merchant-backoffice-ui/src/paths/index.stories.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * as a1 from "./admin/create/Create.stories.js"; -export * as a2 from "./instance/details/Details.stories.js"; diff --git a/packages/merchant-backoffice-ui/src/paths/instance/details/Details.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx index 9ac1c4381..9ac1c4381 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/details/Details.stories.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/details/stories.tsx diff --git a/packages/merchant-backoffice-ui/src/paths/instance/index.stories.ts b/packages/merchant-backoffice-ui/src/paths/instance/index.stories.ts new file mode 100644 index 000000000..3670c2807 --- /dev/null +++ b/packages/merchant-backoffice-ui/src/paths/instance/index.stories.ts @@ -0,0 +1,18 @@ +/* + This file is part of GNU Taler + (C) 2021-2023 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +export * as details from "./details/stories.js"; + diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/create/Create.stories.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/create/Create.stories.tsx index b81130146..c9d17ea3b 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/templates/create/Create.stories.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/create/Create.stories.tsx @@ -26,16 +26,3 @@ export default { title: "Pages/Templates/Create", component: TestedComponent, }; - -function createExample<Props>( - Component: FunctionalComponent<Props>, - props: Partial<Props>, -) { - const r = (args: any) => <Component {...args} />; - r.args = props; - return r; -} - -export const Example = createExample(TestedComponent, { - accounts: ["payto://x-taler-bank/account1", "payto://x-taler-bank/account2"], -}); diff --git a/packages/merchant-backoffice-ui/src/stories.test.ts b/packages/merchant-backoffice-ui/src/stories.test.ts new file mode 100644 index 000000000..6a401dd25 --- /dev/null +++ b/packages/merchant-backoffice-ui/src/stories.test.ts @@ -0,0 +1,49 @@ +/* + This file is part of GNU Taler + (C) 2021-2023 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * + * @author Sebastian Javier Marchano (sebasjm) + */ +import { setupI18n } from "@gnu-taler/taler-util"; +import { parseGroupImport } from "@gnu-taler/web-util/lib/index.browser"; + +import * as admin from "./paths/admin/index.stories.js"; +import * as instance from "./paths/instance/index.stories.js"; + +setupI18n("en", { en: {} }); + +import { h as create } from "preact" +import { render as renderToString } from "preact-render-to-string"; + +describe("All the examples:", () => { + const cms = parseGroupImport({ admin, instance }); + cms.forEach((group) => { + describe(`Example for group: ${group.title}`, () => { + group.list.forEach((component) => { + describe(`Component: ${component.name}`, () => { + component.examples.forEach((example) => { + it(`should render example: ${example.name}`, () => { + const vdom = create(example.render.component, example.render.props) + const html = renderToString(vdom) + // console.log(html) + }); + }); + }); + }); + }); + }); +}); diff --git a/packages/merchant-backoffice-ui/src/stories.tsx b/packages/merchant-backoffice-ui/src/stories.tsx index b7136d185..ccfde4ef2 100644 --- a/packages/merchant-backoffice-ui/src/stories.tsx +++ b/packages/merchant-backoffice-ui/src/stories.tsx @@ -1,17 +1,17 @@ /* - This file is part of GNU Anastasis - (C) 2021-2022 Anastasis SARL + This file is part of GNU Taler + (C) 2021-2023 Taler Systems S.A. - GNU Anastasis is free software; you can redistribute it and/or modify it under the - terms of the GNU Affero General Public License as published by the Free Software + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. - GNU Anastasis is distributed in the hope that it will be useful, but WITHOUT ANY + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU Affero General Public License along with - GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ /** @@ -20,7 +20,8 @@ */ import { strings } from "./i18n/strings.js"; -import * as pages from "./paths/index.stories.js"; +import * as admin from "./paths/admin/index.stories.js"; +import * as instance from "./paths/instance/index.stories.js"; import { renderStories } from "@gnu-taler/web-util/lib/index.browser"; @@ -32,7 +33,7 @@ function SortStories(a: any, b: any): number { function main(): void { renderStories( - { pages }, + { admin, instance }, { strings, }, diff --git a/packages/merchant-backoffice-ui/tests/stories.test.tsx b/packages/merchant-backoffice-ui/tests/stories.test.tsx deleted file mode 100644 index 19887431e..000000000 --- a/packages/merchant-backoffice-ui/tests/stories.test.tsx +++ /dev/null @@ -1,86 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2021-2023 Taler Systems S.A. - - GNU Taler is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> - */ - -/** - * - * @author Sebastian Javier Marchano (sebasjm) - */ -import { h, VNode } from "preact"; -import * as config from "../src/context/config.js"; -import * as i18n from "../src/context/translation.js"; -import { cleanup, render as originalRender } from "@testing-library/preact"; -import { SWRConfig } from "swr"; - -import fs from "fs"; - -function getFiles(dir: string, files_: string[] = []) { - const files = fs.readdirSync(dir); - for (const i in files) { - const name = dir + "/" + files[i]; - if (fs.statSync(name).isDirectory()) { - getFiles(name, files_); - } else { - files_.push(name); - } - } - return files_; -} - -const STORIES_NAME_REGEX = RegExp(".*.stories.tsx"); - -function render(vnode: VNode) { - const SC: any = SWRConfig - return originalRender( - <SC value={{ provider: () => new Map() }}> - {vnode} - </SC>, - ); -} - -import * as jedLib from "jed"; -const handler = new jedLib.Jed("en"); - -describe("storybook testing", () => { - it("render every story", () => { - jest - .spyOn(config, "useConfigContext") - .mockImplementation(() => ({ version: "1.0.0", currency: "EUR" })); - jest.spyOn(i18n, "useTranslationContext").mockImplementation(() => ({ - changeLanguage: () => null, - handler, - lang: "en", - })); - - getFiles("./src") - .filter((f) => STORIES_NAME_REGEX.test(f)) - .map((f) => { - // const f = "./src/paths/instance/transfers/list/List.stories.tsx"; - // eslint-disable-next-line @typescript-eslint/no-var-requires - const s = require(`../${f}`); - - delete s.default; - Object.keys(s).forEach((k) => { - const Component = s[k]; - const vdom = <Component {...Component.args} />; - expect(() => { - const { unmount } = render(vdom); - unmount(); - }).not.toThrow(); //`problem rendering ${f} example ${k}` - cleanup(); - }); - }); - }); -}); |