From 60eaa3bc73bd77f9ec1c927d4d61a041f6441eff Mon Sep 17 00:00:00 2001 From: Fran Moreno Date: Mon, 21 Jun 2021 18:57:55 +0200 Subject: [PATCH] Fix some SA issues in tests --- phpstan-baseline.neon | 20 -------------- .../Functional/CustomCollectionsTest.php | 3 ++- .../Tests/Functional/EcommerceTest.php | 11 +++++--- .../Tests/Functional/Ticket/GH1011Test.php | 3 +++ .../Tests/Functional/Ticket/GH1428Test.php | 2 +- .../Tests/Mapping/ClassMetadataTest.php | 26 ++++++++++--------- tests/Documents/CmsArticle.php | 2 ++ .../Ticket/GH683/ParentDocument.php | 16 ++++++++++-- 8 files changed, 43 insertions(+), 40 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 6277dcf824..4243184cee 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -89,16 +89,6 @@ parameters: count: 1 path: tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php - - - message: "#^Parameter \\#1 \\$object of method Doctrine\\\\ODM\\\\MongoDB\\\\DocumentManager\\:\\:detach\\(\\) expects object, float\\|int given\\.$#" - count: 1 - path: tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php - - - - message: "#^Parameter \\#2 \\$currency of class Documents\\\\Ecommerce\\\\Money constructor expects Documents\\\\Ecommerce\\\\Currency, int given\\.$#" - count: 6 - path: tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php - - message: "#^Cannot call method getCount\\(\\) on array\\|int\\|object\\.$#" count: 1 @@ -154,11 +144,6 @@ parameters: count: 2 path: tests/Doctrine/ODM/MongoDB/Tests/Functional/QueryTest.php - - - message: "#^Parameter \\#1 \\$coll of method Doctrine\\\\ODM\\\\MongoDB\\\\UnitOfWork\\:\\:isCollectionScheduledForUpdate\\(\\) expects Doctrine\\\\ODM\\\\MongoDB\\\\PersistentCollection\\\\PersistentCollectionInterface, Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\\ given\\.$#" - count: 1 - path: tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1011Test.php - - message: "#^Comparison operation \"\\<\" between \\(array\\|float\\|int\\) and 0 results in an error\\.$#" count: 1 @@ -229,11 +214,6 @@ parameters: count: 1 path: tests/Doctrine/ODM/MongoDB/Tests/Mapping/ClassMetadataTest.php - - - message: "#^Access to an undefined property Documents\\\\CmsArticle\\:\\:\\$title\\.$#" - count: 4 - path: tests/Doctrine/ODM/MongoDB/Tests/Persisters/PersistenceBuilderTest.php - - message: "#^Parameter \\#1 \\$primer of method Doctrine\\\\ODM\\\\MongoDB\\\\Query\\\\Builder\\:\\:prime\\(\\) expects bool\\|\\(callable\\(\\)\\: mixed\\), 1 given\\.$#" count: 1 diff --git a/tests/Doctrine/ODM/MongoDB/Tests/Functional/CustomCollectionsTest.php b/tests/Doctrine/ODM/MongoDB/Tests/Functional/CustomCollectionsTest.php index ab11f2e2ae..743c1681f4 100644 --- a/tests/Doctrine/ODM/MongoDB/Tests/Functional/CustomCollectionsTest.php +++ b/tests/Doctrine/ODM/MongoDB/Tests/Functional/CustomCollectionsTest.php @@ -14,6 +14,7 @@ use Doctrine\ODM\MongoDB\Tests\BaseTest; use Documents\File; use Documents\ProfileNotify; +use stdClass; use function assert; use function get_class; @@ -47,7 +48,7 @@ public function testCollectionClassHasToImplementCommonInterface() 'fieldName' => 'assoc', 'reference' => true, 'type' => 'many', - 'collectionClass' => 'stdClass', + 'collectionClass' => stdClass::class, ]); } diff --git a/tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php b/tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php index 8a06677b6e..a2f5a463a4 100644 --- a/tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php +++ b/tests/Doctrine/ODM/MongoDB/Tests/Functional/EcommerceTest.php @@ -17,11 +17,14 @@ public function setUp(): void { parent::setUp(); - $currencies = ['USD' => 1, 'EURO' => 1.7, 'JPN' => 0.0125]; + $currencies = []; + $multipliers = ['USD' => 1, 'EURO' => 1.7, 'JPN' => 0.0125]; - foreach ($currencies as $name => &$multiplier) { - $multiplier = new Currency($name, $multiplier); - $this->dm->persist($multiplier); + foreach ($multipliers as $currencyName => $multiplier) { + $currency = new Currency($currencyName, $multiplier); + $this->dm->persist($currency); + + $currencies[$currencyName] = $currency; } $product = new ConfigurableProduct('T-Shirt'); diff --git a/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1011Test.php b/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1011Test.php index 3da38c77a4..c861c7c019 100644 --- a/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1011Test.php +++ b/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1011Test.php @@ -6,6 +6,7 @@ use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM; +use Doctrine\ODM\MongoDB\PersistentCollection\PersistentCollectionInterface; use Doctrine\ODM\MongoDB\Tests\BaseTest; class GH1011Test extends BaseTest @@ -33,7 +34,9 @@ public function testReplaceCollection() $doc->embeds = new ArrayCollection(); $doc->embeds->add(new GH1011Embedded('test2')); $this->uow->computeChangeSets(); + $this->assertInstanceOf(PersistentCollectionInterface::class, $doc->embeds); $this->assertTrue($this->uow->isCollectionScheduledForUpdate($doc->embeds)); + $this->assertInstanceOf(PersistentCollectionInterface::class, $oldCollection); $this->assertFalse($this->uow->isCollectionScheduledForDeletion($oldCollection)); } } diff --git a/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1428Test.php b/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1428Test.php index f1fee8516e..80bfce6c31 100644 --- a/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1428Test.php +++ b/tests/Doctrine/ODM/MongoDB/Tests/Functional/Ticket/GH1428Test.php @@ -28,7 +28,7 @@ public function testShortNameLossOnReplacingMiddleEmbeddedDocOfNestedEmbedding() $this->dm->flush(); $this->assertTrue(true); } catch (Notice $ex) { - $this->fail($ex); + $this->fail($ex->getMessage()); } } } diff --git a/tests/Doctrine/ODM/MongoDB/Tests/Mapping/ClassMetadataTest.php b/tests/Doctrine/ODM/MongoDB/Tests/Mapping/ClassMetadataTest.php index 1d38c9e1f4..a848cddb18 100644 --- a/tests/Doctrine/ODM/MongoDB/Tests/Mapping/ClassMetadataTest.php +++ b/tests/Doctrine/ODM/MongoDB/Tests/Mapping/ClassMetadataTest.php @@ -12,6 +12,8 @@ use Doctrine\ODM\MongoDB\Tests\BaseTest; use Doctrine\ODM\MongoDB\Types\Type; use Doctrine\ODM\MongoDB\Utility\CollectionHelper; +use DoctrineGlobal_Article; +use DoctrineGlobal_User; use Documents\Account; use Documents\Address; use Documents\Album; @@ -139,13 +141,13 @@ public function testMapAssocationInGlobalNamespace() { require_once __DIR__ . '/Documents/GlobalNamespaceDocument.php'; - $cm = new ClassMetadata('DoctrineGlobal_Article'); + $cm = new ClassMetadata(DoctrineGlobal_Article::class); $cm->mapManyEmbedded([ 'fieldName' => 'author', - 'targetDocument' => 'DoctrineGlobal_User', + 'targetDocument' => DoctrineGlobal_User::class, ]); - $this->assertEquals('DoctrineGlobal_User', $cm->fieldMappings['author']['targetDocument']); + $this->assertEquals(DoctrineGlobal_User::class, $cm->fieldMappings['author']['targetDocument']); } public function testMapManyToManyJoinTableDefaults() @@ -182,11 +184,11 @@ public function testSetDiscriminatorMapInGlobalNamespace() { require_once __DIR__ . '/Documents/GlobalNamespaceDocument.php'; - $cm = new ClassMetadata('DoctrineGlobal_User'); - $cm->setDiscriminatorMap(['descr' => 'DoctrineGlobal_Article', 'foo' => 'DoctrineGlobal_User']); + $cm = new ClassMetadata(DoctrineGlobal_User::class); + $cm->setDiscriminatorMap(['descr' => DoctrineGlobal_Article::class, 'foo' => DoctrineGlobal_User::class]); - $this->assertEquals('DoctrineGlobal_Article', $cm->discriminatorMap['descr']); - $this->assertEquals('DoctrineGlobal_User', $cm->discriminatorMap['foo']); + $this->assertEquals(DoctrineGlobal_Article::class, $cm->discriminatorMap['descr']); + $this->assertEquals(DoctrineGlobal_User::class, $cm->discriminatorMap['foo']); } /** @@ -196,16 +198,16 @@ public function testSetSubClassesInGlobalNamespace() { require_once __DIR__ . '/Documents/GlobalNamespaceDocument.php'; - $cm = new ClassMetadata('DoctrineGlobal_User'); - $cm->setSubclasses(['DoctrineGlobal_Article']); + $cm = new ClassMetadata(DoctrineGlobal_User::class); + $cm->setSubclasses([DoctrineGlobal_Article::class]); - $this->assertEquals('DoctrineGlobal_Article', $cm->subClasses[0]); + $this->assertEquals(DoctrineGlobal_Article::class, $cm->subClasses[0]); } public function testDuplicateFieldMapping() { $cm = new ClassMetadata(CmsUser::class); - $a1 = ['reference' => true, 'type' => 'many', 'fieldName' => 'name', 'targetDocument' => 'stdClass']; + $a1 = ['reference' => true, 'type' => 'many', 'fieldName' => 'name', 'targetDocument' => stdClass::class]; $a2 = ['type' => 'string', 'fieldName' => 'name']; $cm->mapField($a1); @@ -309,7 +311,7 @@ public function testDefaultDiscriminatorField() 'fieldName' => 'assocWithTargetDocument', 'reference' => true, 'type' => 'one', - 'targetDocument' => 'stdClass', + 'targetDocument' => stdClass::class, ]); $cm->mapField([ diff --git a/tests/Documents/CmsArticle.php b/tests/Documents/CmsArticle.php index 58c8f5ae49..a7fb7005d2 100644 --- a/tests/Documents/CmsArticle.php +++ b/tests/Documents/CmsArticle.php @@ -19,6 +19,8 @@ class CmsArticle /** @ODM\Field(type="string") */ public $topic; /** @ODM\Field(type="string") */ + public $title; + /** @ODM\Field(type="string") */ public $text; /** @ODM\ReferenceOne(targetDocument=CmsUser::class) */ public $user; diff --git a/tests/Documents/Functional/Ticket/GH683/ParentDocument.php b/tests/Documents/Functional/Ticket/GH683/ParentDocument.php index db810df32e..b108b9c9e2 100644 --- a/tests/Documents/Functional/Ticket/GH683/ParentDocument.php +++ b/tests/Documents/Functional/Ticket/GH683/ParentDocument.php @@ -4,6 +4,7 @@ namespace Documents\Functional\Ticket\GH683; +use Doctrine\Common\Collections\Collection; use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM; /** @ODM\Document(collection="gh683_test") */ @@ -11,10 +12,21 @@ class ParentDocument { /** @ODM\Id */ public $id; + /** @ODM\Field(type="string") */ public $name; - /** @ODM\EmbedOne(targetDocument=AbstractEmbedded::class) */ + + /** + * @ODM\EmbedOne(targetDocument=AbstractEmbedded::class) + * + * @var AbstractEmbedded|null + */ public $embedOne; - /** @ODM\EmbedMany(targetDocument=AbstractEmbedded::class) */ + + /** + * @ODM\EmbedMany(targetDocument=AbstractEmbedded::class) + * + * @var Collection + */ public $embedMany; }