订单软删除
This commit is contained in:
@@ -250,4 +250,57 @@ class StoreOrderTest extends ProcurementTestCase
|
||||
->assertJsonPath('success', false)
|
||||
->assertJsonPath('msg', '周转框数量不能小于 0');
|
||||
}
|
||||
|
||||
/** 软删除:仅已取消订单可由后台删除,删除后后台/小程序端均不可见 */
|
||||
public function test_soft_delete_only_cancelled_orders(): void
|
||||
{
|
||||
$order = $this->makeOrderWithStatus(StoreOrderModel::STATUS_CANCELLED);
|
||||
|
||||
// 删除前小程序端可见
|
||||
$this->getJson('/mini/order')->assertOk()->assertJsonPath('data.total', 1);
|
||||
|
||||
$this->actingAsSysUser();
|
||||
$this->deleteJson("/order/store/{$order->id}")->assertOk()->assertJsonPath('success', true);
|
||||
|
||||
$this->assertNotNull($order->fresh()->deleted_at, '软删除应写入 deleted_at');
|
||||
$this->assertNull(StoreOrderModel::find($order->id), '默认查询不可见软删除订单');
|
||||
$this->assertNotNull(StoreOrderModel::withTrashed()->find($order->id), '数据仍保留在库中');
|
||||
|
||||
// 后台列表/详情不可见
|
||||
$this->getJson('/order/store')->assertOk()->assertJsonPath('data.total', 0);
|
||||
$this->getJson("/order/store/{$order->id}")->assertJsonPath('success', false);
|
||||
|
||||
// 小程序端历史订单同样不可见
|
||||
$this->actingAsMiniUser(UserModel::where('store_id', $order->store_id)->first());
|
||||
$this->getJson('/mini/order')->assertOk()->assertJsonPath('data.total', 0);
|
||||
$this->getJson("/mini/order/{$order->id}")->assertJsonPath('success', false);
|
||||
}
|
||||
|
||||
/** 软删除:非已取消订单拒绝删除 */
|
||||
public function test_soft_delete_rejected_for_non_cancelled_orders(): void
|
||||
{
|
||||
foreach ([
|
||||
StoreOrderModel::STATUS_PENDING,
|
||||
StoreOrderModel::STATUS_SUMMARIZED,
|
||||
StoreOrderModel::STATUS_DELIVERING,
|
||||
StoreOrderModel::STATUS_DISTRIBUTION,
|
||||
StoreOrderModel::STATUS_COMPLETED,
|
||||
] as $status) {
|
||||
$order = $this->makeOrderWithStatus($status);
|
||||
$this->actingAsSysUser();
|
||||
$this->deleteJson("/order/store/{$order->id}")
|
||||
->assertOk()->assertJsonPath('success', false);
|
||||
$this->assertNull($order->fresh()->deleted_at, '非已取消订单不得删除');
|
||||
}
|
||||
}
|
||||
|
||||
/** 软删除:重复删除返回订单不存在 */
|
||||
public function test_soft_delete_twice_rejected(): void
|
||||
{
|
||||
$order = $this->makeOrderWithStatus(StoreOrderModel::STATUS_CANCELLED);
|
||||
$this->actingAsSysUser();
|
||||
|
||||
$this->deleteJson("/order/store/{$order->id}")->assertOk()->assertJsonPath('success', true);
|
||||
$this->deleteJson("/order/store/{$order->id}")->assertJsonPath('success', false);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user