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 int $id
|
||||||
* @property string $text
|
* @property string $text
|
||||||
* @property string $html
|
* @property string $html
|
||||||
* @property int|null $parent_id
|
* @property int|null $parent_id - Relates to local_id, not id
|
||||||
* @property int $local_id
|
* @property int $local_id
|
||||||
* @property string $entity_type
|
* @property string $entity_type
|
||||||
* @property int $entity_id
|
* @property int $entity_id
|
||||||
|
* @property int $created_by
|
||||||
|
* @property int $updated_by
|
||||||
*/
|
*/
|
||||||
class Comment extends Model implements Loggable
|
class Comment extends Model implements Loggable
|
||||||
{
|
{
|
||||||
@ -38,7 +40,9 @@ class Comment extends Model implements Loggable
|
|||||||
*/
|
*/
|
||||||
public function parent(): BelongsTo
|
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 = new UserNotificationPreferences($editor);
|
||||||
$prefs->updateFromSettingsArray(['comment-replies' => 'true']);
|
$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();
|
$notifications = Notification::fake();
|
||||||
|
|
||||||
$this->actingAs($editor)->post("/comment/{$entities['page']->id}", [
|
$this->actingAs($editor)->post("/comment/{$entities['page']->id}", [
|
||||||
'text' => 'My new comment'
|
'text' => 'My new comment'
|
||||||
]);
|
]);
|
||||||
$comment = $entities['page']->comments()->first();
|
$comment = $entities['page']->comments()->orderBy('id', 'desc')->first();
|
||||||
|
|
||||||
$this->asAdmin()->post("/comment/{$entities['page']->id}", [
|
$this->asAdmin()->post("/comment/{$entities['page']->id}", [
|
||||||
'text' => 'My new comment response',
|
'text' => 'My new comment response',
|
||||||
'parent_id' => $comment->id,
|
'parent_id' => $comment->local_id,
|
||||||
]);
|
]);
|
||||||
$notifications->assertSentTo($editor, CommentCreationNotification::class);
|
$notifications->assertSentTo($editor, CommentCreationNotification::class);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user