Skip to content

Commit 5414014

Browse files
committed
Fix tests
1 parent 88a6805 commit 5414014

File tree

8 files changed

+600
-30
lines changed

8 files changed

+600
-30
lines changed

package-lock.json

Lines changed: 571 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,12 @@
8787
],
8888
"devDependencies": {
8989
"@codecov/sveltekit-plugin": "^1.7.0",
90+
"@fetch-mock/vitest": "^0.2.6",
9091
"@playwright/test": "^1.49.1",
9192
"@sveltejs/adapter-vercel": "^5.5.2",
9293
"@sveltejs/package": "^2.3.7",
9394
"@sveltejs/vite-plugin-svelte": "^5.0.3",
95+
"@testing-library/jest-dom": "^6.6.3",
9496
"@testing-library/svelte": "^5.2.6",
9597
"@types/eslint": "^9.6.0",
9698
"@types/node": "^22.9.1",
@@ -124,6 +126,7 @@
124126
"date-fns": "^4.1.0",
125127
"i18next": "^24.2.0",
126128
"i18next-browser-languagedetector": "^8.0.0",
129+
"jsdom": "^25.0.1",
127130
"pulltorefreshjs": "^0.1.22",
128131
"svelte": "^5.16.2",
129132
"svelte-i18next": "^2.2.2"

setupTest.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import * as matchers from "@testing-library/jest-dom/matchers";
2+
import { expect } from "vitest";
3+
4+
expect.extend(matchers);

src/lib/modules/i18n/LanguageSelector.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
22
import { availableLanguages, currentLanguage, getI18n, t } from "$lib/stores/i18n.store";
3-
3+
44
const i18n = getI18n();
55
66
function changeLanguage(event: Event & { currentTarget: EventTarget & HTMLSelectElement }) {
Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
1-
import { createI18nStore, currentLanguage } from "$lib/i18n/i18n.store";
2-
import fetchMockVitest from "@fetch-mock/vitest";
1+
import { createI18nStore, currentLanguage } from "$lib/stores/i18n.store";
32
import { fireEvent, render, screen } from "@testing-library/svelte";
43
import { get } from "svelte/store";
4+
import { describe, expect, it } from "vitest";
55
import LanguageSelector from "./LanguageSelector.svelte";
66

77
describe("LanguageSelector", () => {
8-
beforeEach(() => {
9-
fetchMockVitest.mockGlobal();
10-
fetchMockVitest.get("/api/i18n/translations", {
11-
elements: []
12-
});
13-
});
14-
it("should render correctly", () => {
15-
const { getByText } = render(LanguageSelector, { context: new Map([["i18n", createI18nStore()]]) });
16-
expect(getByText("i18n.language")).toBeInTheDocument();
17-
});
8+
it("should render correctly", () => {
9+
const { getByText } = render(LanguageSelector, {
10+
context: new Map([["i18n", createI18nStore()]])
11+
});
12+
expect(getByText("i18n.language")).toBeInTheDocument();
13+
});
1814

19-
it("should change language on select change", async () => {
20-
render(LanguageSelector, { context: new Map([["i18n", createI18nStore()]]) });
21-
const select = screen.getByTestId("language-selector") as HTMLSelectElement;
22-
await fireEvent.change(select, { target: { value: "de" } });
23-
expect(get(currentLanguage)).toBe("de");
24-
await fireEvent.change(select, { target: { value: "en" } });
25-
expect(get(currentLanguage)).toBe("en");
26-
});
15+
it("should change language on select change", async () => {
16+
render(LanguageSelector, { context: new Map([["i18n", createI18nStore()]]) });
17+
const select = screen.getByTestId("language-selector") as HTMLSelectElement;
18+
await fireEvent.change(select, { target: { value: "de" } });
19+
expect(get(currentLanguage)).toBe("de");
20+
await fireEvent.change(select, { target: { value: "en" } });
21+
expect(get(currentLanguage)).toBe("en");
22+
});
2723
});

src/lib/modules/navigation/breakpoint.service.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, expect, it } from "vitest";
2-
import { breakpointService } from "./breakpoint.service.svelte.js";
2+
import { breakpointService } from "./breakpoint.service.svelte";
33

44
describe("BreakpointService", () => {
55
it("should match breakpoints", () => {

src/lib/stores/i18n.store.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { getContext, setContext } from "svelte";
55
import type { Readable } from "svelte/store";
66
import { derived, get, writable } from "svelte/store";
77

8-
const createI18nStore = (i18nNextOptions?: Partial<InitOptions>) => {
8+
export const createI18nStore = (i18nNextOptions?: Partial<InitOptions>) => {
99
i18nNext.use(LanguageDetector).init({
1010
fallbackLng: "en",
1111
detection: {
@@ -64,7 +64,7 @@ i18nNext.on("languageChanged", (lng) => {
6464
const formattedLanguage = lng.split("-")[0];
6565
currentLanguage.set(formattedLanguage);
6666
});
67-
export const availableLanguages = writable(["de"]);
67+
export const availableLanguages = writable(["de", "en"]);
6868
export const translationsUpdated = writable(undefined);
6969

7070
export function translateInlineTranslation(

vite.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { codecovSvelteKitPlugin } from "@codecov/sveltekit-plugin";
22
import { sveltekit } from "@sveltejs/kit/vite";
3-
import { svelteTesting } from '@testing-library/svelte/vite';
3+
import { svelteTesting } from "@testing-library/svelte/vite";
44
import { readFileSync } from "fs";
55
import { fileURLToPath } from "url";
66
import { defineConfig } from "vite";
77

8-
98
const file = fileURLToPath(new URL("package.json", import.meta.url));
109
const json = readFileSync(file, "utf8");
1110
const pkg = JSON.parse(json);
@@ -28,6 +27,7 @@ export default defineConfig({
2827
environment: "jsdom",
2928
include: ["src/**/*.test.ts"],
3029
reporters: ["default", "junit"],
30+
setupFiles: ["./setupTest.js"],
3131
outputFile: { junit: "test-results/junit.xml" },
3232
coverage: {
3333
provider: "v8",

0 commit comments

Comments
 (0)