From 339928401af2b22c4bcec562d4669176b237020f Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Fri, 14 Feb 2020 15:20:14 +0100 Subject: [PATCH] Throw exception on empty collection (#31471) --- .../Support/Testing/Fakes/NotificationFake.php | 13 +++++++++++++ .../SupportTestingNotificationFakeTest.php | 16 ++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/Illuminate/Support/Testing/Fakes/NotificationFake.php b/src/Illuminate/Support/Testing/Fakes/NotificationFake.php index c10ec793eac9..95edd71a94ec 100644 --- a/src/Illuminate/Support/Testing/Fakes/NotificationFake.php +++ b/src/Illuminate/Support/Testing/Fakes/NotificationFake.php @@ -2,6 +2,7 @@ namespace Illuminate\Support\Testing\Fakes; +use Exception; use Illuminate\Contracts\Notifications\Dispatcher as NotificationDispatcher; use Illuminate\Contracts\Notifications\Factory as NotificationFactory; use Illuminate\Contracts\Translation\HasLocalePreference; @@ -35,10 +36,16 @@ class NotificationFake implements NotificationDispatcher, NotificationFactory * @param string $notification * @param callable|null $callback * @return void + * + * @throws \Exception */ public function assertSentTo($notifiable, $notification, $callback = null) { if (is_array($notifiable) || $notifiable instanceof Collection) { + if (count($notifiable) === 0) { + throw new Exception('No notifiable given.'); + } + foreach ($notifiable as $singleNotifiable) { $this->assertSentTo($singleNotifiable, $notification, $callback); } @@ -79,10 +86,16 @@ public function assertSentToTimes($notifiable, $notification, $times = 1) * @param string $notification * @param callable|null $callback * @return void + * + * @throws \Exception */ public function assertNotSentTo($notifiable, $notification, $callback = null) { if (is_array($notifiable) || $notifiable instanceof Collection) { + if (count($notifiable) === 0) { + throw new Exception('No notifiable given.'); + } + foreach ($notifiable as $singleNotifiable) { $this->assertNotSentTo($singleNotifiable, $notification, $callback); } diff --git a/tests/Support/SupportTestingNotificationFakeTest.php b/tests/Support/SupportTestingNotificationFakeTest.php index 67564c37f738..704c7b0c9f56 100644 --- a/tests/Support/SupportTestingNotificationFakeTest.php +++ b/tests/Support/SupportTestingNotificationFakeTest.php @@ -2,9 +2,11 @@ namespace Illuminate\Tests\Support; +use Exception; use Illuminate\Contracts\Translation\HasLocalePreference; use Illuminate\Foundation\Auth\User; use Illuminate\Notifications\Notification; +use Illuminate\Support\Collection; use Illuminate\Support\Testing\Fakes\NotificationFake; use PHPUnit\Framework\Constraint\ExceptionMessage; use PHPUnit\Framework\ExpectationFailedException; @@ -63,6 +65,20 @@ public function testAssertNotSentTo() } } + public function testAssertSentToFailsForEmptyArray() + { + $this->expectException(Exception::class); + + $this->fake->assertSentTo([], NotificationStub::class); + } + + public function testAssertSentToFailsForEmptyCollection() + { + $this->expectException(Exception::class); + + $this->fake->assertSentTo(new Collection, NotificationStub::class); + } + public function testResettingNotificationId() { $this->fake->send($this->user, $this->notification);