- Introduced `.prettierrc.json` to enforce consistent code formatting across the project. - Updated unit and e2e test files to address formatting issues, improve readability, and ensure alignment with the new Prettier configuration.
161 lines
4.5 KiB
JavaScript
161 lines
4.5 KiB
JavaScript
// @vitest-environment jsdom
|
|
import { defineComponent, h, nextTick } from "vue";
|
|
import { mount } from "@vue/test-utils";
|
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("vue-router", async () => {
|
|
const { reactive } = await import("vue");
|
|
const route = reactive({ params: { departmentId: undefined } });
|
|
return {
|
|
useRoute: () => route,
|
|
__setDepartmentId: (departmentId) => {
|
|
route.params.departmentId = departmentId;
|
|
},
|
|
};
|
|
});
|
|
|
|
vi.mock("@/components/pagination/departmentTabs.vue", async () => {
|
|
const { ref } = await import("vue");
|
|
const departments = ref([]);
|
|
const getDepartments = vi.fn();
|
|
return {
|
|
departments,
|
|
getDepartments,
|
|
__departmentsRef: departments,
|
|
__getDepartmentsMock: getDepartments,
|
|
};
|
|
});
|
|
|
|
vi.mock("@/components/displays/pagination/PaginationDisplayIsSmall.vue", async () => {
|
|
const { ref } = await import("vue");
|
|
return {
|
|
isSmall: ref(true),
|
|
};
|
|
});
|
|
|
|
vi.mock("@/components/displays/department/pos/steps/mobile/objects/PosDepartmentStepMobileFlow.vue", async () => {
|
|
const { ref } = await import("vue");
|
|
return {
|
|
locations: {
|
|
location: ref(null),
|
|
getDistance: () => 0,
|
|
},
|
|
};
|
|
});
|
|
|
|
vi.mock("@/components/viewport/page/headers/ViewportHeaderSettings.vue", async () => {
|
|
const { ref } = await import("vue");
|
|
return {
|
|
toggleExpanded: vi.fn(),
|
|
isOpen: ref(false),
|
|
getDepartmentSelectionVisibility: vi.fn(() => true),
|
|
};
|
|
});
|
|
|
|
vi.mock("@/components/session/token/SessionUser.vue", () => {
|
|
const selectDepartment = vi.fn();
|
|
const canAccessDepartment = vi.fn(() => true);
|
|
const getDepartmentIdFromUrl = vi.fn(() => undefined);
|
|
|
|
return {
|
|
SessionUser: {
|
|
canAccessDepartment: (...args) => canAccessDepartment(...args),
|
|
functions: {
|
|
selectDepartment: (...args) => selectDepartment(...args),
|
|
getDepartmentIdFromUrl: (...args) => getDepartmentIdFromUrl(...args),
|
|
},
|
|
objects: {
|
|
global: {
|
|
language: {
|
|
select: "Select",
|
|
},
|
|
},
|
|
departments: {
|
|
meta: {
|
|
labels: {
|
|
single: "department",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
__sessionMocks: {
|
|
selectDepartment,
|
|
canAccessDepartment,
|
|
getDepartmentIdFromUrl,
|
|
},
|
|
};
|
|
});
|
|
|
|
vi.mock("buefy", () => {
|
|
const Tooltip = defineComponent({
|
|
name: "MockTooltip",
|
|
setup(_props, { slots }) {
|
|
return () => h("div", { "data-testid": "mock-tooltip" }, slots.default ? slots.default() : []);
|
|
},
|
|
});
|
|
|
|
const Button = defineComponent({
|
|
name: "MockButton",
|
|
props: {
|
|
label: {
|
|
type: String,
|
|
default: "",
|
|
},
|
|
},
|
|
setup(props) {
|
|
return () => h("button", { "data-testid": "mock-button-label" }, props.label);
|
|
},
|
|
});
|
|
|
|
const passthrough = defineComponent({
|
|
name: "MockPassthrough",
|
|
setup(_props, { slots }) {
|
|
return () => h("div", slots.default ? slots.default() : []);
|
|
},
|
|
});
|
|
|
|
return {
|
|
BTooltip: Tooltip,
|
|
BButton: Button,
|
|
BDropdownItem: passthrough,
|
|
BField: passthrough,
|
|
BIcon: passthrough,
|
|
BSelect: passthrough,
|
|
};
|
|
});
|
|
|
|
import NavigationMenuDepartment from "@/components/viewport/page/headers/menu/NavigationMenuDepartment.vue";
|
|
import { __setDepartmentId } from "vue-router";
|
|
import { __departmentsRef, __getDepartmentsMock } from "@/components/pagination/departmentTabs.vue";
|
|
import { __sessionMocks } from "@/components/session/token/SessionUser.vue";
|
|
|
|
describe("NavigationMenuDepartment", () => {
|
|
beforeEach(() => {
|
|
__getDepartmentsMock.mockReset();
|
|
__sessionMocks.selectDepartment.mockReset();
|
|
__sessionMocks.canAccessDepartment.mockReset();
|
|
__sessionMocks.getDepartmentIdFromUrl.mockReset();
|
|
|
|
__sessionMocks.canAccessDepartment.mockReturnValue(true);
|
|
__sessionMocks.getDepartmentIdFromUrl.mockReturnValue(undefined);
|
|
__departmentsRef.value = [
|
|
{ id: 9, name: "Nord", description: "", latitude: 55.6, longitude: 12.5, branding: 0 },
|
|
{ id: 12, name: "Taastrup", description: "", latitude: 55.7, longitude: 12.4, branding: 0 },
|
|
];
|
|
__setDepartmentId(undefined);
|
|
});
|
|
|
|
it("updates the selected department label when route department changes", async () => {
|
|
const wrapper = mount(NavigationMenuDepartment);
|
|
|
|
expect(wrapper.get("[data-testid='mock-button-label']").text()).toBe("Select department");
|
|
expect(__getDepartmentsMock).toHaveBeenCalledTimes(1);
|
|
|
|
__setDepartmentId("12");
|
|
await nextTick();
|
|
|
|
expect(wrapper.get("[data-testid='mock-button-label']").text()).toBe("Taastrup");
|
|
});
|
|
});
|