kuzman / doctrine-elastica-test-bundle
PHPUnit rollback support for Elasticsearch writes performed through FOSElasticaBundle.
Package info
github.com/igor-kuzmanovic/doctrine-elastica-test-bundle
Type:symfony-bundle
pkg:composer/kuzman/doctrine-elastica-test-bundle
Requires
- php: >=8.2
- friendsofsymfony/elastica-bundle: dev-main
- symfony/framework-bundle: ^6.4 || ^7.3 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.94
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5.41 || ^12.3.14 || ^13.0
Conflicts
- phpunit/phpunit: <11.0
This package is auto-updated.
Last update: 2026-05-03 08:49:40 UTC
README
DoctrineElasticaTestBundle rolls back Elasticsearch changes made through FOSElastica persisters between PHPUnit tests.
Heavily inspired by https://github.com/dmaicher/doctrine-test-bundle.
🚨 EXPERIMENTAL
- This bundle is experimental and may change without notice.
- Currently works only with the FOSElasticaBundle fork at https://github.com/igor-kuzmanovic/FOSElasticaBundle.
Requirements
- PHP 8.2 or higher
- Symfony 6.4, 7.3, or 8.0
- FOSElasticaBundle 7.x
Installation
composer require --dev kuzman/doctrine-elastica-test-bundle
Register the bundle for the test environment in config/bundles.php:
return [ // ... Kuzman\DoctrineElasticaTestBundle\KuzmanDoctrineElasticaTestBundle::class => ['test' => true], ];
Add the PHPUnit extension to phpunit.xml.dist:
<extensions> <bootstrap class="Kuzman\DoctrineElasticaTestBundle\PHPUnit\PHPUnitExtension"/> </extensions>
Usage
Once installed, the bundle activates automatically when your PHPUnit suite loads the extension.
Skipping rollback for specific tests
Use Kuzman\DoctrineElasticaTestBundle\PHPUnit\SkipElasticsearchRollback when you need to bypass rollback handling for a specific test class or method.
use Kuzman\DoctrineElasticaTestBundle\PHPUnit\SkipElasticsearchRollback; #[SkipElasticsearchRollback] // skip for all tests in this class final class MyTest extends \PHPUnit\Framework\TestCase { } final class AnotherTest extends \PHPUnit\Framework\TestCase { #[SkipElasticsearchRollback] // skip only this test method public function testSomething(): void { } }
Caveats
- Only writes that go through FOSElastica persisters are tracked.
- Out-of-band Elasticsearch writes are not rolled back.
- Rollback works only when tests are executed by PHPUnit with this extension enabled in phpunit.xml.dist.
Development
vendor/bin/php-cs-fixer fix --dry-run --diff vendor/bin/phpstan analyse vendor/bin/phpunit