From 2d95550024d0dd26a7603badef89f55fccf493c0 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 15 Feb 2019 14:39:33 +0800 Subject: [PATCH] Job deletion also deletes job comments --- app/Entities/Projects/Job.php | 4 ++++ tests/Unit/Models/JobTest.php | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/Entities/Projects/Job.php b/app/Entities/Projects/Job.php index de2287e..4418233 100755 --- a/app/Entities/Projects/Job.php +++ b/app/Entities/Projects/Job.php @@ -2,6 +2,7 @@ namespace App\Entities\Projects; +use DB; use App\Entities\Users\User; use Illuminate\Database\Eloquent\Model; use Laracasts\Presenter\PresentableTrait; @@ -112,7 +113,10 @@ class Job extends Model public function delete() { + DB::beginTransaction(); $this->tasks()->delete(); + $this->comments()->delete(); + DB::commit(); return parent::delete(); } diff --git a/tests/Unit/Models/JobTest.php b/tests/Unit/Models/JobTest.php index b2b342e..e049d77 100644 --- a/tests/Unit/Models/JobTest.php +++ b/tests/Unit/Models/JobTest.php @@ -58,7 +58,7 @@ class JobTest extends TestCase public function job_deletion_also_deletes_related_tasks() { $job = factory(Job::class)->create(); - $tasks = factory(Task::class)->create(['job_id' => $job->id]); + $task = factory(Task::class)->create(['job_id' => $job->id]); $job->delete(); @@ -110,4 +110,21 @@ class JobTest extends TestCase $this->assertInstanceOf(Collection::class, $job->comments); $this->assertInstanceOf(Comment::class, $job->comments->first()); } + + /** @test */ + public function job_deletion_also_deletes_related_comments() + { + $job = factory(Job::class)->create(); + $comment = factory(Comment::class)->create([ + 'commentable_type' => 'jobs', + 'commentable_id' => $job->id, + ]); + + $job->delete(); + + $this->dontSeeInDatabase('comments', [ + 'commentable_type' => 'jobs', + 'commentable_id' => $job->id, + ]); + } }