Skip to content

Commit

Permalink
Adding trait for GeneratorAwareExtension (#165)
Browse files Browse the repository at this point in the history
* Adding trait for GeneratorAwareExtension

* Fixes

* Fix: Remove unnecessary initialization

* Fix: Add test

Co-authored-by: Andreas Möller <am@localheinz.com>
  • Loading branch information
Nyholm and localheinz committed Dec 22, 2020
1 parent 1c73fa4 commit 1dad76c
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/Faker/Extension/GeneratorAwareExtensionTrait.php
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace Faker\Extension;

use Faker\Generator;

/**
* A helper trait to be used with GeneratorAwareExtension.
*/
trait GeneratorAwareExtensionTrait
{
/**
* @var Generator|null
*/
private $generator;

/**
* @return static
*/
public function withGenerator(Generator $generator): self
{
$instance = clone $this;

$instance->generator = $generator;

return $instance;
}
}
33 changes: 33 additions & 0 deletions test/Faker/Extension/GeneratorAwareExtensionTest.php
@@ -0,0 +1,33 @@
<?php

namespace Faker\Test\Extension;

use Faker\Extension\Extension;
use Faker\Extension\GeneratorAwareExtensionTrait;
use Faker\Generator;
use PHPUnit\Framework\TestCase;

/**
* @covers \Faker\Extension\GeneratorAwareExtensionTrait
*/
final class GeneratorAwareExtensionTest extends TestCase
{
public function testWithGeneratorClonesExtensionAndSetsGenerator(): void
{
$generator = new Generator();

$extension = new class() implements Extension {
use GeneratorAwareExtensionTrait;

public function generator(): Generator
{
return $this->generator;
}
};

$mutated = $extension->withGenerator($generator);

self::assertNotSame($mutated, $extension);
self::assertSame($generator, $mutated->generator());
}
}

0 comments on commit 1dad76c

Please sign in to comment.