110 lines
3.4 KiB
JavaScript
110 lines
3.4 KiB
JavaScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const mocks = vi.hoisted(() => ({
|
|
setColumn: vi.fn(),
|
|
addObject: vi.fn(),
|
|
listShellyRelayOptions: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("@/i18n", () => ({
|
|
default: {
|
|
global: {
|
|
t: (key) => key,
|
|
},
|
|
},
|
|
}));
|
|
|
|
vi.mock("@/services/shellyRelayOptions.js", () => ({
|
|
listShellyRelayOptions: mocks.listShellyRelayOptions,
|
|
}));
|
|
|
|
vi.mock("@/components/session/token/SessionUser.vue", () => ({
|
|
SessionUser: {
|
|
objects: {
|
|
departments: {
|
|
get: {
|
|
all: vi.fn().mockResolvedValue([]),
|
|
},
|
|
},
|
|
self_serve_machine_types: {
|
|
get: {
|
|
all: vi.fn().mockResolvedValue([]),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}));
|
|
|
|
vi.mock("@/components/session/token/SessionUser/Objects/ObjectsGlobal.vue", () => ({
|
|
ObjectsGlobal: {
|
|
set: {
|
|
column: mocks.setColumn,
|
|
},
|
|
add: {
|
|
object: mocks.addObject,
|
|
},
|
|
get: {
|
|
objects: vi.fn(),
|
|
object: vi.fn(),
|
|
},
|
|
delete: {
|
|
object: vi.fn(),
|
|
},
|
|
showEditObjectFieldForm: vi.fn(),
|
|
showCreateObjectForm: vi.fn(),
|
|
showDeleteObjectForm: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
import { DepartmentLanes } from "@/components/session/token/SessionUser/Objects/DepartmentLanes.vue";
|
|
|
|
describe("DepartmentLanes relay option fields", () => {
|
|
beforeEach(() => {
|
|
mocks.setColumn.mockReset();
|
|
mocks.addObject.mockReset();
|
|
mocks.listShellyRelayOptions.mockReset();
|
|
});
|
|
|
|
it("uses Shelly-backed select fields for relay bindings", async () => {
|
|
mocks.listShellyRelayOptions.mockResolvedValue([{ id: "shelly-plus-01", name: "Entry Gate (shelly-plus-01)" }]);
|
|
|
|
const relayOptions = await DepartmentLanes.columns.relay_in_id.options();
|
|
|
|
expect(DepartmentLanes.columns.relay_in_id.type).toBe("select");
|
|
expect(DepartmentLanes.columns.relay_out_id.type).toBe("select");
|
|
expect(DepartmentLanes.columns.relay_machine_id.type).toBe("select");
|
|
expect(DepartmentLanes.columns.relay_machine_program_picker_id.type).toBe("select");
|
|
expect(DepartmentLanes.columns.relay_machine_cleaner_id.type).toBe("select");
|
|
expect(relayOptions).toEqual([
|
|
{ id: 0, name: "global.not_configured" },
|
|
{ id: "shelly-plus-01", name: "Entry Gate (shelly-plus-01)" },
|
|
]);
|
|
});
|
|
|
|
it("normalizes blank relay selections to null when saving", async () => {
|
|
mocks.setColumn.mockResolvedValue({});
|
|
mocks.addObject.mockResolvedValue({});
|
|
|
|
await DepartmentLanes.set.relay_in_id(7, "0");
|
|
await DepartmentLanes.set.relay_out_id(7, "");
|
|
await DepartmentLanes.set.relay_machine_id(7, " ");
|
|
await DepartmentLanes.add(1, "Lane 7", "0", "", " ", "shelly-plus-02", null, null, null);
|
|
|
|
expect(mocks.setColumn).toHaveBeenNthCalledWith(1, DepartmentLanes.meta.endpoint, 7, "relay_in_id", null);
|
|
expect(mocks.setColumn).toHaveBeenNthCalledWith(2, DepartmentLanes.meta.endpoint, 7, "relay_out_id", null);
|
|
expect(mocks.setColumn).toHaveBeenNthCalledWith(3, DepartmentLanes.meta.endpoint, 7, "relay_machine_id", null);
|
|
expect(mocks.addObject).toHaveBeenCalledWith(DepartmentLanes.meta.endpoint, {
|
|
department: 1,
|
|
name: "Lane 7",
|
|
relay_in_id: null,
|
|
relay_out_id: null,
|
|
relay_machine_id: null,
|
|
relay_machine_program_picker_id: "shelly-plus-02",
|
|
relay_machine_cleaner_id: null,
|
|
dynamic_image_id: null,
|
|
machine_type_id: null,
|
|
selfserve_enabled: true,
|
|
});
|
|
});
|
|
});
|