Skip to content

Commit

Permalink
Enhancement: Allow creating ContainerBuilder with definitions for def…
Browse files Browse the repository at this point in the history
…ault extensions
  • Loading branch information
localheinz committed Sep 5, 2023
1 parent e61f0b7 commit 65ac7e3
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 5 deletions.
13 changes: 12 additions & 1 deletion src/Faker/Container/ContainerBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}
2 changes: 1 addition & 1 deletion src/Faker/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

/**
Expand Down
16 changes: 13 additions & 3 deletions test/Faker/Extension/ContainerBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Faker\Container\ContainerBuilder;
use Faker\Container\ContainerInterface;
use Faker\Core\File;
use Faker\Extension;
use PHPUnit\Framework\TestCase;

/**
Expand Down Expand Up @@ -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));
}
}

0 comments on commit 65ac7e3

Please sign in to comment.