<?php namespace ShlinkioTest\Shlink\CLI\Command\Config; use PHPUnit\Framework\TestCase; use Shlinkio\Shlink\CLI\Command\Config\GenerateCharsetCommand; use Shlinkio\Shlink\Core\Service\UrlShortener; use Symfony\Component\Console\Application; use Symfony\Component\Console\Tester\CommandTester; use Zend\I18n\Translator\Translator; class GenerateCharsetCommandTest extends TestCase { /** * @var CommandTester */ protected $commandTester; public function setUp() { $command = new GenerateCharsetCommand(Translator::factory([])); $app = new Application(); $app->add($command); $this->commandTester = new CommandTester($command); } /** * @test */ public function charactersAreGeneratedFromDefault() { $prefix = 'Character set: '; $prefixLength = strlen($prefix); $this->commandTester->execute([ 'command' => 'config:generate-charset', ]); $output = $this->commandTester->getDisplay(); // Both default character set and the new one should have the same length $this->assertEquals($prefixLength + strlen(UrlShortener::DEFAULT_CHARS) + 1, strlen($output)); // Both default character set and the new one should have the same characters $charset = substr($output, $prefixLength, strlen(UrlShortener::DEFAULT_CHARS)); $orderedDefault = $this->orderStringLetters(UrlShortener::DEFAULT_CHARS); $orderedCharset = $this->orderStringLetters($charset); $this->assertEquals($orderedDefault, $orderedCharset); } protected function orderStringLetters($string) { $letters = str_split($string); sort($letters); return implode('', $letters); } }