]> BookStack Code Mirror - bookstack/commitdiff
Merge branch 'v23-08' into development
authorDan Brown <redacted>
Sat, 16 Sep 2023 10:55:57 +0000 (11:55 +0100)
committerDan Brown <redacted>
Sat, 16 Sep 2023 10:55:57 +0000 (11:55 +0100)
app/Activity/Models/Comment.php
tests/Activity/WatchTest.php

index bcbed6c56f03d7fd3dfe753b395c9dc6d2fc5d5e..6efa3df6ff0049a1a6ed3cac13cc092e5a62b470 100644 (file)
@@ -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);
     }
 
     /**
index 5db0067cc565b9789f6a9ce46db42832e46d15a9..5b9ae5a4c9e3d1996b652cab41f00675d7d9962a 100644 (file)
@@ -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);
     }