Browse Source

chore: stop using `phpunitgoodpractices/traits` (#7363)

Dariusz Rumiński 1 year ago
parent
commit
8707df54f0
3 changed files with 34 additions and 22 deletions
  1. 0 1
      composer.json
  2. 32 0
      tests/AutoReview/ProjectCodeTest.php
  3. 2 21
      tests/TestCase.php

+ 0 - 1
composer.json

@@ -49,7 +49,6 @@
         "phpspec/prophecy": "^1.16",
         "phpspec/prophecy-phpunit": "^2.0",
         "phpunit/phpunit": "^9.5",
-        "phpunitgoodpractices/traits": "^1.9.2",
         "symfony/phpunit-bridge": "^6.2.3",
         "symfony/yaml": "^5.4 || ^6.0"
     },

+ 32 - 0
tests/AutoReview/ProjectCodeTest.php

@@ -364,6 +364,38 @@ final class ProjectCodeTest extends TestCase
         self::assertNotContains('preg_split', $strings, $message);
     }
 
+    /**
+     * @dataProvider provideTestClassCases
+     */
+    public function testNoPHPUnitMockUsed(string $testClassName): void
+    {
+        $rc = new \ReflectionClass($testClassName);
+        $tokens = Tokens::fromCode(file_get_contents($rc->getFileName()));
+        $stringTokens = array_filter(
+            $tokens->toArray(),
+            static fn (Token $token): bool => $token->isGivenKind(T_STRING)
+        );
+
+        $strings = array_map(
+            static fn (Token $token): string => $token->getContent(),
+            $stringTokens
+        );
+        $strings = array_unique($strings);
+
+        $message = sprintf('Class %s must not use PHPUnit\'s mock,, it shall use ->prophesize() instead.', $testClassName);
+        self::assertNotContains('getMockBuilder', $strings, $message);
+        self::assertNotContains('createMock', $strings, $message);
+        self::assertNotContains('createMockForIntersectionOfInterfaces', $strings, $message);
+        self::assertNotContains('createPartialMock', $strings, $message);
+        self::assertNotContains('createTestProxy', $strings, $message);
+        self::assertNotContains('getMockForAbstractClass', $strings, $message);
+        self::assertNotContains('getMockFromWsdl', $strings, $message);
+        self::assertNotContains('getMockForTrait', $strings, $message);
+        self::assertNotContains('getMockClass', $strings, $message);
+        self::assertNotContains('createConfiguredMock', $strings, $message);
+        self::assertNotContains('getObjectForTrait', $strings, $message);
+    }
+
     /**
      * @dataProvider provideTestClassCases
      */

+ 2 - 21
tests/TestCase.php

@@ -15,11 +15,6 @@ declare(strict_types=1);
 namespace PhpCsFixer\Tests;
 
 use PHPUnit\Framework\TestCase as BaseTestCase;
-use PHPUnitGoodPractices\Traits\ExpectationViaCodeOverAnnotationTrait;
-use PHPUnitGoodPractices\Traits\ExpectOverSetExceptionTrait;
-use PHPUnitGoodPractices\Traits\IdentityOverEqualityTrait;
-use PHPUnitGoodPractices\Traits\ProphecyOverMockObjectTrait;
-use PHPUnitGoodPractices\Traits\ProphesizeOnlyInterfaceTrait;
 use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
 
@@ -28,22 +23,8 @@ use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
  *
  * @internal
  */
-abstract class InterimTestCase extends BaseTestCase
+abstract class TestCase extends BaseTestCase
 {
-    use ProphecyTrait;
-}
-
-/**
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
- *
- * @internal
- */
-abstract class TestCase extends InterimTestCase
-{
-    use ExpectationViaCodeOverAnnotationTrait;
     use ExpectDeprecationTrait;
-    use ExpectOverSetExceptionTrait;
-    use IdentityOverEqualityTrait;
-    use ProphecyOverMockObjectTrait;
-    use ProphesizeOnlyInterfaceTrait;
+    use ProphecyTrait;
 }