Delete requests when asset model is deleted
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace Tests\Feature\Console;
|
||||
|
||||
use App\Models\Asset;
|
||||
use App\Models\CheckoutRequest;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user