Browse Source

Job deletion will deletes related tasks

Project deletion will also deletes related job tasks
pull/34/head
Nafies Luthfi 7 years ago
parent
commit
269aec4c6f
  1. 7
      app/Entities/Projects/Job.php
  2. 2
      app/Entities/Projects/Project.php
  3. 13
      tests/Unit/Models/JobTest.php
  4. 43
      tests/Unit/Models/ProjectTest.php

7
app/Entities/Projects/Job.php

@ -109,4 +109,11 @@ class Job extends Model
{
return $this->price * ($this->progress / 100);
}
public function delete()
{
$this->tasks()->delete();
return parent::delete();
}
}

2
app/Entities/Projects/Project.php

@ -247,7 +247,9 @@ class Project extends Model
public function delete()
{
$this->jobs->each->delete();
$this->invoices()->delete();
$this->payments()->delete();
return parent::delete();
}

13
tests/Unit/Models/JobTest.php

@ -55,6 +55,19 @@ class JobTest extends TestCase
}
/** @test */
public function job_deletion_also_deletes_related_tasks()
{
$job = factory(Job::class)->create();
$tasks = factory(Task::class)->create(['job_id' => $job->id]);
$job->delete();
$this->dontSeeInDatabase('tasks', [
'job_id' => $job->id,
]);
}
/** @test */
public function a_job_has_progress_attribute()
{
$job = factory(Job::class)->create();

43
tests/Unit/Models/ProjectTest.php

@ -42,6 +42,19 @@ class ProjectTest extends TestCase
}
/** @test */
public function project_deletion_also_deletes_related_jobs()
{
$project = factory(Project::class)->create();
$job = factory(Job::class)->create(['project_id' => $project->id]);
$project->delete();
$this->dontSeeInDatabase('jobs', [
'project_id' => $project->id,
]);
}
/** @test */
public function a_project_has_many_main_jobs()
{
$project = factory(Project::class)->create();
@ -70,15 +83,43 @@ class ProjectTest extends TestCase
}
/** @test */
public function a_project_has_many_payments()
public function project_deletion_also_deletes_related_job_tasks()
{
$project = factory(Project::class)->create();
$job = factory(Job::class)->create(['project_id' => $project->id, 'type_id' => 2]);
$tasks = factory(Task::class, 2)->create(['job_id' => $job->id]);
$project->delete();
$this->dontSeeInDatabase('tasks', [
'job_id' => $job->id,
]);
}
/** @test */
public function a_project_has_many_payments_relation()
{
$project = factory(Project::class)->create();
$payment = factory(Payment::class)->create(['project_id' => $project->id]);
$this->assertInstanceOf(Collection::class, $project->payments);
$this->assertInstanceOf(Payment::class, $project->payments->first());
}
/** @test */
public function project_deletion_also_deletes_related_payments()
{
$project = factory(Project::class)->create();
$payment = factory(Payment::class)->create(['project_id' => $project->id]);
$project->delete();
$this->dontSeeInDatabase('payments', [
'project_id' => $project->id,
]);
}
/** @test */
public function a_project_has_many_subscriptions()
{
$project = factory(Project::class)->create();

Loading…
Cancel
Save