42 lines
2.1 KiB
TypeScript
42 lines
2.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
const readSource = () => readFileSync(resolve(__dirname, "./MaterialEquipment.vue"), "utf8");
|
|
|
|
describe("MaterialEquipment desktop list workflow", () => {
|
|
it("keeps desktop equipment browsing in a master detail workflow", () => {
|
|
const source = readSource();
|
|
|
|
expect(source).toContain("const isDesktop = isTauriRuntime();");
|
|
expect(source).toContain('class="equipment-workbench"');
|
|
expect(source).toContain(":class=\"{ 'is-desktop': isDesktop }\"");
|
|
expect(source).toContain('class="equipment-preview-pane"');
|
|
expect(source).toContain('ref="equipmentTablePaneRef"');
|
|
expect(source).toContain("selectedEquipment");
|
|
expect(source).toContain('@row-click="handleEquipmentRowClick"');
|
|
expect(source).toContain('@row-dblclick="openEquipmentDetail"');
|
|
expect(source).toContain('@keydown.enter.prevent="openSelectedEquipment"');
|
|
expect(source).toContain("selectEquipment(row);");
|
|
expect(source).toContain("equipmentTablePaneRef.value?.focus({ preventScroll: true });");
|
|
expect(source).toContain("return;");
|
|
expect(source).toContain('router.push({ name: "MaterialEquipmentDetail"');
|
|
expect(source).toContain('"row-selected"');
|
|
expect(source).not.toContain('@row-click="onRowClick"');
|
|
});
|
|
|
|
it("routes desktop equipment actions through preview and context menu controls", () => {
|
|
const source = readSource();
|
|
|
|
expect(source).toContain('@row-contextmenu="openEquipmentContextMenu"');
|
|
expect(source).toContain("equipmentContextMenu");
|
|
expect(source).toContain('class="equipment-context-menu"');
|
|
expect(source).toContain('@click="openSelectedEquipment"');
|
|
expect(source).toContain('@click="openSelectedEquipmentEditor"');
|
|
expect(source).toContain('@click="removeSelectedEquipment"');
|
|
expect(source).toContain('@click="copySelectedEquipmentName"');
|
|
expect(source).toContain("if (!isDesktop || !row?.id) return;");
|
|
expect(source).toContain('v-if="!isDesktop && (canUpdate || canDelete)"');
|
|
});
|
|
});
|