Some checks failed
CI / test-backend (push) Successful in 32s
CI / lint (push) Failing after 2m12s
CI / build-frontend (pull_request) Successful in 1m38s
Build and Publish Docker Image / build (pull_request) Has been skipped
CI / test-backend (pull_request) Successful in 24s
OSV-Scanner PR Scan / scan-pr (pull_request) Successful in 53s
CI / test-lang (pull_request) Successful in 1m15s
CI / lint (pull_request) Failing after 5m8s
CI / build-frontend (push) Successful in 9m46s
CI / test-lang (push) Successful in 9m48s
Tests / test (push) Successful in 13m32s
Tests / test (pull_request) Successful in 11m23s
Build Test / Build and Test (push) Successful in 15m56s
Build and Publish Docker Image / build-dev (pull_request) Successful in 13m42s
Build Test / Build and Test (pull_request) Successful in 16m9s
- Introduced new test files for telemetry functionality, including integration, fuzzing, and extended tests to ensure robustness and performance. - Added tests for parsing LXMF display names and telemetry data, addressing potential bugs and ensuring correct handling of various input formats. - Implemented performance tests for the InterfacesPage component, validating rendering efficiency with a large number of discovered interfaces. - Enhanced existing tests for markdown rendering and link utilities to cover additional edge cases and improve stability.
76 lines
2.7 KiB
JavaScript
76 lines
2.7 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,
|
|
Teleport: 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(".fixed").exists()).toBe(false);
|
|
|
|
await button.trigger("click");
|
|
expect(wrapper.find(".fixed").exists()).toBe(true);
|
|
|
|
await button.trigger("click");
|
|
expect(wrapper.find(".fixed").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(".fixed button");
|
|
expect(languageButtons).toHaveLength(4);
|
|
expect(languageButtons[0].text()).toContain("English");
|
|
expect(languageButtons[1].text()).toContain("Deutsch");
|
|
expect(languageButtons[2].text()).toContain("Русский");
|
|
expect(languageButtons[3].text()).toContain("Italiano");
|
|
});
|
|
|
|
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(".fixed button")[1];
|
|
await deButton.trigger("click");
|
|
|
|
expect(wrapper.emitted("language-change")).toBeTruthy();
|
|
expect(wrapper.emitted("language-change")[0]).toEqual(["de"]);
|
|
expect(wrapper.find(".fixed").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(".fixed button")[0];
|
|
await enButton.trigger("click");
|
|
|
|
expect(wrapper.emitted("language-change")).toBeFalsy();
|
|
expect(wrapper.find(".fixed").exists()).toBe(false);
|
|
});
|
|
});
|