Delete requests when asset model is deleted

This commit is contained in:
Marcus Moore
2025-07-16 17:04:14 -07:00
parent 7a456185c6
commit 3547fa723c
4 changed files with 34 additions and 4 deletions

View File

@@ -98,8 +98,16 @@ class AssetModel extends SnipeModel
'manufacturer' => ['name'],
];
protected static function booted(): void
{
static::forceDeleted(function (AssetModel $assetModel) {
$assetModel->requests()->forceDelete();
});
static::softDeleted(function (AssetModel $assetModel) {
$assetModel->requests()->delete();
});
}
/**
* Establishes the model -> assets relationship

View File

@@ -3,6 +3,7 @@
namespace Database\Factories;
use App\Models\Asset;
use App\Models\AssetModel;
use App\Models\CheckoutRequest;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
@@ -30,4 +31,14 @@ class CheckoutRequestFactory extends Factory
];
});
}
public function forAssetModel()
{
return $this->state(function (array $attributes) {
return [
'requestable_id' => AssetModel::factory(),
'requestable_type' => AssetModel::class,
];
});
}
}

View File

@@ -2,7 +2,6 @@
namespace Tests\Feature\Console;
use App\Models\Asset;
use App\Models\CheckoutRequest;
use Illuminate\Database\Eloquent\Model;
use Tests\TestCase;

View File

@@ -31,12 +31,24 @@ class CheckoutRequestTest extends TestCase
public function test_checkout_request_soft_deleted_when_requested_model_soft_deleted()
{
$this->markTestIncomplete();
$checkoutRequest = CheckoutRequest::factory()->forAssetModel()->create();
$requestedAssetModel = $checkoutRequest->requestedItem;
$requestedAssetModel->delete();
$this->assertSoftDeleted($checkoutRequest->fresh());
}
public function test_checkout_request_deleted_when_requested_model_force_deleted()
{
$this->markTestIncomplete();
$checkoutRequest = CheckoutRequest::factory()->forAssetModel()->create();
$requestedAsset = $checkoutRequest->requestedItem;
$requestedAsset->forceDelete();
$this->assertDatabaseMissing('checkout_requests', ['id' => $checkoutRequest->id]);
}
public function test_checkout_request_soft_deleted_when_requesting_user_soft_deleted()