fix testing not compiling
This commit is contained in:
parent
1500c91f36
commit
382e66b179
@ -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];
|
||||
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
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
|
||||
(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,
|
||||
},
|
||||
|
@ -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