diff --git a/app/Models/Script.php b/app/Models/Script.php index 88af3fb2..1f3b35ea 100644 --- a/app/Models/Script.php +++ b/app/Models/Script.php @@ -29,6 +29,15 @@ class Script extends AbstractModel 'content', ]; + public static function boot(): void + { + parent::boot(); + + static::deleting(function (Script $script) { + $script->executions()->delete(); + }); + } + public function user(): BelongsTo { return $this->belongsTo(User::class); diff --git a/tests/Feature/ScriptTest.php b/tests/Feature/ScriptTest.php index 7b5fc8c2..a6d0375d 100644 --- a/tests/Feature/ScriptTest.php +++ b/tests/Feature/ScriptTest.php @@ -78,6 +78,11 @@ public function test_delete_script(): void 'user_id' => $this->user->id, ]); + $scriptExecution = ScriptExecution::factory()->create([ + 'script_id' => $script->id, + 'status' => ScriptExecutionStatus::EXECUTING, + ]); + $this->delete( route('scripts.delete', [ 'script' => $script, @@ -87,6 +92,10 @@ public function test_delete_script(): void $this->assertDatabaseMissing('scripts', [ 'id' => $script->id, ]); + + $this->assertDatabaseMissing('script_executions', [ + 'id' => $scriptExecution->id, + ]); } public function test_execute_script_and_view_log(): void