mirror of
https://github.com/php-flasher/php-flasher.git
synced 2026-03-31 23:17:47 +01:00
a0873c0082
This commit simplifies PHPDoc comments across 26 files in the src/Prime/ directory by removing verbose documentation and keeping only essential type annotations. Changes include: - Removed "Design pattern" mentions and redundant explanations - Kept all @param and @return type annotations for PHPStan - Maintained @phpstan-* annotations for type safety Files modified: - Exception classes (4 files) - Http interfaces (5 files) - Notification builders and interfaces (3 files) - Plugin, Response, Storage, Template, Translation, and Test interfaces (14 files) All changes pass PHPStan analysis and tests.
180 lines
6.3 KiB
PHP
180 lines
6.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Flasher\Prime\Test;
|
|
|
|
use Flasher\Prime\Container\FlasherContainer;
|
|
use Flasher\Prime\EventDispatcher\Event\NotificationEvents;
|
|
use Flasher\Prime\EventDispatcher\EventListener\NotificationLoggerListener;
|
|
use Flasher\Prime\Notification\Type;
|
|
use Flasher\Prime\Test\Constraint\Notification;
|
|
use Flasher\Prime\Test\Constraint\NotificationCount;
|
|
use Flasher\Prime\Test\Constraint\NotificationMessage;
|
|
use Flasher\Prime\Test\Constraint\NotificationOption;
|
|
use Flasher\Prime\Test\Constraint\NotificationOptions;
|
|
use Flasher\Prime\Test\Constraint\NotificationTitle;
|
|
use Flasher\Prime\Test\Constraint\NotificationType;
|
|
use PHPUnit\Framework\Assert;
|
|
|
|
final class FlasherAssert
|
|
{
|
|
public static function that(): self
|
|
{
|
|
return new self();
|
|
}
|
|
|
|
public static function hasNotifications(string $message = 'Expected at least one notification to exist.'): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertNotEmpty(self::getNotificationEvents()->getEnvelopes(), $message));
|
|
}
|
|
|
|
public static function noNotifications(string $message = 'Expected no notifications to exist.'): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertEmpty(self::getNotificationEvents()->getEnvelopes(), $message));
|
|
}
|
|
|
|
/**
|
|
* @param array<string, mixed> $expectedOptions
|
|
*/
|
|
public static function withNotification(string $expectedType, ?string $expectedMessage = null, array $expectedOptions = [], ?string $expectedTitle = null, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new Notification($expectedType, $expectedMessage, $expectedOptions, $expectedTitle), $message));
|
|
}
|
|
|
|
/**
|
|
* @param array<string, mixed> $expectedOptions
|
|
*/
|
|
public static function notification(string $expectedType, ?string $expectedMessage = null, array $expectedOptions = [], ?string $expectedTitle = null, string $message = ''): self
|
|
{
|
|
return self::withNotification($expectedType, $expectedMessage, $expectedOptions, $expectedTitle, $message);
|
|
}
|
|
|
|
public static function withCount(int $expectedCount, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new NotificationCount($expectedCount), $message));
|
|
}
|
|
|
|
public static function count(int $expectedCount, string $message = ''): self
|
|
{
|
|
return self::withCount($expectedCount, $message);
|
|
}
|
|
|
|
public static function withType(string $expectedType, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new NotificationType($expectedType), $message));
|
|
}
|
|
|
|
public static function type(string $expectedType, string $message = ''): self
|
|
{
|
|
return self::withType($expectedType, $message);
|
|
}
|
|
|
|
public static function withSuccess(string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => self::type(Type::SUCCESS, $message));
|
|
}
|
|
|
|
public static function success(string $message = ''): self
|
|
{
|
|
return self::withSuccess($message);
|
|
}
|
|
|
|
public static function withWarning(string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => self::type(Type::WARNING, $message));
|
|
}
|
|
|
|
public static function warning(string $message = ''): self
|
|
{
|
|
return self::withWarning($message);
|
|
}
|
|
|
|
public static function withError(string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => self::type(Type::ERROR, $message));
|
|
}
|
|
|
|
public static function error(string $message = ''): self
|
|
{
|
|
return self::withError($message);
|
|
}
|
|
|
|
public static function withInfo(string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => self::type(Type::INFO, $message));
|
|
}
|
|
|
|
public static function info(string $message = ''): self
|
|
{
|
|
return self::withInfo($message);
|
|
}
|
|
|
|
public static function withTitle(string $expectedTitle, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new NotificationTitle($expectedTitle), $message));
|
|
}
|
|
|
|
public static function title(string $expectedTitle, string $message = ''): self
|
|
{
|
|
return self::withTitle($expectedTitle, $message);
|
|
}
|
|
|
|
public static function withMessage(string $expectedMessage, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new NotificationMessage($expectedMessage), $message));
|
|
}
|
|
|
|
public static function message(string $expectedMessage, string $message = ''): self
|
|
{
|
|
return self::withMessage($expectedMessage, $message);
|
|
}
|
|
|
|
/**
|
|
* @param array<string, mixed> $expectedOptions
|
|
*/
|
|
public static function withOptions(array $expectedOptions, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new NotificationOptions($expectedOptions), $message));
|
|
}
|
|
|
|
/**
|
|
* @param array<string, mixed> $expectedOptions
|
|
*/
|
|
public static function options(array $expectedOptions, string $message = ''): self
|
|
{
|
|
return self::withOptions($expectedOptions, $message);
|
|
}
|
|
|
|
public static function withOption(string $expectedKey, mixed $expectedValue = null, string $message = ''): self
|
|
{
|
|
return self::fluent(static fn () => Assert::assertThat(self::getNotificationEvents(), new NotificationOption($expectedKey, $expectedValue), $message));
|
|
}
|
|
|
|
public static function option(string $expectedKey, mixed $expectedValue = null, string $message = ''): self
|
|
{
|
|
return self::withOption($expectedKey, $expectedValue, $message);
|
|
}
|
|
|
|
private static function fluent(callable $callback): self
|
|
{
|
|
$callback();
|
|
|
|
return new self();
|
|
}
|
|
|
|
public static function getNotificationEvents(): NotificationEvents
|
|
{
|
|
$container = FlasherContainer::getContainer();
|
|
|
|
if (!$container->has('flasher.notification_logger_listener')) {
|
|
return new NotificationEvents();
|
|
}
|
|
|
|
/** @var NotificationLoggerListener $listener */
|
|
$listener = $container->get('flasher.notification_logger_listener');
|
|
|
|
return $listener->getDisplayedEnvelopes();
|
|
}
|
|
}
|