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); 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() public function delete()
{ {
$this->jobs->each->delete();
$this->invoices()->delete(); $this->invoices()->delete();
$this->payments()->delete();
return parent::delete(); return parent::delete();
} }

13
tests/Unit/Models/JobTest.php

@ -55,6 +55,19 @@ class JobTest extends TestCase
} }
/** @test */ /** @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() public function a_job_has_progress_attribute()
{ {
$job = factory(Job::class)->create(); $job = factory(Job::class)->create();

43
tests/Unit/Models/ProjectTest.php

@ -42,6 +42,19 @@ class ProjectTest extends TestCase
} }
/** @test */ /** @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() public function a_project_has_many_main_jobs()
{ {
$project = factory(Project::class)->create(); $project = factory(Project::class)->create();
@ -70,15 +83,43 @@ class ProjectTest extends TestCase
} }
/** @test */ /** @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(); $project = factory(Project::class)->create();
$payment = factory(Payment::class)->create(['project_id' => $project->id]); $payment = factory(Payment::class)->create(['project_id' => $project->id]);
$this->assertInstanceOf(Collection::class, $project->payments); $this->assertInstanceOf(Collection::class, $project->payments);
$this->assertInstanceOf(Payment::class, $project->payments->first()); $this->assertInstanceOf(Payment::class, $project->payments->first());
} }
/** @test */ /** @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() public function a_project_has_many_subscriptions()
{ {
$project = factory(Project::class)->create(); $project = factory(Project::class)->create();

Loading…
Cancel
Save