package order import ( "testing" "time" "hfb_sys/backend/internal/model" ) func settledHistoryOrder() model.RentalOrder { return model.RentalOrder{ Status: orderStatusCompleted, SettlementStatus: settlementStatusSettled, RefundStatus: "none", DepositHoldStatus: model.DepositHoldStatusNone, OfflineSettlementStatus: offlineSettlementStatusNone, } } func TestOwnerMayHideSettledHistory(t *testing.T) { if !ownerMayHideOrder(settledHistoryOrder(), false, "") { t.Fatal("已结算完成的订单应允许号主隐藏") } cancelled := settledHistoryOrder() cancelled.Status = orderStatusCancelled cancelled.SettlementStatus = settlementStatusUnsettled if !ownerMayHideOrder(cancelled, false, "") { t.Fatal("已取消且没有在途退款的订单应允许号主隐藏") } } func TestOwnerMayHideBlocksUnfinishedOrders(t *testing.T) { cases := []struct { name string edit func(*model.RentalOrder) dispute bool dist string }{ {name: "租用中", edit: func(order *model.RentalOrder) { order.Status = orderStatusRenting }}, {name: "退款审核中", edit: func(order *model.RentalOrder) { order.RefundStatus = refundStatusPendingReview }}, {name: "押金暂扣", edit: func(order *model.RentalOrder) { order.DepositHoldStatus = model.DepositHoldStatusHeld }}, {name: "线下结算未完成", edit: func(order *model.RentalOrder) { order.OfflineSettlementStatus = offlineSettlementStatusPending }}, {name: "进行中争议", dispute: true}, {name: "分销尚未释放", dist: "pending"}, {name: "已经隐藏", edit: func(order *model.RentalOrder) { now := time.Now() order.OwnerHiddenAt = &now }}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { order := settledHistoryOrder() if tc.edit != nil { tc.edit(&order) } if ownerMayHideOrder(order, tc.dispute, tc.dist) { t.Fatal("该订单不应允许号主隐藏") } }) } }