From 3844cf903fa9f1a40583ff03bc66651c3cfe4764 Mon Sep 17 00:00:00 2001 From: Imamuzzaki Abu Salam Date: Mon, 29 Jul 2024 13:55:10 +0700 Subject: [PATCH 1/3] chore(examples): add test-vitest example --- examples/test-vitest/.gitignore | 35 ++++ examples/test-vitest/@types/i18next.d.ts | 18 ++ examples/test-vitest/@types/resources.ts | 11 ++ .../test-vitest/components/Footer.test.tsx | 26 +++ examples/test-vitest/components/Footer.tsx | 33 ++++ .../test-vitest/components/Header.test.tsx | 25 +++ examples/test-vitest/components/Header.tsx | 24 +++ examples/test-vitest/i18nForTests.ts | 68 +++++++ examples/test-vitest/next-env.d.ts | 5 + examples/test-vitest/next-i18next.config.js | 28 +++ examples/test-vitest/next-utils.config.js | 26 +++ examples/test-vitest/next.config.js | 21 ++ examples/test-vitest/package.json | 45 +++++ examples/test-vitest/pages/_app.tsx | 10 + examples/test-vitest/pages/_document.tsx | 45 +++++ examples/test-vitest/pages/index.test.tsx | 64 ++++++ examples/test-vitest/pages/index.tsx | 122 ++++++++++++ .../test-vitest/pages/second-page.test.tsx | 55 ++++++ examples/test-vitest/pages/second-page.tsx | 41 ++++ examples/test-vitest/public/app.css | 185 ++++++++++++++++++ .../test-vitest/public/locales/de/common.json | 25 +++ .../test-vitest/public/locales/de/footer.json | 4 + .../public/locales/de/second-page.json | 5 + .../test-vitest/public/locales/en/common.json | 25 +++ .../test-vitest/public/locales/en/footer.json | 4 + .../public/locales/en/second-page.json | 5 + examples/test-vitest/tsconfig.json | 30 +++ examples/test-vitest/vercel.json | 5 + examples/test-vitest/vitest.config.ts | 34 ++++ examples/test-vitest/vitest.setup.ts | 10 + jest.config.js | 29 +-- package.json | 6 +- 32 files changed, 1054 insertions(+), 15 deletions(-) create mode 100644 examples/test-vitest/.gitignore create mode 100644 examples/test-vitest/@types/i18next.d.ts create mode 100644 examples/test-vitest/@types/resources.ts create mode 100644 examples/test-vitest/components/Footer.test.tsx create mode 100644 examples/test-vitest/components/Footer.tsx create mode 100644 examples/test-vitest/components/Header.test.tsx create mode 100644 examples/test-vitest/components/Header.tsx create mode 100644 examples/test-vitest/i18nForTests.ts create mode 100644 examples/test-vitest/next-env.d.ts create mode 100644 examples/test-vitest/next-i18next.config.js create mode 100644 examples/test-vitest/next-utils.config.js create mode 100644 examples/test-vitest/next.config.js create mode 100644 examples/test-vitest/package.json create mode 100644 examples/test-vitest/pages/_app.tsx create mode 100644 examples/test-vitest/pages/_document.tsx create mode 100644 examples/test-vitest/pages/index.test.tsx create mode 100644 examples/test-vitest/pages/index.tsx create mode 100644 examples/test-vitest/pages/second-page.test.tsx create mode 100644 examples/test-vitest/pages/second-page.tsx create mode 100644 examples/test-vitest/public/app.css create mode 100644 examples/test-vitest/public/locales/de/common.json create mode 100644 examples/test-vitest/public/locales/de/footer.json create mode 100644 examples/test-vitest/public/locales/de/second-page.json create mode 100644 examples/test-vitest/public/locales/en/common.json create mode 100644 examples/test-vitest/public/locales/en/footer.json create mode 100644 examples/test-vitest/public/locales/en/second-page.json create mode 100644 examples/test-vitest/tsconfig.json create mode 100644 examples/test-vitest/vercel.json create mode 100644 examples/test-vitest/vitest.config.ts create mode 100644 examples/test-vitest/vitest.setup.ts diff --git a/examples/test-vitest/.gitignore b/examples/test-vitest/.gitignore new file mode 100644 index 000000000..472010b4d --- /dev/null +++ b/examples/test-vitest/.gitignore @@ -0,0 +1,35 @@ +# compiled output +/dist +/node_modules + +# Logs +logs +*.log +npm-debug.log* +pnpm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/examples/test-vitest/@types/i18next.d.ts b/examples/test-vitest/@types/i18next.d.ts new file mode 100644 index 000000000..4bb27ff4d --- /dev/null +++ b/examples/test-vitest/@types/i18next.d.ts @@ -0,0 +1,18 @@ +/** + * If you want to enable locale keys typechecking and enhance IDE experience. + * + * Requires `resolveJsonModule:true` in your tsconfig.json. + * + * @link https://www.i18next.com/overview/typescript + */ +import 'i18next' + +// resources.ts file is generated with `npm run toc` +import resources from './resources.ts' + +declare module 'i18next' { + interface CustomTypeOptions { + defaultNS: 'common' + resources: typeof resources + } +} diff --git a/examples/test-vitest/@types/resources.ts b/examples/test-vitest/@types/resources.ts new file mode 100644 index 000000000..a955d5c6a --- /dev/null +++ b/examples/test-vitest/@types/resources.ts @@ -0,0 +1,11 @@ +import common from '../public/locales/en/common.json'; +import footer from '../public/locales/en/footer.json'; +import secondpage from '../public/locales/en/second-page.json'; + +const resources = { + common, + footer, + 'second-page': secondpage +} as const; + +export default resources; diff --git a/examples/test-vitest/components/Footer.test.tsx b/examples/test-vitest/components/Footer.test.tsx new file mode 100644 index 000000000..beea2f0d3 --- /dev/null +++ b/examples/test-vitest/components/Footer.test.tsx @@ -0,0 +1,26 @@ +import { render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { Footer } from "./Footer"; + +vi.mock("next-i18next", () => ({ + useTranslation: () => ({ + t: (key: string) => key, + }), + Trans: ({ children }: { children: React.ReactNode }) => <>{children}, +})); + +vi.mock("next-i18next/package.json", () => ({ + default: { version: "1.0.0" }, +})); + +describe("Footer", () => { + it("renders correctly", () => { + render(