aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-12-20 15:42:53 -0300
committerSebastian <sebasjm@gmail.com>2022-12-20 15:42:53 -0300
commit382e66b179d6fda2598936196b2ae1b97bfab8ef (patch)
tree84b6be6a6f83626ece36160e102c22c94ab7132b /packages
parent1500c91f36da96226af1226c10bdd83c55c92c23 (diff)
fix testing not compiling
Diffstat (limited to 'packages')
-rwxr-xr-xpackages/merchant-backoffice-ui/build.mjs2
-rw-r--r--packages/merchant-backoffice-ui/package.json6
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/create/stories.ts48
-rw-r--r--packages/merchant-backoffice-ui/src/paths/admin/index.stories.ts18
-rw-r--r--packages/merchant-backoffice-ui/src/paths/index.stories.ts2
-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.ts18
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/templates/create/Create.stories.tsx13
-rw-r--r--packages/merchant-backoffice-ui/src/stories.test.ts49
-rw-r--r--packages/merchant-backoffice-ui/src/stories.tsx21
-rw-r--r--packages/merchant-backoffice-ui/tests/stories.test.tsx86
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();
- });
- });
- });
-});