Skip to content

Commit

Permalink
Add CreateUuidHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
msvrtan committed Jul 28, 2017
1 parent 889c072 commit d191619
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 0 deletions.
60 changes: 60 additions & 0 deletions spec/NullDev/Skelton/Uuid/Handler/CreateUuidHandlerSpec.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php

declare(strict_types=1);

namespace spec\NullDev\Skelton\Uuid\Handler;

use NullDev\Skeleton\CodeGenerator\PhpParserGenerator;
use NullDev\Skeleton\Definition\PHP\Types\ClassType;
use NullDev\Skeleton\Source\ImprovedClassSource;
use NullDev\Skeleton\SourceFactory\UuidIdentitySourceFactory;
use NullDev\Skelton\Uuid\Command\CreateUuidClass;
use NullDev\Skelton\Uuid\Handler\CreateUuidHandler;
use PhpSpec\ObjectBehavior;
use Symfony\Component\Filesystem\Filesystem;

class CreateUuidHandlerSpec extends ObjectBehavior
{
public function let(
UuidIdentitySourceFactory $sourceFactory,
PhpParserGenerator $codeGenerator,
Filesystem $filesystem
) {
$this->beConstructedWith($sourceFactory, $codeGenerator, $filesystem);
}

public function it_is_initializable()
{
$this->shouldHaveType(CreateUuidHandler::class);
}

public function it_will_handle_creating_uuid_class(
CreateUuidClass $command,
ClassType $classType,
UuidIdentitySourceFactory $sourceFactory,
PhpParserGenerator $codeGenerator,
Filesystem $filesystem,
ImprovedClassSource $classSource
) {
$command->getClassType()
->shouldBeCalled()
->willReturn($classType);

$command->getFileName()
->shouldBeCalled()
->willReturn('/path/filename.php');

$sourceFactory->create($classType)
->shouldBeCalled()
->willReturn($classSource);

$codeGenerator->getOutput($classSource)
->shouldBeCalled()
->willReturn('output');

$filesystem->dumpFile('/path/filename.php', 'output')
->shouldBeCalled();

$this->handle($command);
}
}
43 changes: 43 additions & 0 deletions src/NullDev/Skelton/Uuid/Handler/CreateUuidHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

declare(strict_types=1);

namespace NullDev\Skelton\Uuid\Handler;

use NullDev\Skeleton\CodeGenerator\PhpParserGenerator;
use NullDev\Skeleton\SourceFactory\UuidIdentitySourceFactory;
use NullDev\Skelton\Uuid\Command\CreateUuidClass;
use Symfony\Component\Filesystem\Filesystem;

/**
* @see CreateUuidHandlerSpec
* @see CreateUuidHandlerTest
*/
class CreateUuidHandler
{
/** @var UuidIdentitySourceFactory */
private $sourceFactory;
/** @var PhpParserGenerator */
private $codeGenerator;
/** @var Filesystem */
private $filesystem;

public function __construct(
UuidIdentitySourceFactory $sourceFactory,
PhpParserGenerator $codeGenerator,
Filesystem $filesystem
) {
$this->sourceFactory = $sourceFactory;
$this->codeGenerator = $codeGenerator;
$this->filesystem = $filesystem;
}

public function handle(CreateUuidClass $command)
{
$classSource = $this->sourceFactory->create($command->getClassType());

$output = $this->codeGenerator->getOutput($classSource);

$this->filesystem->dumpFile($command->getFileName(), $output);
}
}

0 comments on commit d191619

Please sign in to comment.