edmondscommerce /
doctrine-static-meta
| 1 | <?php |
||||
| 2 | |||||
| 3 | declare(strict_types=1); |
||||
| 4 | |||||
| 5 | namespace EdmondsCommerce\DoctrineStaticMeta\Tests\Large\A; |
||||
| 6 | |||||
| 7 | use Doctrine\Common\Proxy\Proxy as DeprecatedProxy; |
||||
| 8 | use Doctrine\ORM\Proxy\Proxy; |
||||
| 9 | use Doctrine\ORM\Proxy\ProxyFactory; |
||||
| 10 | use EdmondsCommerce\DoctrineStaticMeta\Entity\Interfaces\EntityInterface; |
||||
| 11 | use EdmondsCommerce\DoctrineStaticMeta\Tests\Assets\AbstractLargeTest; |
||||
| 12 | use EdmondsCommerce\DoctrineStaticMeta\Tests\Assets\AbstractTest; |
||||
| 13 | use EdmondsCommerce\DoctrineStaticMeta\Tests\Assets\TestCodeGenerator; |
||||
| 14 | |||||
| 15 | use function array_map; |
||||
| 16 | |||||
| 17 | /** |
||||
| 18 | * @coversNothing |
||||
| 19 | */ |
||||
| 20 | class ProxiesTest extends AbstractLargeTest |
||||
| 21 | { |
||||
| 22 | public const WORK_DIR = AbstractTest::VAR_PATH . '/' . self::TEST_TYPE_MEDIUM . '/ProxiesTest/'; |
||||
| 23 | protected static $buildOnce = true; |
||||
| 24 | /** |
||||
| 25 | * @var ProxyFactory |
||||
| 26 | */ |
||||
| 27 | private $proxyFactory; |
||||
| 28 | /** |
||||
| 29 | * It is a Proxy, the others are just to make PHPStan happy |
||||
| 30 | * |
||||
| 31 | * @var Proxy|DeprecatedProxy|EntityInterface |
||||
| 32 | */ |
||||
| 33 | private $proxy; |
||||
| 34 | private $testEntityFqns; |
||||
| 35 | |||||
| 36 | public function setup() |
||||
| 37 | { |
||||
| 38 | parent::setUp(); |
||||
| 39 | if (false === self::$built) { |
||||
| 40 | $this->getTestCodeGenerator() |
||||
| 41 | ->copyTo(self::WORK_DIR); |
||||
| 42 | self::$built = true; |
||||
| 43 | } |
||||
| 44 | $this->setupCopiedWorkDirAndCreateDatabase(); |
||||
| 45 | $this->setupProxyFactory(); |
||||
| 46 | $this->testEntityFqns = $this->getTestEntityFqns(); |
||||
| 47 | $this->proxyFactory->generateProxyClasses($this->getClassMetaDatas()); |
||||
| 48 | $testEntity = current($this->testEntityFqns); |
||||
| 49 | $this->getEntitySaver()->save($this->createEntity($testEntity)); |
||||
| 50 | $this->proxy = $this->proxyFactory->getProxy($testEntity, ['id' => 1]); |
||||
| 51 | } |
||||
| 52 | |||||
| 53 | private function setupProxyFactory(): void |
||||
| 54 | { |
||||
| 55 | $proxyDir = $this->copiedWorkDir . '/proxies'; |
||||
| 56 | mkdir($proxyDir, 0777, true); |
||||
| 57 | $this->proxyFactory = new ProxyFactory( |
||||
| 58 | $this->getEntityManager(), |
||||
| 59 | $proxyDir, |
||||
| 60 | $this->copiedRootNamespace . '\\Proxies' |
||||
| 61 | ); |
||||
| 62 | } |
||||
| 63 | |||||
| 64 | private function getTestEntityFqns(): array |
||||
| 65 | { |
||||
| 66 | $copiedRootNamespace = $this->copiedRootNamespace; |
||||
| 67 | |||||
| 68 | return array_map( |
||||
| 69 | static function (string $entityFqn) use ($copiedRootNamespace): string { |
||||
| 70 | return $copiedRootNamespace . $entityFqn; |
||||
| 71 | }, |
||||
| 72 | TestCodeGenerator::TEST_ENTITIES |
||||
| 73 | ); |
||||
| 74 | } |
||||
| 75 | |||||
| 76 | private function getClassMetaDatas(): array |
||||
| 77 | { |
||||
| 78 | $return = []; |
||||
| 79 | $entityManager = $this->getEntityManager(); |
||||
| 80 | foreach ($this->testEntityFqns as $entityFqn) { |
||||
| 81 | $return[] = $entityManager->getClassMetadata($entityFqn); |
||||
| 82 | } |
||||
| 83 | |||||
| 84 | return $return; |
||||
| 85 | } |
||||
| 86 | |||||
| 87 | /** |
||||
| 88 | * @test |
||||
| 89 | * @large |
||||
| 90 | */ |
||||
| 91 | public function proxyObjectsCanGetGettersAndSetters(): void |
||||
| 92 | { |
||||
| 93 | $expectedSetters = [ |
||||
| 94 | 'getAttributesAddress' => 'setAttributesAddress', |
||||
| 95 | 'getAttributesEmails' => 'setAttributesEmails', |
||||
| 96 | 'getCompanyDirector' => 'setCompanyDirector', |
||||
| 97 | 'getLargeRelation' => 'setLargeRelation', |
||||
| 98 | 'getId' => 'setId', |
||||
| 99 | 'getString' => 'setString', |
||||
| 100 | 'getDatetime' => 'setDatetime', |
||||
| 101 | 'getFloat' => 'setFloat', |
||||
| 102 | 'getDecimal' => 'setDecimal', |
||||
| 103 | 'getInteger' => 'setInteger', |
||||
| 104 | 'getText' => 'setText', |
||||
| 105 | 'isBoolean' => 'setBoolean', |
||||
| 106 | 'getArray' => 'setArray', |
||||
| 107 | 'getObject' => 'setObject', |
||||
| 108 | ]; |
||||
| 109 | $actualSetters = $this->proxy::getDoctrineStaticMeta()->getSetters(); |
||||
|
0 ignored issues
–
show
The method
getDoctrineStaticMeta() does not exist on Doctrine\ORM\Proxy\Proxy.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. Loading history...
|
|||||
| 110 | self::assertSame($expectedSetters, $actualSetters); |
||||
| 111 | $expectedGetters = [ |
||||
| 112 | 'getAttributesAddress', |
||||
| 113 | 'getAttributesEmails', |
||||
| 114 | 'getCompanyDirector', |
||||
| 115 | 'getLargeRelation', |
||||
| 116 | 'getId', |
||||
| 117 | 'getUuid', |
||||
| 118 | 'getString', |
||||
| 119 | 'getDatetime', |
||||
| 120 | 'getFloat', |
||||
| 121 | 'getDecimal', |
||||
| 122 | 'getInteger', |
||||
| 123 | 'getText', |
||||
| 124 | 'isBoolean', |
||||
| 125 | 'getArray', |
||||
| 126 | 'getObject', |
||||
| 127 | ]; |
||||
| 128 | $actualGetters = $this->proxy::getDoctrineStaticMeta()->getGetters(); |
||||
| 129 | self::assertSame($expectedGetters, $actualGetters); |
||||
| 130 | } |
||||
| 131 | } |
||||
| 132 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.