From 65ac7e3b4fa114ba7033e62925566dd0efbf0d9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 10:31:19 +0200 Subject: [PATCH] Enhancement: Allow creating ContainerBuilder with definitions for default extensions --- src/Faker/Container/ContainerBuilder.php | 13 ++++++++++++- src/Faker/Generator.php | 2 +- test/Faker/Extension/ContainerBuilderTest.php | 16 +++++++++++++--- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index bc3b17a06a..8e97ac1211 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -59,8 +59,19 @@ public static function defaultExtensions(): array ]; } + public static function default(): self + { + $instance = new self(); + + foreach (self::defaultExtensions() as $id => $definition) { + $instance->add($id, $definition); + } + + return $instance; + } + public static function getDefault(): ContainerInterface { - return new Container(self::defaultExtensions()); + return self::default()->build(); } } diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index 225e8e5313..675c1be464 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -567,7 +567,7 @@ class Generator public function __construct(ContainerInterface $container = null) { - $this->container = $container ?: Container\ContainerBuilder::getDefault(); + $this->container = $container ?: Container\ContainerBuilder::default()->build(); } /** diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index a86d81cde7..90e3acf783 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -7,6 +7,7 @@ use Faker\Container\ContainerBuilder; use Faker\Container\ContainerInterface; use Faker\Core\File; +use Faker\Extension; use PHPUnit\Framework\TestCase; /** @@ -114,10 +115,19 @@ public function testBuildWithCallable(): void self::assertInstanceOf(ContainerInterface::class, $container); } - public function testBuildDefault(): void + public function testDefaultReturnsContainerBuilderWithDefaultExtensions(): void { - $container = ContainerBuilder::getDefault(); + $builder = ContainerBuilder::default(); - self::assertInstanceOf(ContainerInterface::class, $container); + $container = $builder->build(); + + self::assertTrue($container->has(Extension\BarcodeExtension::class)); + self::assertTrue($container->has(Extension\BloodExtension::class)); + self::assertTrue($container->has(Extension\ColorExtension::class)); + self::assertTrue($container->has(Extension\DateTimeExtension::class)); + self::assertTrue($container->has(Extension\FileExtension::class)); + self::assertTrue($container->has(Extension\NumberExtension::class)); + self::assertTrue($container->has(Extension\UuidExtension::class)); + self::assertTrue($container->has(Extension\VersionExtension::class)); } }