Ensured URL titles are trimmed to avoid error when persisted in database

This commit is contained in:
Alejandro Celaya
2022-01-07 13:13:45 +01:00
parent 30207ce0c2
commit 562763199a
3 changed files with 43 additions and 2 deletions

View File

@@ -11,6 +11,10 @@ use Shlinkio\Shlink\Core\Model\ShortUrlMeta;
use Shlinkio\Shlink\Core\Validation\ShortUrlInputFilter;
use stdClass;
use function str_pad;
use const STR_PAD_BOTH;
class ShortUrlMetaTest extends TestCase
{
/**
@@ -99,4 +103,28 @@ class ShortUrlMetaTest extends TestCase
yield ['谷歌', '谷歌'];
yield ['гугл', 'гугл'];
}
/**
* @test
* @dataProvider provideTitles
*/
public function titleIsCroppedIfTooLong(?string $title, ?string $expectedTitle): void
{
$meta = ShortUrlMeta::fromRawData([
'title' => $title,
'longUrl' => '',
]);
self::assertEquals($expectedTitle, $meta->getTitle());
}
public function provideTitles(): iterable
{
yield [null, null];
yield ['foo', 'foo'];
yield [str_pad('bar', 600, ' ', STR_PAD_BOTH), 'bar'];
yield [str_pad('', 512, 'a'), str_pad('', 512, 'a')];
yield [str_pad('', 600, 'b'), str_pad('', 512, 'b')];
yield [str_pad('', 800, 'b'), str_pad('', 512, 'b')];
}
}