diff --git a/app/Entities/Projects/Job.php b/app/Entities/Projects/Job.php index 9630f4f..9987fc4 100755 --- a/app/Entities/Projects/Job.php +++ b/app/Entities/Projects/Job.php @@ -71,6 +71,16 @@ class Job extends Model } /** + * Job has many comments relation. + * + * @return \Illuminate\Database\Eloquent\Relations\MorphMany + */ + public function comments() + { + return $this->morphMany(Comment::class, 'commentable'); + } + + /** * Get the job type. * * @return string diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 79a0202..818ae3c 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -22,6 +22,7 @@ class AppServiceProvider extends ServiceProvider Relation::morphMap([ 'projects' => 'App\Entities\Projects\Project', + 'jobs' => 'App\Entities\Projects\Job', ]); } diff --git a/tests/Unit/Models/JobTest.php b/tests/Unit/Models/JobTest.php index a208f0d..2bd3d53 100644 --- a/tests/Unit/Models/JobTest.php +++ b/tests/Unit/Models/JobTest.php @@ -5,6 +5,7 @@ namespace Tests\Unit\Models; use Tests\TestCase; use App\Entities\Projects\Job; use App\Entities\Projects\Task; +use App\Entities\Projects\Comment; use App\Entities\Projects\Project; use Illuminate\Support\Collection; @@ -80,4 +81,17 @@ class JobTest extends TestCase // Job receiveable earning = job tasks average progress (%) * job price $this->assertEquals(750, $job->receiveable_earning); } + + /** @test */ + public function a_job_has_many_comments_relation() + { + $job = factory(Job::class)->create(); + $comment = factory(Comment::class)->create([ + 'commentable_type' => 'jobs', + 'commentable_id' => $job->id, + ]); + + $this->assertInstanceOf(Collection::class, $job->comments); + $this->assertInstanceOf(Comment::class, $job->comments->first()); + } }