Skip to content

Commit 4292c23

Browse files
committed
feat: add topRatedReceivedReviews
1 parent 586c818 commit 4292c23

File tree

2 files changed

+14
-24
lines changed

2 files changed

+14
-24
lines changed

src/Traits/CanBeReviewed.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,17 @@ public function getReceivedReview(Model $model, bool $includeUnapproved = false)
6464
/**
6565
* Query the current model latest received reviews of the specified model.
6666
*/
67-
public function latestReceivedReviews(?Model $model = null, bool $includeUnapproved = false): HasMany
67+
public function latestReceivedReviews(?Model $model = null): HasMany
6868
{
69-
$query = $this->receivedReviews($model);
70-
71-
if ($includeUnapproved) {
72-
$query->withUnapproved();
73-
}
69+
return $this->receivedReviews($model)->orderByDesc('created_at');
70+
}
7471

75-
return $query->orderByDesc('created_at');
72+
/**
73+
* Query the current model top rated received reviews of the specified model.
74+
*/
75+
public function topRatedReceivedReviews(?Model $model = null): HasMany
76+
{
77+
return $this->receivedReviews($model)->orderByDesc('rating');
7678
}
7779

7880
/**

tests/CanBeReviewedTest.php

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public function test_getReceivedReview_can_retrieve_unapproved_review_when_inclu
148148
$this->assertEquals(3, $review->rating);
149149
}
150150

151-
public function test_latestReceivedReviews_retrieves_latest_approved_reviews_by_default()
151+
public function test_latestReceivedReviews_retrieves_latest_approved_reviews()
152152
{
153153
$newMentee = Mentor::factory()->create();
154154

@@ -160,28 +160,16 @@ public function test_latestReceivedReviews_retrieves_latest_approved_reviews_by_
160160
$this->assertEquals($reviews->first()->id, $newReview->id);
161161
}
162162

163-
public function test_latestReceivedReviews_not_returning_unapproved_reviews_by_default()
163+
public function test_topRatedReceivedReviews_retrieves_top_rated_approved_reviews()
164164
{
165165
$newMentee = Mentor::factory()->create();
166166

167-
$newReview = $newMentee->review($this->mentor, 4, 'nice!!!', isApproved: false);
167+
$newMentee->review($this->mentor, 2);
168168

169-
$reviews = $this->mentor->latestReceivedReviews()->get();
170-
171-
$this->assertCount(2, $reviews);
172-
$this->assertNotEquals($reviews->first()->id, $newReview->id);
173-
}
174-
175-
public function test_latestReceivedReviews_can_retrieves_unapproved_reviews_when_includeUnapproved_is_true()
176-
{
177-
$newMentee = Mentor::factory()->create();
178-
179-
$newReview = $newMentee->review($this->mentor, 4, 'nice!!!', isApproved: false);
180-
181-
$reviews = $this->mentor->latestReceivedReviews(includeUnapproved: true)->get();
169+
$reviews = $this->mentor->topRatedReceivedReviews()->get();
182170

183171
$this->assertCount(3, $reviews);
184-
$this->assertEquals($reviews->first()->id, $newReview->id);
172+
$this->assertEquals($reviews->first()->rating, 5);
185173
}
186174

187175
public function test_a_reviewable_can_display_its_review_summary()

0 commit comments

Comments
 (0)