|
5 | 5 | use DB;
|
6 | 6 | use Fajarwz\LaravelReview\Exceptions\DuplicateReviewException;
|
7 | 7 | use Fajarwz\LaravelReview\Exceptions\ReviewNotFoundException;
|
| 8 | +use Fajarwz\LaravelReview\Models\Review; |
8 | 9 | use Fajarwz\LaravelReview\Models\ReviewSummary;
|
9 | 10 | use Fajarwz\LaravelReview\Tests\Models\Mentee;
|
10 | 11 | use Fajarwz\LaravelReview\Tests\Models\Mentor;
|
@@ -70,6 +71,85 @@ public function test_hasGivenReview_returns_false_if_a_reviewer_has_not_reviewed
|
70 | 71 | $this->assertFalse($this->mentee->hasGivenReview($otherMentor));
|
71 | 72 | }
|
72 | 73 |
|
| 74 | + public function test_hasGivenReview_returns_true_with_includeUnapproved_true_if_a_reviewer_has_unapproved_review_for_the_given_model() |
| 75 | + { |
| 76 | + $otherMentor = Mentor::factory()->create(); |
| 77 | + |
| 78 | + DB::table('reviews')->insert([ |
| 79 | + 'reviewer_id' => $this->mentee->id, |
| 80 | + 'reviewer_type' => get_class($this->mentee), |
| 81 | + 'reviewable_id' => $otherMentor->id, |
| 82 | + 'reviewable_type' => get_class($otherMentor), |
| 83 | + 'rating' => 3, |
| 84 | + 'approved_at' => null, |
| 85 | + ]); |
| 86 | + |
| 87 | + $this->assertTrue($this->mentee->hasGivenReview($otherMentor, true)); |
| 88 | + } |
| 89 | + |
| 90 | + public function test_hasGivenReview_returns_false_with_includeUnapproved_false_if_a_reviewer_has_unapproved_review_for_the_given_model() |
| 91 | + { |
| 92 | + $otherMentor = Mentor::factory()->create(); |
| 93 | + |
| 94 | + DB::table('reviews')->insert([ |
| 95 | + 'reviewer_id' => $this->mentee->id, |
| 96 | + 'reviewer_type' => get_class($this->mentee), |
| 97 | + 'reviewable_id' => $this->mentor->id, |
| 98 | + 'reviewable_type' => get_class($this->mentor), |
| 99 | + 'rating' => 3, |
| 100 | + 'approved_at' => null, |
| 101 | + ]); |
| 102 | + |
| 103 | + $this->assertFalse($this->mentee->hasGivenReview($otherMentor)); |
| 104 | + } |
| 105 | + |
| 106 | + public function test_getGivenReview_retrieves_only_approved_review_by_default() |
| 107 | + { |
| 108 | + $review = $this->mentee->getGivenReview($this->mentor); |
| 109 | + |
| 110 | + $this->assertInstanceOf(Review::class, $review); |
| 111 | + $this->assertEquals($this->mentor->id, $review->reviewable_id); |
| 112 | + $this->assertEquals(4.5, $review->rating); |
| 113 | + } |
| 114 | + |
| 115 | + public function test_getGivenReview_returns_null_for_unapproved_review_by_default() |
| 116 | + { |
| 117 | + $newMentor = Mentor::factory()->create(); |
| 118 | + |
| 119 | + DB::table('reviews')->insert([ |
| 120 | + 'reviewer_id' => $this->mentee->id, |
| 121 | + 'reviewer_type' => get_class($this->mentee), |
| 122 | + 'reviewable_id' => $newMentor->id, |
| 123 | + 'reviewable_type' => get_class($newMentor), |
| 124 | + 'rating' => 3, |
| 125 | + 'approved_at' => null, |
| 126 | + ]); |
| 127 | + |
| 128 | + $review = $this->mentee->getGivenReview($newMentor); |
| 129 | + |
| 130 | + $this->assertNull($review); |
| 131 | + } |
| 132 | + |
| 133 | + public function test_getGivenReview_can_retrieve_unapproved_review_when_includeUnapproved_is_true() |
| 134 | + { |
| 135 | + $newMentor = Mentor::factory()->create(); |
| 136 | + |
| 137 | + DB::table('reviews')->insert([ |
| 138 | + 'reviewer_id' => $this->mentee->id, |
| 139 | + 'reviewer_type' => get_class($this->mentee), |
| 140 | + 'reviewable_id' => $newMentor->id, |
| 141 | + 'reviewable_type' => get_class($newMentor), |
| 142 | + 'rating' => 3, |
| 143 | + 'approved_at' => null, |
| 144 | + ]); |
| 145 | + |
| 146 | + $review = $this->mentee->getGivenReview($newMentor, true); |
| 147 | + |
| 148 | + $this->assertInstanceOf(Review::class, $review); |
| 149 | + $this->assertEquals($newMentor->id, $review->reviewable_id); |
| 150 | + $this->assertEquals(3, $review->rating); |
| 151 | + } |
| 152 | + |
73 | 153 | public function test_a_reviewer_can_review_the_given_model()
|
74 | 154 | {
|
75 | 155 | $newMentor = Mentor::factory()->create();
|
|
0 commit comments