Files
MeshChatX/tests/frontend/LanguageSelector.test.js
Sudo-Ivan 5a9e066b10
Some checks failed
CI / test-backend (push) Successful in 17s
CI / lint (push) Successful in 46s
Tests / test (push) Failing after 5m15s
CI / build-frontend (push) Successful in 9m33s
feat(tests): add comprehensive unit tests for various components including AboutPage, CallPage, and MessagesPage
2026-01-02 20:36:58 -06:00

74 lines
2.6 KiB
JavaScript

import { mount } from "@vue/test-utils";
import { describe, it, expect, vi } from "vitest";
import LanguageSelector from "@/components/LanguageSelector.vue";
describe("LanguageSelector.vue", () => {
const mountLanguageSelector = (locale = "en") => {
return mount(LanguageSelector, {
global: {
mocks: {
$t: (key) => key,
$i18n: {
locale: locale,
},
},
stubs: {
MaterialDesignIcon: true,
},
},
});
};
it("renders the language selector button", () => {
const wrapper = mountLanguageSelector();
expect(wrapper.find("button").exists()).toBe(true);
});
it("toggles the dropdown when the button is clicked", async () => {
const wrapper = mountLanguageSelector();
const button = wrapper.find("button");
expect(wrapper.find(".absolute").exists()).toBe(false);
await button.trigger("click");
expect(wrapper.find(".absolute").exists()).toBe(true);
await button.trigger("click");
expect(wrapper.find(".absolute").exists()).toBe(false);
});
it("lists all available languages in the dropdown", async () => {
const wrapper = mountLanguageSelector();
await wrapper.find("button").trigger("click");
const languageButtons = wrapper.findAll(".absolute button");
expect(languageButtons).toHaveLength(3);
expect(languageButtons[0].text()).toContain("English");
expect(languageButtons[1].text()).toContain("Deutsch");
expect(languageButtons[2].text()).toContain("Русский");
});
it("emits language-change when a different language is selected", async () => {
const wrapper = mountLanguageSelector("en");
await wrapper.find("button").trigger("click");
const deButton = wrapper.findAll(".absolute button")[1];
await deButton.trigger("click");
expect(wrapper.emitted("language-change")).toBeTruthy();
expect(wrapper.emitted("language-change")[0]).toEqual(["de"]);
expect(wrapper.find(".absolute").exists()).toBe(false);
});
it("does not emit language-change when the current language is selected", async () => {
const wrapper = mountLanguageSelector("en");
await wrapper.find("button").trigger("click");
const enButton = wrapper.findAll(".absolute button")[0];
await enButton.trigger("click");
expect(wrapper.emitted("language-change")).toBeFalsy();
expect(wrapper.find(".absolute").exists()).toBe(false);
});
});