Skip to content

Commit a67edcd

Browse files
committed
[phpunit] [9.0] resolve WithConsecutiveRector naming ad-hoc to PHPUnit real code
1 parent 6e9d843 commit a67edcd

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

src/Enum/PHPUnitClassName.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,9 @@ final class PHPUnitClassName
2020
* @var string
2121
*/
2222
public const ASSERT = 'PHPUnit\Framework\Assert';
23+
24+
/**
25+
* @var string
26+
*/
27+
public const INVOCATION_ORDER = 'PHPUnit\Framework\MockObject\Rule\InvocationOrder';
2328
}

src/NodeFactory/MatcherInvocationCountMethodCallNodeFactory.php

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,25 @@
77
use PhpParser\Node\Expr\MethodCall;
88
use PhpParser\Node\Expr\Variable;
99
use PhpParser\Node\Identifier;
10+
use PHPStan\Reflection\ReflectionProvider;
1011
use Rector\PHPUnit\Composer\ProjectPackageVersionResolver;
1112
use Rector\PHPUnit\Enum\ConsecutiveVariable;
13+
use Rector\PHPUnit\Enum\PHPUnitClassName;
1214

1315
final readonly class MatcherInvocationCountMethodCallNodeFactory
1416
{
17+
/**
18+
* @var string
19+
*/
20+
private const GET_INVOCATION_COUNT = 'getInvocationCount';
21+
22+
/**
23+
* @var string
24+
*/
25+
private const NUMBER_OF_INVOCATIONS = 'numberOfInvocations';
26+
1527
public function __construct(
16-
private ProjectPackageVersionResolver $projectPackageVersionResolver
28+
private ReflectionProvider $reflectionProvider,
1729
) {
1830
}
1931

@@ -28,14 +40,19 @@ public function create(): MethodCall
2840

2941
private function getInvocationMethodName(): string
3042
{
31-
$projectPHPUnitVersion = $this->projectPackageVersionResolver->findPackageVersion('phpunit/phpunit');
43+
if (! $this->reflectionProvider->hasClass(PHPUnitClassName::INVOCATION_ORDER)) {
44+
// fallback to PHPUnit 9
45+
return self::GET_INVOCATION_COUNT;
46+
}
47+
48+
$invocationOrderClassReflection = $this->reflectionProvider->getClass(PHPUnitClassName::INVOCATION_ORDER);
3249

33-
if ($projectPHPUnitVersion === null || version_compare($projectPHPUnitVersion, '10.0', '>=')) {
34-
// phpunit 10 naming
35-
return 'numberOfInvocations';
50+
// phpunit 10 naming
51+
if ($invocationOrderClassReflection->hasNativeMethod(self::GET_INVOCATION_COUNT)) {
52+
return self::GET_INVOCATION_COUNT;
3653
}
3754

3855
// phpunit 9 naming
39-
return 'getInvocationCount';
56+
return self::NUMBER_OF_INVOCATIONS;
4057
}
4158
}

0 commit comments

Comments
 (0)