Skip to content

Commit

Permalink
Comments: Fixed wrong identification of parent comment
Browse files Browse the repository at this point in the history
Would cause comment reply notifications to not be sent to expected user.
Updated test to cover problem case.

For #4548
  • Loading branch information
ssddanbrown committed Sep 15, 2023
1 parent 99eb3e5 commit 45b8d6c
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
8 changes: 6 additions & 2 deletions app/Activity/Models/Comment.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
* @property int $id
* @property string $text
* @property string $html
* @property int|null $parent_id
* @property int|null $parent_id - Relates to local_id, not id
* @property int $local_id
* @property string $entity_type
* @property int $entity_id
* @property int $created_by
* @property int $updated_by
*/
class Comment extends Model implements Loggable
{
Expand All @@ -38,7 +40,9 @@ public function entity(): MorphTo
*/
public function parent(): BelongsTo
{
return $this->belongsTo(Comment::class);
return $this->belongsTo(Comment::class, 'parent_id', 'local_id', 'parent')
->where('entity_type', '=', $this->entity_type)
->where('entity_id', '=', $this->entity_id);
}

/**
Expand Down
10 changes: 8 additions & 2 deletions tests/Activity/WatchTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -210,16 +210,22 @@ public function test_notify_comment_replies()
$prefs = new UserNotificationPreferences($editor);
$prefs->updateFromSettingsArray(['comment-replies' => 'true']);

// Create some existing comments to pad IDs to help potentially error
// on mis-identification of parent via ids used.
Comment::factory()->count(5)
->for($entities['page'], 'entity')
->create(['created_by' => $this->users->admin()->id]);

$notifications = Notification::fake();

$this->actingAs($editor)->post("/comment/{$entities['page']->id}", [
'text' => 'My new comment'
]);
$comment = $entities['page']->comments()->first();
$comment = $entities['page']->comments()->orderBy('id', 'desc')->first();

$this->asAdmin()->post("/comment/{$entities['page']->id}", [
'text' => 'My new comment response',
'parent_id' => $comment->id,
'parent_id' => $comment->local_id,
]);
$notifications->assertSentTo($editor, CommentCreationNotification::class);
}
Expand Down

0 comments on commit 45b8d6c

Please sign in to comment.