diff options
Diffstat (limited to 'packages/taler-wallet-webextension/tests')
4 files changed, 156 insertions, 0 deletions
diff --git a/packages/taler-wallet-webextension/tests/__mocks__/fileMocks.ts b/packages/taler-wallet-webextension/tests/__mocks__/fileMocks.ts new file mode 100644 index 000000000..0c045e9d1 --- /dev/null +++ b/packages/taler-wallet-webextension/tests/__mocks__/fileMocks.ts @@ -0,0 +1,24 @@ +/* + 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) + */ + +// This fixed an error related to the CSS and loading gif breaking my Jest test +// See https://facebook.github.io/jest/docs/en/webpack.html#handling-static-assets +export default 'test-file-stub'; diff --git a/packages/taler-wallet-webextension/tests/__mocks__/fileTransformer.js b/packages/taler-wallet-webextension/tests/__mocks__/fileTransformer.js new file mode 100644 index 000000000..e6193f8fd --- /dev/null +++ b/packages/taler-wallet-webextension/tests/__mocks__/fileTransformer.js @@ -0,0 +1,31 @@ +/* + 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) +*/ +// fileTransformer.js + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require('path'); + +module.exports = { + process(src, filename, config, options) { + return 'module.exports = ' + JSON.stringify(path.basename(filename)) + ';'; + }, +}; + diff --git a/packages/taler-wallet-webextension/tests/__mocks__/setupTests.ts b/packages/taler-wallet-webextension/tests/__mocks__/setupTests.ts new file mode 100644 index 000000000..841e0babc --- /dev/null +++ b/packages/taler-wallet-webextension/tests/__mocks__/setupTests.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) + */ + +import 'regenerator-runtime/runtime' +import { configure } from 'enzyme'; +import Adapter from 'enzyme-adapter-preact-pure'; + +configure({ + adapter: new Adapter() +}); + +// 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 diff --git a/packages/taler-wallet-webextension/tests/i18n.test.tsx b/packages/taler-wallet-webextension/tests/i18n.test.tsx new file mode 100644 index 000000000..adbb6d7d8 --- /dev/null +++ b/packages/taler-wallet-webextension/tests/i18n.test.tsx @@ -0,0 +1,68 @@ +/* + This file is part of GNU Taler + (C) 2020 Taler Systems SA + + 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/> + */ + +// import * as test from "ava"; +import { internalSetStrings, str, Translate } from "../src/i18n"; +import { render, configure } from "enzyme"; +import Adapter from 'enzyme-adapter-preact-pure'; +import { h } from "preact"; + +configure({ adapter: new Adapter() }); + +const testStrings = { + domain: "messages", + locale_data: { + messages: { + str1: ["foo1"], + str2: [""], + "str3 %1$s / %2$s": ["foo3 %2$s ; %1$s"], + "": { + domain: "messages", + plural_forms: "nplurals=2; plural=(n != 1);", + lang: "", + }, + }, + }, +}; + +test("str translation", (done) => { + + // Alias, so we nly use the function for lookups, not for string extranction. + const strAlias = str; + const TranslateAlias = Translate; + internalSetStrings(testStrings); + expect(strAlias`str1`).toEqual("foo1"); + expect(strAlias`str2`).toEqual("str2"); + const a = "a"; + const b = "b"; + expect(strAlias`str3 ${a} / ${b}`).toEqual("foo3 b ; a"); + const r = render(<TranslateAlias>str1</TranslateAlias>); + expect(r.text()).toEqual("foo1"); + + const r2 = render( + <TranslateAlias> + str3 <span>{a}</span> / <span>{b}</span> + </TranslateAlias>, + ); + expect(r2.text()).toEqual("foo3 b ; a"); + + done(); +}); + +// test.default("existing str translation", (t) => { +// internalSetStrings(strings); +// t.pass(); +// }); |