impulsephp / fixtures
Fixtures provider for ImpulsePHP with Faker integration, CLI scaffolding and story-based dataset scenarios.
Requires
- php: >=8.2
- fakerphp/faker: ^1.24
- impulsephp/core: dev-main
- impulsephp/db: dev-main
This package is auto-updated.
Last update: 2026-04-11 16:56:13 UTC
README
impulsephp/fixtures fournit un provider de fixtures pour ImpulsePHP, pensé pour rester proche des conventions réelles du dépôt : services simples dans le conteneur, exécution via db, commandes Symfony Console explicites, et scénarios métier composables avec des stories.
Ce que fait le package
- enregistre un gestionnaire de fixtures dans le conteneur ;
- scanne les fixtures applicatives dans
src/Fixtureettests/Fixtures; - scanne les stories de fixtures dans
src/Fixture/Storyettests/Fixtures/Story; - exécute les fixtures avec
Cycle\ORM\ORMInterfaceviaimpulsephp/db; - fournit un contexte d’exécution avec références, seed déterministe et accès simple à Faker ;
- propose une commande
make:fixturepour générer un squelette ; - propose une commande
fixtures:runpour exécuter toutes les fixtures, une fixture précise ou une story nommée.
Prérequis
- PHP 8.2 ou supérieur ;
- une application ImpulsePHP avec
impulsephp/core; impulsephp/dbchargé dans les providers de l’application ;- un fichier
impulse.phpà la racine de l’application.
Installation
composer require impulsephp/fixtures
Le package déclare son provider via extra.impulse-provider. Si votre application n’utilise pas l’auto-découverte, ajoutez Impulse\Fixtures\FixturesProvider à la configuration providers de impulse.php.
Configuration minimale
<?php use Impulse\Db\DbProvider; use Impulse\Fixtures\FixturesProvider; return [ 'env' => 'dev', 'providers' => [ DbProvider::class, FixturesProvider::class, ], 'database' => [ 'name' => 'app', 'driver' => 'sqlite', 'database' => __DIR__ . '/var/storage/database.sqlite', ], ];
Options disponibles :
fixtures.paths: chemins additionnels de fixtures.fixtures.story_paths: chemins additionnels de stories.fixtures.locale: locale Faker par défaut. Défauten_US.fixtures.seed: seed par défaut utilisée si la commande n’en reçoit pas.
Exemple rapide
use App\Entity\User; use Impulse\Fixtures\AbstractFixture; use Impulse\Fixtures\FixtureContext; final class UserFixture extends AbstractFixture { public function load(FixtureContext $context): void { for ($i = 0; $i < 5; $i++) { $user = new User(); $user->email = $context->faker()->unique()->safeEmail(); $context->persist($user); } } }
Story associée :
use App\Fixture\PostFixture; use App\Fixture\UserFixture; use Impulse\Fixtures\AbstractStory; final class DemoStory extends AbstractStory { public function fixtures(): array { return [ UserFixture::class, PostFixture::class, ]; } }
Exécution :
php ./bin/impulse fixtures:run --story=Demo --seed=42
CLI
Le dépôt de référence n’auto-enregistre pas les commandes des packages dans bin/impulse. Comme pour les autres commandes Symfony Console d’ImpulsePHP, ajoutez explicitement celles du package dans le binaire de votre application :
use Impulse\Fixtures\Console\MakeFixtureCommand; use Impulse\Fixtures\Console\RunFixturesCommand; $app->addCommand(new MakeFixtureCommand()); $app->addCommand(new RunFixturesCommand());
Documentation
docs/installation.mddocs/usage.mddocs/cli.md
Tests
composer test
Licence
MIT