Added uuid/uuidBy twig functions
This commit is contained in:
parent
a9cd00c37a
commit
8223193330
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace Engelsystem\Renderer\Twig\Extensions;
|
||||
|
||||
use Engelsystem\Helpers\Uuid as UuidHelper;
|
||||
use Twig\Extension\AbstractExtension as TwigExtension;
|
||||
use Twig\TwigFunction;
|
||||
|
||||
class Uuid extends TwigExtension
|
||||
{
|
||||
/**
|
||||
* @return TwigFunction[]
|
||||
*/
|
||||
public function getFunctions(): array
|
||||
{
|
||||
return [
|
||||
new TwigFunction('uuid', [$this, 'getUuid']),
|
||||
new TwigFunction('uuidBy', [$this, 'getUuidBy']),
|
||||
];
|
||||
}
|
||||
|
||||
public function getUuid(): string
|
||||
{
|
||||
return UuidHelper::uuid();
|
||||
}
|
||||
|
||||
public function getUuidBy(mixed $value, ?string $name = null): string
|
||||
{
|
||||
return UuidHelper::uuidBy($value, $name);
|
||||
}
|
||||
}
|
|
@ -15,6 +15,7 @@ use Engelsystem\Renderer\Twig\Extensions\Markdown;
|
|||
use Engelsystem\Renderer\Twig\Extensions\Session;
|
||||
use Engelsystem\Renderer\Twig\Extensions\Translation;
|
||||
use Engelsystem\Renderer\Twig\Extensions\Url;
|
||||
use Engelsystem\Renderer\Twig\Extensions\Uuid;
|
||||
use Symfony\Component\VarDumper\VarDumper;
|
||||
use Twig\Environment as Twig;
|
||||
use Twig\Extension\CoreExtension as TwigCore;
|
||||
|
@ -37,6 +38,7 @@ class TwigServiceProvider extends ServiceProvider
|
|||
'markdown' => Markdown::class,
|
||||
'translation' => Translation::class,
|
||||
'url' => Url::class,
|
||||
'uuid' => Uuid::class,
|
||||
];
|
||||
|
||||
public function register(): void
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Engelsystem\Test\Unit\Renderer\Twig\Extensions;
|
||||
|
||||
use Engelsystem\Renderer\Twig\Extensions\Uuid;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class UuidTest extends ExtensionTest
|
||||
{
|
||||
/**
|
||||
* @covers \Engelsystem\Renderer\Twig\Extensions\Uuid::getFunctions
|
||||
*/
|
||||
public function testGetGlobals(): void
|
||||
{
|
||||
$extension = new Uuid();
|
||||
$functions = $extension->getFunctions();
|
||||
|
||||
$this->assertExtensionExists('uuid', [$extension, 'getUuid'], $functions);
|
||||
$this->assertExtensionExists('uuidBy', [$extension, 'getUuidBy'], $functions);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \Engelsystem\Renderer\Twig\Extensions\Uuid::getUuid
|
||||
*/
|
||||
public function testGetUuid(): void
|
||||
{
|
||||
$extension = new Uuid();
|
||||
|
||||
$uuid = $extension->getUuid();
|
||||
$this->assertTrue(Str::isUuid($uuid));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @covers \Engelsystem\Renderer\Twig\Extensions\Uuid::getUuidBy
|
||||
*/
|
||||
public function testGetUuidBy(): void
|
||||
{
|
||||
$extension = new Uuid();
|
||||
|
||||
$uuid = $extension->getUuidBy('test');
|
||||
$this->assertTrue(Str::isUuid($uuid));
|
||||
$this->assertEquals('098f6bcd-4621-4373-8ade-4e832627b4f6', $uuid);
|
||||
|
||||
$uuid = $extension->getUuidBy('test', '1337');
|
||||
$this->assertTrue(Str::isUuid($uuid));
|
||||
$this->assertStringStartsWith('1337', $uuid);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue