12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace Nesk\Puphpeteer\Tests;
- use Monolog\Logger;
- use ReflectionClass;
- use Psr\Log\LogLevel;
- use PHPUnit\Framework\Constraint\Callback;
- use PHPUnit\Framework\TestCase as BaseTestCase;
- use PHPUnit\Framework\MockObject\Matcher\Invocation;
- class TestCase extends BaseTestCase
- {
- private $dontPopulateProperties = [];
- public function setUp(): void
- {
- parent::setUp();
- $testMethod = new \ReflectionMethod($this, $this->getName());
- $docComment = $testMethod->getDocComment();
- if (preg_match('/@dontPopulateProperties (.*)/', $docComment, $matches)) {
- $this->dontPopulateProperties = array_values(array_filter(explode(' ', $matches[1])));
- }
- }
- public function canPopulateProperty(string $propertyName): bool
- {
- return !in_array($propertyName, $this->dontPopulateProperties);
- }
- public function loggerMock($expectations) {
- $loggerMock = $this->getMockBuilder(Logger::class)
- ->setConstructorArgs(['rialto'])
- ->setMethods(['log'])
- ->getMock();
- if ($expectations instanceof Invocation) {
- $expectations = [func_get_args()];
- }
- foreach ($expectations as $expectation) {
- [$matcher] = $expectation;
- $with = array_slice($expectation, 1);
- $loggerMock->expects($matcher)
- ->method('log')
- ->with(...$with);
- }
- return $loggerMock;
- }
- public function isLogLevel(): Callback {
- $psrLogLevels = (new ReflectionClass(LogLevel::class))->getConstants();
- $monologLevels = (new ReflectionClass(Logger::class))->getConstants();
- $monologLevels = array_intersect_key($monologLevels, $psrLogLevels);
- return $this->callback(function ($level) use ($psrLogLevels, $monologLevels) {
- if (is_string($level)) {
- return in_array($level, $psrLogLevels, true);
- } else if (is_int($level)) {
- return in_array($level, $monologLevels, true);
- }
- return false;
- });
- }
- }
|