feat(tests): add comprehensive unit tests for various components including AboutPage, CallPage, and MessagesPage
This commit is contained in:
73
tests/frontend/LanguageSelector.test.js
Normal file
73
tests/frontend/LanguageSelector.test.js
Normal file
@@ -0,0 +1,73 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user