From 72828e9f3adfe4c1588034524f372ee307019be0 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Mon, 25 Mar 2019 21:04:33 +0800 Subject: [PATCH] Add job has has many comments relation --- app/Entities/Projects/Issue.php | 11 +++++++++++ app/Providers/AppServiceProvider.php | 1 + tests/Unit/Models/IssueTest.php | 15 +++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/app/Entities/Projects/Issue.php b/app/Entities/Projects/Issue.php index 17a31af..2ec06fc 100644 --- a/app/Entities/Projects/Issue.php +++ b/app/Entities/Projects/Issue.php @@ -3,6 +3,7 @@ namespace App\Entities\Projects; use App\Entities\Users\User; +use App\Entities\Projects\Comment; use App\Entities\Projects\Project; use Illuminate\Database\Eloquent\Model; @@ -48,4 +49,14 @@ class Issue extends Model { return ''.$this->status.''; } + + /** + * Issue has many comments relation. + * + * @return \Illuminate\Database\Eloquent\Relations\MorphMany + */ + public function comments() + { + return $this->morphMany(Comment::class, 'commentable'); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 818ae3c..d8823c2 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', + 'issues' => 'App\Entities\Projects\Issue', 'jobs' => 'App\Entities\Projects\Job', ]); } diff --git a/tests/Unit/Models/IssueTest.php b/tests/Unit/Models/IssueTest.php index 7877fdd..a43ed72 100644 --- a/tests/Unit/Models/IssueTest.php +++ b/tests/Unit/Models/IssueTest.php @@ -5,7 +5,9 @@ namespace Tests\Unit\Models; use Tests\TestCase; use App\Entities\Users\User; use App\Entities\Projects\Issue; +use App\Entities\Projects\Comment; use App\Entities\Projects\Project; +use Illuminate\Support\Collection; use App\Entities\Projects\Priority; use Illuminate\Foundation\Testing\RefreshDatabase; @@ -81,4 +83,17 @@ class IssueTest extends TestCase $this->assertEquals(''.$issue->priority.'', $issue->priority_label); } + + /** @test */ + public function an_issue_has_many_comments_relation() + { + $issue = factory(Issue::class)->create(); + $comment = factory(Comment::class)->create([ + 'commentable_type' => 'issues', + 'commentable_id' => $issue->id, + ]); + + $this->assertInstanceOf(Collection::class, $issue->comments); + $this->assertInstanceOf(Comment::class, $issue->comments->first()); + } }