Skip to content

Commit 1238910

Browse files
authored
skip abstract entity and interface, as cannot be instantiated (#630)
1 parent edebbb1 commit 1238910

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\CodeQuality\Rector\Expression\ConfiguredMockEntityToSetterObjectRector\Fixture;
4+
5+
use Rector\PHPUnit\Tests\CodeQuality\Rector\Expression\ConfiguredMockEntityToSetterObjectRector\Source\AbstractEntityToBeConfigured;
6+
7+
final class SkipAbstractEntity extends \PHPUnit\Framework\TestCase
8+
{
9+
public function test()
10+
{
11+
$mockObject = $this->createConfiguredMock(AbstractEntityToBeConfigured::class, [
12+
'getName'=> 'John',
13+
]);
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\CodeQuality\Rector\Expression\ConfiguredMockEntityToSetterObjectRector\Source;
4+
5+
use Doctrine\ORM\Mapping as ORM;
6+
7+
#[ORM\Entity()]
8+
abstract class AbstractEntityToBeConfigured
9+
{
10+
private string $name = '';
11+
12+
public function setName($name)
13+
{
14+
$this->name = $name;
15+
}
16+
17+
public function getName(): string
18+
{
19+
return $this->name;
20+
}
21+
}

rules/CodeQuality/Rector/Expression/ConfiguredMockEntityToSetterObjectRector.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace Rector\PHPUnit\CodeQuality\Rector\Expression;
66

7-
use PhpParser\Node\Stmt\Class_;
87
use PhpParser\Node;
98
use PhpParser\Node\Arg;
109
use PhpParser\Node\Expr;
@@ -13,6 +12,7 @@
1312
use PhpParser\Node\Expr\MethodCall;
1413
use PhpParser\Node\Expr\New_;
1514
use PhpParser\Node\Name\FullyQualified;
15+
use PhpParser\Node\Stmt\Class_;
1616
use PhpParser\Node\Stmt\Expression;
1717
use PHPStan\Reflection\ReflectionProvider;
1818
use Rector\Doctrine\NodeAnalyzer\DoctrineEntityDetector;
@@ -175,6 +175,11 @@ private function matchDoctrineClassName(Expr $expr): string|null
175175
return null;
176176
}
177177

178+
$classReflection = $this->reflectionProvider->getClass($mockedClassValue);
179+
if ($classReflection->isInterface() || $classReflection->isAbstract()) {
180+
return null;
181+
}
182+
178183
$mockedClass = $this->astResolver->resolveClassFromName($mockedClassValue);
179184
if (! $mockedClass instanceof Class_) {
180185
return null;

0 commit comments

Comments
 (0)