/
home
/
sjslayjy
/
public_html
/
theweavenest
/
vendor
/
symfony
/
uid
/
Tests
/
Command
/
Upload File
HOME
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Uid\Tests\Command; use PHPUnit\Framework\TestCase; use Symfony\Component\Console\Application; use Symfony\Component\Console\Tester\CommandCompletionTester; use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\Uid\Command\GenerateUlidCommand; use Symfony\Component\Uid\Ulid; final class GenerateUlidCommandTest extends TestCase { /** * @group time-sensitive */ public function testDefaults() { $time = microtime(false); $time = substr($time, 11).substr($time, 1, 4); $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(0, $commandTester->execute([])); $ulid = Ulid::fromBase32(trim($commandTester->getDisplay())); $this->assertEquals(\DateTimeImmutable::createFromFormat('U.u', $time), $ulid->getDateTime()); } public function testUnparsableTimestamp() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(1, $commandTester->execute(['--time' => 'foo'])); $this->assertStringContainsString('Invalid timestamp "foo"', $commandTester->getDisplay()); } public function testTimestampBeforeUnixEpoch() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(1, $commandTester->execute(['--time' => '@-42'])); $this->assertStringContainsString('The timestamp must be positive', $commandTester->getDisplay()); } public function testTimestamp() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(0, $commandTester->execute(['--time' => '2021-02-16 18:09:42.999'])); $ulid = Ulid::fromBase32(trim($commandTester->getDisplay())); $this->assertEquals(new \DateTimeImmutable('2021-02-16 18:09:42.999'), $ulid->getDateTime()); } public function testCount() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(0, $commandTester->execute(['--count' => '10'])); $ulids = explode("\n", trim($commandTester->getDisplay(true))); $this->assertCount(10, $ulids); foreach ($ulids as $ulid) { $this->assertTrue(Ulid::isValid($ulid)); } } public function testInvalidFormat() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(1, $commandTester->execute(['--format' => 'foo'])); $this->assertStringContainsString('Invalid format "foo"', $commandTester->getDisplay()); } public function testFormat() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(0, $commandTester->execute(['--format' => 'rfc4122'])); Ulid::fromRfc4122(trim($commandTester->getDisplay())); } public function testUlidsAreDifferentWhenGeneratingSeveralNow() { $commandTester = new CommandTester(new GenerateUlidCommand()); $this->assertSame(0, $commandTester->execute(['--time' => 'now', '--count' => '2'])); $ulids = explode("\n", trim($commandTester->getDisplay(true))); $this->assertNotSame($ulids[0], $ulids[1]); } /** * @dataProvider provideCompletionSuggestions */ public function testComplete(array $input, array $expectedSuggestions) { $application = new Application(); $application->add(new GenerateUlidCommand()); $tester = new CommandCompletionTester($application->get('ulid:generate')); $suggestions = $tester->complete($input, 2); $this->assertSame($expectedSuggestions, $suggestions); } public static function provideCompletionSuggestions(): iterable { yield 'option --format' => [ ['--format', ''], ['base32', 'base58', 'rfc4122'], ]; } }