xp-devs / rector-verify
Rector refactoring to migrate from PHPHunit assertions to Codeception/Verify expectations
Installs: 1 707
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/xp-devs/rector-verify
Requires
- php: >=8.0
- rector/rector: ^2.0
- webmozart/assert: ^1.0
Requires (Dev)
- codeception/verify: ^3.0
- ergebnis/composer-normalize: ^2.45.0
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- phpstan/phpstan-webmozart-assert: ^2.0
- phpunit/phpunit: ^11.0
- symfony/finder: ^7.2
- symplify/easy-coding-standard: ^12.5
README
This project lets you migrate from PHPUnit assertions to BDD style assertions Codeception/Verify using automated refactoring powered by Rector
Code before:
class GenericEventTest extends TestCase { private GenericEvent $event; private \stdClass $subject; protected function setUp(): void { $this->subject = new \stdClass(); $this->event = new GenericEvent($this->subject, ['name' => 'Event']); } public function testConstruct() { $this->assertEquals(new GenericEvent($this->subject, ['name' => 'Event']), $this->event); } /** * Tests Event->getArgs(). */ public function testGetArguments() { // test getting all $this->assertSame(['name' => 'Event'], $this->event->getArguments()); } public function testSetArguments() { $result = $this->event->setArguments(['foo' => 'bar']); $this->assertSame(['foo' => 'bar'], $this->event->getArguments()); $this->assertSame($this->event, $result); } }
Code after:
class GenericEventTest extends TestCase { private GenericEvent $event; private \stdClass $subject; protected function setUp(): void { $this->subject = new \stdClass(); $this->event = new GenericEvent($this->subject, ['name' => 'Event']); } public function testConstruct() { expect($this->event)->toEqual(new GenericEvent($this->subject, ['name' => 'Event'])); } /** * Tests Event->getArgs(). */ public function testGetArguments() { // test getting all expect($this->event->getArguments())->toBe(['name' => 'Event']); } public function testSetArguments() { $result = $this->event->setArguments(['foo' => 'bar']); expect($this->event->getArguments())->toBe(['foo' => 'bar']); expect($result)->toBe($this->event); } }
Installation
You can install the package as a dev dependency:
composer require --dev xp-devs/rector-verify
Configuration
Add AssertionVerifyRector rule to your Rector config file
<?php declare(strict_types=1); use Rector\Config\RectorConfig; use XpDevs\RectorVerify\AssertionVerifyRector; return RectorConfig::configure() ->withRules([ AssertionVerifyRector::class, ]);
Usage
To see the code migrations that Rector will do, run:
vendor/bin/rector process --dry-run
and when you want to execute the migrations run:
vendor/bin/rector process
Supports expectations
| PHPUnit | Expect |
|---|---|
| assertEquals | toEqual |
| assertNotEquals | notToEqual |
| assertSame | toBe |
| assertNotSame | notToBe |
| assertInstanceOf | toBeInstanceOf |
| assertNotInstanceOf | notToBeInstanceOf |
| assertCount | arrayToHaveCount |
| assertNotCount | arrayNotToHaveCount |
| assertGreaterThan | toBeGreaterThan |
| assertGreaterThanOrEqual | toBeGreaterThanOrEqualTo |
| assertLessThan | toBeLessThan |
| assertLessThanOrEqual | toBeLessThanOrEqualTo |
| assertContainsOnlyInstancesOf | arrayToContainOnlyInstancesOf |
| assertArrayHasKey | arrayToHaveKey |
| assertArrayNotHasKey | arrayNotToHaveKey |
| assertNotContains | arrayNotToContain |
| assertNotContainsEquals | arrayNotToContainEqual |
| assertNotContainsOnly | arrayNotToContainOnly |
| assertNotSameSize | arrayNotToHaveSameSizeAs |
| assertContains | arrayToContain |
| assertContainsEquals | arrayToContainEqual |
| assertContainsOnly | arrayToContainOnly |
| assertSameSize | arrayToHaveSameSizeAs |
| assertObjectNotHasProperty | baseObjectNotToHaveProperty |
| assertObjectHasProperty | baseObjectToHaveProperty |
| assertJsonFileNotEqualsJsonFile | jsonFileNotToEqualJsonFile |
| assertJsonFileEqualsJsonFile | jsonFileToEqualJsonFile |
| assertJsonStringNotEqualsJsonFile | jsonStringNotToEqualJsonFile |
| assertJsonStringNotEqualsJsonString | jsonStringNotToEqualJsonString |
| assertJsonStringEqualsJsonFile | jsonStringToEqualJsonFile |
| assertJsonStringEqualsJsonString | jsonStringToEqualJsonString |
| assertXmlFileNotEqualsXmlFile | xmlFileNotToEqualXmlFile |
| assertXmlFileEqualsXmlFile | xmlFileToEqualXmlFile |
| assertXmlStringNotEqualsXmlFile | xmlStringNotToEqualXmlFile |
| assertXmlStringNotEqualsXmlString | xmlStringNotToEqualXmlString |
| assertXmlStringEqualsXmlFile | xmlStringToEqualXmlFile |
| assertXmlStringEqualsXmlString | xmlStringToEqualXmlString |
| assertStringNotContainsString | stringNotToContainString |
| assertStringNotContainsStringIgnoringCase | stringNotToContainStringIgnoringCase |
| assertStringEndsNotWith | stringNotToEndWith |
| assertStringNotEqualsFile | stringNotToEqualFile |
| assertStringNotEqualsFileCanonicalizing | stringNotToEqualFileCanonicalizing |
| assertStringNotEqualsFileIgnoringCase | stringNotToEqualFileIgnoringCase |
| assertStringNotMatchesFormat | stringNotToMatchFormat |
| assertStringNotMatchesFormatFile | stringNotToMatchFormatFile |
| assertDoesNotMatchRegularExpression | stringNotToMatchRegExp |
| assertStringStartsNotWith | stringNotToStartWith |
| assertJson | stringToBeJson |
| assertStringContainsString | stringToContainString |
| assertStringContainsStringIgnoringCase | stringToContainStringIgnoringCase |
| assertStringEndsWith | stringToEndWith |
| assertStringEqualsFile | stringToEqualFile |
| assertStringEqualsFileCanonicalizing | stringToEqualFileCanonicalizing |
| assertStringEqualsFileIgnoringCase | stringToEqualFileIgnoringCase |
| assertStringMatchesFormat | stringToMatchFormat |
| assertStringMatchesFormatFile | stringToMatchFormatFile |
| assertMatchesRegularExpression | stringToMatchRegExp |
| assertStringStartsWith | stringToStartWith |
| assertNotEqualsCanonicalizing | notToEqualCanonicalizing |
| assertNotEqualsIgnoringCase | notToEqualIgnoringCase |
| assertEqualsCanonicalizing | toEqualCanonicalizing |
| assertEqualsIgnoringCase | toEqualIgnoringCase |
| assertTrue | toBeTrue |
| assertNotTrue | notToBeTrue |
| assertFalse | toBeFalse |
| assertNotFalse | notToBeFalse |
| assertNull | toBeNull |
| assertNotNull | notToBeNull |
| assertEmpty | toBeEmpty |
| assertNotEmpty | notToBeEmpty |
| assertIsArray | toBeArray |
| assertIsBool | toBeBool |
| assertIsFloat | toBeFloat |
| assertIsInt | toBeInt |
| assertIsNumeric | toBeNumeric |
| assertIsObject | toBeObject |
| assertIsResource | toBeResource |
| assertIsString | toBeString |
| assertIsScalar | toBeScalar |
| assertIsCallable | toBeCallable |
| assertIsIterable | toBeIterable |
| assertIsNotArray | notToBeArray |
| assertIsNotBool | notToBeBool |
| assertIsNotFloat | notToBeFloat |
| assertIsNotInt | notToBeInt |
| assertIsNotNumeric | notToBeNumeric |
| assertIsNotObject | notToBeObject |
| assertIsNotResource | notToBeResource |
| assertIsNotString | notToBeString |
| assertIsNotScalar | notToBeScalar |
| assertIsNotCallable | notToBeCallable |
| assertIsNotIterable | notToBeIterable |
| assertDirectoryIsNotReadable | directoryNotToBeReadable |
| assertDirectoryIsNotWritable | directoryNotToBeWritable |
| assertDirectoryDoesNotExist | directoryNotToExist |
| assertDirectoryIsReadable | directoryToBeReadable |
| assertDirectoryIsWritable | directoryToBeWritable |
| assertDirectoryExists | directoryToExist |
| assertFileIsNotReadable | fileNotToBeReadable |
| assertFileIsNotWritable | fileNotToBeWritable |
| assertFileDoesNotExist | fileNotToExist |
| assertFileEquals | fileToBeEqual |
| assertFileEqualsCanonicalizing | fileToBeEqualCanonicalizing |
| assertFileEqualsIgnoringCase | fileToBeEqualIgnoringCase |
| assertFileIsReadable | fileToBeReadable |
| assertFileIsWritable | fileToBeWritable |
| assertFileExists | fileToExist |
| assertFileNotEquals | fileToNotEqual |
| assertFileNotEqualsCanonicalizing | fileToNotEqualCanonicalizing |
| assertFileNotEqualsIgnoringCase | fileToNotEqualIgnoringCase |
| assertIsNotClosedResource | notToBeClosedResource |
| assertIsClosedResource | toBeClosedResource |
| assertFinite | toBeFinite |
| assertInfinite | toBeInfinite |
| assertNan | toBeNan |
License
The MIT License (MIT). Please see License File for more information.