mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
Comments: Fixed wrong identification of parent comment
Would cause comment reply notifications to not be sent to expected user. Updated test to cover problem case. For #4548
This commit is contained in:
parent
99eb3e5f71
commit
45b8d6cd0c
@ -12,10 +12,12 @@ use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
* @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
|
||||
{
|
||||
@ -38,7 +40,9 @@ class Comment extends Model implements Loggable
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -210,16 +210,22 @@ class WatchTest extends TestCase
|
||||
$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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user