diff options
author | Sebastian <sebasjm@gmail.com> | 2021-09-03 12:03:59 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2021-09-03 12:05:23 -0300 |
commit | 1ea598b048375c4043ac4faff13af0af6ae9b041 (patch) | |
tree | 7868158762f96d64bd4ba15de5fe037c1557b4dd /packages/taler-wallet-webextension/tests | |
parent | a4489b80e3da4ebdbdd6fe009fef278adf9d4623 (diff) | |
download | wallet-core-1ea598b048375c4043ac4faff13af0af6ae9b041.tar.xz |
automated test all stories
Diffstat (limited to 'packages/taler-wallet-webextension/tests')
4 files changed, 109 insertions, 4 deletions
diff --git a/packages/taler-wallet-webextension/tests/__mocks__/linaria.ts b/packages/taler-wallet-webextension/tests/__mocks__/linaria.ts new file mode 100644 index 000000000..398ac0ec1 --- /dev/null +++ b/packages/taler-wallet-webextension/tests/__mocks__/linaria.ts @@ -0,0 +1,33 @@ +/* + This file is part of GNU Taler + (C) 2021 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) +*/ + +/** + * Here we are mocking the linaria runtime since it should not be used in + * runtime. + */ +export const styled = new Proxy(function (tag: any) { + return jest.fn(() => `mock-styled.${tag}`); +}, { + get(o, prop) { + return o(prop); + }, +}) + diff --git a/packages/taler-wallet-webextension/tests/__mocks__/setupTests.ts b/packages/taler-wallet-webextension/tests/__mocks__/setupTests.ts index 841e0babc..bae5c128f 100644 --- a/packages/taler-wallet-webextension/tests/__mocks__/setupTests.ts +++ b/packages/taler-wallet-webextension/tests/__mocks__/setupTests.ts @@ -29,5 +29,6 @@ configure({ // Polyfill for encoding which isn't present globally in jsdom import { TextEncoder, TextDecoder } from 'util' -global.TextEncoder = TextEncoder -global.TextDecoder = TextDecoder
\ No newline at end of file +global.TextEncoder = TextEncoder; +global.TextDecoder = TextDecoder; +(global as any).chrome = {};
\ No newline at end of file diff --git a/packages/taler-wallet-webextension/tests/i18n.test.tsx b/packages/taler-wallet-webextension/tests/i18n.test.tsx index bba1770b8..ae8b44bb0 100644 --- a/packages/taler-wallet-webextension/tests/i18n.test.tsx +++ b/packages/taler-wallet-webextension/tests/i18n.test.tsx @@ -15,8 +15,9 @@ */ // import * as test from "ava"; -import { internalSetStrings, str, Translate } from "@gnu-taler/taler-util"; +import { internalSetStrings, i18n, Translate } from "@gnu-taler/taler-util"; import { render, configure } from "enzyme"; +import { h } from 'preact'; import Adapter from 'enzyme-adapter-preact-pure'; configure({ adapter: new Adapter() }); @@ -40,7 +41,7 @@ const testStrings = { test("str translation", (done) => { // Alias, so we nly use the function for lookups, not for string extranction. - const strAlias = str; + const strAlias = i18n.str; const TranslateAlias = Translate; internalSetStrings(testStrings); expect(strAlias`str1`).toEqual("foo1"); diff --git a/packages/taler-wallet-webextension/tests/stories.test.tsx b/packages/taler-wallet-webextension/tests/stories.test.tsx new file mode 100644 index 000000000..0122dfaeb --- /dev/null +++ b/packages/taler-wallet-webextension/tests/stories.test.tsx @@ -0,0 +1,70 @@ +/* + This file is part of GNU Taler + (C) 2021 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 { mount } from 'enzyme'; +import { h } from 'preact'; + +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 re = RegExp('.*\.stories.tsx') + +import { setupI18n } from '@gnu-taler/taler-util'; +setupI18n('en',{'en':{}}) + +it('render every story', () => { + // jest.spyOn(i18n, 'useTranslationContext').mockImplementation(() => ({ changeLanguage: () => null, lang: 'en' })); + + getFiles('./src').filter(f => re.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]; + expect(() => { + try { + let p = mount(<Component {...Component.args} /> as any) + p.mount() + p.unmount() + p.mount(); + } catch (e) { + console.log(e) + throw e + } + }).not.toThrow() //`problem rendering ${f} example ${k}` + + }) + }) +}); |