kuzman/doctrine-elastica-test-bundle

PHPUnit rollback support for Elasticsearch writes performed through FOSElasticaBundle.

Maintainers

Package info

github.com/igor-kuzmanovic/doctrine-elastica-test-bundle

Type:symfony-bundle

pkg:composer/kuzman/doctrine-elastica-test-bundle

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

dev-main 2026-04-02 19:47 UTC

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

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