import { describe, expect, it } from "vitest"; import { readFileSync } from "node:fs"; import { resolve } from "node:path"; const readSource = () => readFileSync(resolve(__dirname, "./DrugShipmentEditorDrawer.vue"), "utf8"); describe("DrugShipmentEditorDrawer attachments", () => { it("uses a compact upload card instead of the full attachment table", () => { const source = readSource(); expect(source).toContain("AttachmentList"); expect(source).toContain('ref="attachmentPanelRef"'); expect(source).toContain('entity-type="drug_shipment"'); expect(source).toContain(':mode="\'upload\'"'); expect(source).toContain(':center-upload-card-content="true"'); expect(source).toContain("attachmentPanelRef.value?.pendingSnapshot() || []"); expect(source).toContain("await attachmentPanelRef.value?.uploadPending(props.shipmentId)"); expect(source).toContain("uploadPending"); expect(source).not.toContain("uploadAttachment"); expect(source).not.toContain("pendingFiles"); expect(source).not.toContain("upload-card-label"); expect(source).not.toContain(" { it("keeps shipment execution fields optional while status is pending", () => { const source = readSource(); expect(source).toContain("requiresShipmentDetails"); expect(source).toContain('status !== "PENDING"'); expect(source).not.toContain('ship_date: [{ required: true'); expect(source).not.toContain('batch_no: [{ required: true'); expect(source).not.toContain('carrier: [{ required: true'); expect(source).not.toContain('tracking_no: [{ required: true'); }); it("does not expose the removed returned status", () => { const source = readSource(); expect(source).not.toContain("RETURNED"); expect(source).not.toContain("已回收"); }); it("requires receive date when shipment is signed", () => { const source = readSource(); expect(source).toContain("requiresReceiveDate"); expect(source).toContain('status === "SIGNED"'); expect(source).not.toContain('receive_date: [{ required: true'); }); it("keeps remark optional unless shipment is exceptional", () => { const source = readSource(); expect(source).toContain("requiresRemark"); expect(source).toContain('status === "EXCEPTION"'); expect(source).not.toContain('remark: [{ required: true'); }); });