refactor pending or processing #23

Open
riso8739 wants to merge 1 commits from ld-refactor-order-status into master
2 changed files with 32 additions and 2 deletions
Showing only changes of commit f0c2c11f8e - Show all commits
+26
View File
@@ -0,0 +1,26 @@
import { describe, expect, test } from "bun:test";
import { canCancelOrder, canEditOrderItems, canEditShippingAddress } from "./order-status";
describe("order status rules", () => {
const cases = [
{ status: "pending", editItems: true, editShipping: true, cancel: true },
{ status: "processing", editItems: false, editShipping: true, cancel: true },
{ status: "shipped", editItems: false, editShipping: false, cancel: false },
{ status: "cancelled", editItems: false, editShipping: false, cancel: false },
{ status: "refunded", editItems: false, editShipping: false, cancel: false }
] as const;
for (const { status, editItems, editShipping, cancel } of cases) {
test(`item editing is ${editItems ? "allowed" : "denied"} for ${status} orders`, () => {
expect(canEditOrderItems(status)).toBe(editItems);
});
test(`shipping address editing is ${editShipping ? "allowed" : "denied"} for ${status} orders`, () => {
expect(canEditShippingAddress(status)).toBe(editShipping);
});
test(`cancellation is ${cancel ? "allowed" : "denied"} for ${status} orders`, () => {
expect(canCancelOrder(status)).toBe(cancel);
});
}
});
+6 -2
View File
@@ -1,13 +1,17 @@
import type { OrderStatus } from "@orderops/shared/order-status";
function isPendingOrProcessing(status: OrderStatus) {
return status === "pending" || status === "processing";
}
export function canEditOrderItems(status: OrderStatus) {
return status === "pending";
}
export function canEditShippingAddress(status: OrderStatus) {
return status === "pending" || status === "processing";
return isPendingOrProcessing(status);
}
export function canCancelOrder(status: OrderStatus) {
return status === "pending" || status === "processing";
return isPendingOrProcessing(status);
}