67 lines
1.9 KiB
PHP
67 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Doctrine\Deprecations\PHPUnit;
|
||
|
|
||
|
use Doctrine\Deprecations\Deprecation;
|
||
|
|
||
|
use function sprintf;
|
||
|
|
||
|
trait VerifyDeprecations
|
||
|
{
|
||
|
/** @var array<string,int> */
|
||
|
private $doctrineDeprecationsExpectations = [];
|
||
|
|
||
|
/** @var array<string,int> */
|
||
|
private $doctrineNoDeprecationsExpectations = [];
|
||
|
|
||
|
public function expectDeprecationWithIdentifier(string $identifier): void
|
||
|
{
|
||
|
$this->doctrineDeprecationsExpectations[$identifier] = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0;
|
||
|
}
|
||
|
|
||
|
public function expectNoDeprecationWithIdentifier(string $identifier): void
|
||
|
{
|
||
|
$this->doctrineNoDeprecationsExpectations[$identifier] = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @before
|
||
|
*/
|
||
|
public function enableDeprecationTracking(): void
|
||
|
{
|
||
|
Deprecation::enableTrackingDeprecations();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @after
|
||
|
*/
|
||
|
public function verifyDeprecationsAreTriggered(): void
|
||
|
{
|
||
|
foreach ($this->doctrineDeprecationsExpectations as $identifier => $expectation) {
|
||
|
$actualCount = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0;
|
||
|
|
||
|
$this->assertTrue(
|
||
|
$actualCount > $expectation,
|
||
|
sprintf(
|
||
|
"Expected deprecation with identifier '%s' was not triggered by code executed in test.",
|
||
|
$identifier
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
foreach ($this->doctrineNoDeprecationsExpectations as $identifier => $expectation) {
|
||
|
$actualCount = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0;
|
||
|
|
||
|
$this->assertTrue(
|
||
|
$actualCount === $expectation,
|
||
|
sprintf(
|
||
|
"Expected deprecation with identifier '%s' was triggered by code executed in test, but expected not to.",
|
||
|
$identifier
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|