From 14488c79e142825e663eb9360401b4783024f495 Mon Sep 17 00:00:00 2001 From: Vinicius Vieira Date: Fri, 28 Jun 2019 14:45:52 -0300 Subject: [PATCH 1/2] tests: updated i18next example --- examples/__tests__/i18next.js | 91 +++++++++++++++++++++++++++++++++++ package.json | 6 ++- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 examples/__tests__/i18next.js diff --git a/examples/__tests__/i18next.js b/examples/__tests__/i18next.js new file mode 100644 index 00000000..08fc5f1f --- /dev/null +++ b/examples/__tests__/i18next.js @@ -0,0 +1,91 @@ +import React, {Fragment} from 'react' +import {initReactI18next, I18nextProvider, Trans} from 'react-i18next' +import i18n from 'i18next' +import Backend from 'i18next-xhr-backend' +import LanguageDetector from 'i18next-browser-languagedetector' +import {render, cleanup, getByTestId, fireEvent} from 'react-testing-library' +import 'jest-dom/extend-expect' + +const resources = { + en: { + translation: { + 'Welcome to React': 'Welcome to React and react-i18next', + }, + }, + pt: { + translation: { + 'Welcome to React': 'Bem vindo ao React e ao react-i18next', + }, + }, +} + +i18n + .use(Backend) + .use(LanguageDetector) + .use(initReactI18next) + .init({ + fallbackLng: 'en', + debug: false, + resources: { + en: resources.en, + pt: resources.pt, + }, + interpolation: { + escapeValue: false, // not needed for react as it escapes by default + }, + }) + +const renderWithi18next = Component => { + let rerender = () => {} + const Comp = React.cloneElement(Component, { + changeLanguage: lng => { + i18n.changeLanguage(lng) + rerender({Comp}) + }, + }) + const defaultRender = render( + {Comp}, + ) + rerender = defaultRender.rerender + return defaultRender +} + +const MainView = props => { + return ( + +
+ + +
+

+ Welcome to React +

+
+ ) +} + +afterEach(cleanup) + +describe('lets make some tests', () => { + test('it should test lang', () => { + const {container} = renderWithi18next() + expect(getByTestId(container, 'text-trans')).toBeDefined() + expect(getByTestId(container, 'text-trans')).toHaveTextContent( + 'Welcome to React and react-i18next', + ) + fireEvent.click(getByTestId(container, 'pt-trans')) + expect(getByTestId(container, 'text-trans')).toHaveTextContent( + 'Bem vindo ao React e ao react-i18next', + ) + }) +}) diff --git a/package.json b/package.json index db896df1..1706a696 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,8 @@ "license": "MIT", "dependencies": { "@babel/runtime": "^7.4.5", - "@testing-library/dom": "^5.0.0" + "@testing-library/dom": "^5.0.0", + "react-i18next": "^10.11.2" }, "devDependencies": { "@reach/router": "^1.2.1", @@ -52,6 +53,9 @@ "eslint-import-resolver-jest": "^2.1.1", "history": "^4.9.0", "intl": "^1.2.5", + "i18next": "17.0.4", + "i18next-browser-languagedetector": "3.0.1", + "i18next-xhr-backend": "3.0.0", "jest-dom": "3.4.0", "jest-in-case": "^1.0.2", "kcd-scripts": "1.4.0", From d0452d0e885314ea95408318a4a235432a11a461 Mon Sep 17 00:00:00 2001 From: Vinicius Vieira Date: Fri, 28 Jun 2019 14:51:08 -0300 Subject: [PATCH 2/2] fix: package devDependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1706a696..646e8d0a 100644 --- a/package.json +++ b/package.json @@ -42,8 +42,7 @@ "license": "MIT", "dependencies": { "@babel/runtime": "^7.4.5", - "@testing-library/dom": "^5.0.0", - "react-i18next": "^10.11.2" + "@testing-library/dom": "^5.0.0" }, "devDependencies": { "@reach/router": "^1.2.1", @@ -62,6 +61,7 @@ "react": "^16.8.6", "react-dom": "^16.8.6", "react-intl": "^2.9.0", + "react-i18next": "^10.11.2", "react-redux": "7.0.3", "react-router": "^5.0.0", "react-router-dom": "^5.0.0",