Add test for the language switcher

This commit is contained in:
Adrian Rumpold
2025-04-25 11:09:31 +02:00
parent 00c32f72c2
commit b281059218
7 changed files with 4473 additions and 12 deletions

View File

@@ -0,0 +1,37 @@
import { render, screen } from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import { Language } from "../../lib/types";
import LanguageSwitcher from "./LanguageSwitcher";
const renderSwitcher = (onChange = () => {}, defaultLang = Language.ENG) => {
render(<LanguageSwitcher defaultLang={defaultLang} onChange={onChange} />);
};
test("renders LanguageSwitcher component", async () => {
renderSwitcher();
const switcher = screen.getByTestId("language-switcher") as HTMLSelectElement;
expect(switcher.value).toBe(Language.ENG);
});
test("calls onChange handler when a new language is selected", async () => {
const mockOnChange = jest.fn();
renderSwitcher(mockOnChange);
const switcher = screen.getByTestId("language-switcher") as HTMLSelectElement;
await userEvent.selectOptions(switcher, Language.ESP);
expect(mockOnChange).toHaveBeenCalledWith(Language.ESP);
});
test("renders all language options correctly", () => {
renderSwitcher();
const options = screen.getAllByRole("option");
const languageValues = Object.values(Language);
expect(options).toHaveLength(languageValues.length);
languageValues.forEach((lang, index) => {
expect(options[index]).toHaveValue(lang);
expect(options[index]).toHaveTextContent(lang.toUpperCase());
});
});

View File

@@ -10,6 +10,7 @@ function LanguageSwitcher({
}) {
return (
<select
data-testid="language-switcher"
defaultValue={defaultLang}
onChange={(ev) => onChange(ev.currentTarget.value as Language)}
className={styles.languageSwitcher}