61 lines
2.4 KiB
TypeScript
61 lines
2.4 KiB
TypeScript
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("<el-table");
|
|
});
|
|
});
|
|
|
|
describe("DrugShipmentEditorDrawer shipment validation", () => {
|
|
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');
|
|
});
|
|
});
|