]> BookStack Code Mirror - bookstack/blobdiff - tests/Activity/WatchTest.php
Tests: Updated comment test to account for new editor usage
[bookstack] / tests / Activity / WatchTest.php
index 605b60fd498e26cf95d37daa06e95d1c7a6035e4..c405b07aed7011d49f8856cd53a1e7c671c268a7 100644 (file)
@@ -13,6 +13,8 @@ use BookStack\Activity\Tools\UserEntityWatchOptions;
 use BookStack\Activity\WatchLevels;
 use BookStack\Entities\Models\Entity;
 use BookStack\Settings\UserNotificationPreferences;
+use Illuminate\Contracts\Notifications\Dispatcher;
+use Illuminate\Support\Facades\Mail;
 use Illuminate\Support\Facades\Notification;
 use Tests\TestCase;
 
@@ -365,6 +367,29 @@ class WatchTest extends TestCase
         }
     }
 
+    public function test_failed_notifications_dont_block_and_log_errors()
+    {
+        $logger = $this->withTestLogger();
+        $editor = $this->users->editor();
+        $admin = $this->users->admin();
+        $page = $this->entities->page();
+        $book = $page->book;
+        $activityLogger = app()->make(ActivityLogger::class);
+
+        $watches = new UserEntityWatchOptions($editor, $book);
+        $watches->updateLevelByValue(WatchLevels::UPDATES);
+
+        $mockDispatcher = $this->mock(Dispatcher::class);
+        $mockDispatcher->shouldReceive('send')->once()
+            ->andThrow(\Exception::class, 'Failed to connect to mail server');
+
+        $this->actingAs($admin);
+
+        $activityLogger->add(ActivityType::PAGE_UPDATE, $page);
+
+        $this->assertTrue($logger->hasErrorThatContains("Failed to send email notification to user [id:{$editor->id}] with error: Failed to connect to mail server"));
+    }
+
     public function test_notifications_not_sent_if_lacking_view_permission_for_related_item()
     {
         $notifications = Notification::fake();