📁 File Manager Pro
v10.0.3 | PHP: 8.2.31
Server: LiteSpeed
2026-07-03 12:10:46
📂
/ (Root)
/
home
/
orkouolp
/
web
/
testing.orkobd
/
laravel
/
vendor
/
php-flasher
/
flasher
/
Test
/
Constraint
📍 /home/orkouolp/web/testing.orkobd/laravel/vendor/php-flasher/flasher/Test/Constraint
🔄 Refresh
✏️
Editing: Notification.php
Writable
<?php declare(strict_types=1); namespace Flasher\Prime\Test\Constraint; use Flasher\Prime\EventDispatcher\Event\NotificationEvents; use Flasher\Prime\Notification\NotificationInterface; use PHPUnit\Framework\Constraint\Constraint; /** * Checks for the existence of a notification with specified details. */ final class Notification extends Constraint { /** * Constructor to initialize notification expectations. * * @param string $expectedType expected type of the notification * @param string|null $expectedMessage expected message content * @param array<string, mixed> $expectedOptions expected options array * @param string|null $expectedTitle expected title of the notification */ public function __construct( private readonly string $expectedType, private readonly ?string $expectedMessage = null, private readonly array $expectedOptions = [], private readonly ?string $expectedTitle = null, ) { } public function toString(): string { $details = [ \sprintf('type: "%s"', $this->expectedType), ]; if (null !== $this->expectedMessage) { $details[] = \sprintf('message: "%s"', $this->expectedMessage); } if (null !== $this->expectedTitle) { $details[] = \sprintf('title: "%s"', $this->expectedTitle); } if (!empty($this->expectedOptions)) { $details[] = 'options: ['.json_encode($this->expectedOptions).']'; } return 'contains a notification with '.implode(', ', $details); } /** * @param NotificationEvents|mixed $other */ protected function matches(mixed $other): bool { if (!$other instanceof NotificationEvents) { return false; } foreach ($other->getEnvelopes() as $notification) { if ($this->isNotificationMatching($notification)) { return true; } } return false; } private function isNotificationMatching(NotificationInterface $notification): bool { return $notification->getType() === $this->expectedType && (null === $this->expectedMessage || $notification->getMessage() === $this->expectedMessage) && (null === $this->expectedTitle || $notification->getTitle() === $this->expectedTitle) && (empty($this->expectedOptions) || array_intersect_assoc($this->expectedOptions, $notification->getOptions()) === $this->expectedOptions); } /** * @param NotificationEvents $other */ protected function failureDescription(mixed $other): string { $foundNotifications = array_map(function (NotificationInterface $notification) { return \sprintf( 'type: "%s", title: "%s", message: "%s", options: [%s]', $notification->getType(), $notification->getTitle(), $notification->getMessage(), json_encode($notification->getOptions()), ); }, $other->getEnvelopes()); if (empty($foundNotifications)) { $foundNotifications[] = 'No notifications found'; } return \sprintf( 'Failed asserting that NotificationEvents %s. Found: [%s].', $this->toString(), implode('; ', $foundNotifications) ); } }
💾 Save Changes
❌ Cancel