fix testing not compiling
This commit is contained in:
parent
1500c91f36
commit
382e66b179
@ -64,7 +64,7 @@ function getFilesInDirectory(startPath, regex) {
|
|||||||
return result
|
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];
|
const entryPoints = ["src/index.tsx", "src/stories.tsx", ...allTestFiles];
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"check": "tsc",
|
"check": "tsc",
|
||||||
"compile": "tsc && ./build.mjs",
|
"compile": "tsc && ./build.mjs",
|
||||||
"dev": "preact watch --port ${PORT:=8080} --no-sw --no-esm",
|
"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}'",
|
"lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
|
||||||
"i18n:extract": "pogen extract",
|
"i18n:extract": "pogen extract",
|
||||||
"i18n:merge": "pogen merge",
|
"i18n:merge": "pogen merge",
|
||||||
@ -51,7 +51,7 @@
|
|||||||
"@testing-library/preact-hooks": "^1.1.0",
|
"@testing-library/preact-hooks": "^1.1.0",
|
||||||
"@types/history": "^4.7.8",
|
"@types/history": "^4.7.8",
|
||||||
"@types/jest": "^26.0.23",
|
"@types/jest": "^26.0.23",
|
||||||
"@types/mocha": "^8.2.2",
|
"@types/mocha": "^8.2.3",
|
||||||
"@types/node": "^18.8.5",
|
"@types/node": "^18.8.5",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||||
"@typescript-eslint/parser": "^4.22.0",
|
"@typescript-eslint/parser": "^4.22.0",
|
||||||
@ -73,6 +73,8 @@
|
|||||||
"inline-chunk-html-plugin": "^1.1.1",
|
"inline-chunk-html-plugin": "^1.1.1",
|
||||||
"jest": "^26.6.3",
|
"jest": "^26.6.3",
|
||||||
"jest-preset-preact": "^4.0.2",
|
"jest-preset-preact": "^4.0.2",
|
||||||
|
"mocha": "^9.2.0",
|
||||||
|
"preact-render-to-string": "^5.2.6",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"sass": "1.56.1",
|
"sass": "1.56.1",
|
||||||
"typedoc": "^0.20.36",
|
"typedoc": "^0.20.36",
|
||||||
|
@ -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
|
||||||
|
// }
|
@ -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";
|
@ -1,2 +0,0 @@
|
|||||||
export * as a1 from "./admin/create/Create.stories.js";
|
|
||||||
export * as a2 from "./instance/details/Details.stories.js";
|
|
@ -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";
|
||||||
|
|
@ -26,16 +26,3 @@ export default {
|
|||||||
title: "Pages/Templates/Create",
|
title: "Pages/Templates/Create",
|
||||||
component: TestedComponent,
|
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"],
|
|
||||||
});
|
|
||||||
|
49
packages/merchant-backoffice-ui/src/stories.test.ts
Normal file
49
packages/merchant-backoffice-ui/src/stories.test.ts
Normal file
@ -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)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -1,17 +1,17 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of GNU Anastasis
|
This file is part of GNU Taler
|
||||||
(C) 2021-2022 Anastasis SARL
|
(C) 2021-2023 Taler Systems S.A.
|
||||||
|
|
||||||
GNU Anastasis is free software; you can redistribute it and/or modify it under the
|
GNU Taler 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
|
terms of the GNU General Public License as published by the Free Software
|
||||||
Foundation; either version 3, or (at your option) any later version.
|
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
|
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
|
You should have received a copy of the GNU General Public License along with
|
||||||
GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
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 { 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";
|
import { renderStories } from "@gnu-taler/web-util/lib/index.browser";
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ function SortStories(a: any, b: any): number {
|
|||||||
|
|
||||||
function main(): void {
|
function main(): void {
|
||||||
renderStories(
|
renderStories(
|
||||||
{ pages },
|
{ admin, instance },
|
||||||
{
|
{
|
||||||
strings,
|
strings,
|
||||||
},
|
},
|
||||||
|
@ -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();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
Reference in New Issue
Block a user