Ensured bars are replaced by dashes in custom slugs

This commit is contained in:
Alejandro Celaya 2022-01-10 10:43:20 +01:00
parent f2ff6e6a70
commit 41d3826c1a
2 changed files with 2 additions and 5 deletions

View File

@ -77,7 +77,7 @@ class ShortUrlInputFilter extends InputFilter
// empty, is by using the deprecated setContinueIfEmpty // empty, is by using the deprecated setContinueIfEmpty
$customSlug = $this->createInput(self::CUSTOM_SLUG, false)->setContinueIfEmpty(true); $customSlug = $this->createInput(self::CUSTOM_SLUG, false)->setContinueIfEmpty(true);
$customSlug->getFilterChain()->attach(new Filter\Callback( $customSlug->getFilterChain()->attach(new Filter\Callback(
static fn (mixed $value) => is_string($value) ? str_replace([' ', '/'], ['-', ''], $value) : $value, static fn (mixed $value) => is_string($value) ? str_replace([' ', '/'], '-', $value) : $value,
)); ));
$customSlug->getValidatorChain()->attach(new Validator\NotEmpty([ $customSlug->getValidatorChain()->attach(new Validator\NotEmpty([
Validator\NotEmpty::STRING, Validator\NotEmpty::STRING,

View File

@ -57,10 +57,6 @@ class ShortUrlMetaTest extends TestCase
ShortUrlInputFilter::LONG_URL => 'foo', ShortUrlInputFilter::LONG_URL => 'foo',
ShortUrlInputFilter::SHORT_CODE_LENGTH => 3, ShortUrlInputFilter::SHORT_CODE_LENGTH => 3,
]]; ]];
yield [[
ShortUrlInputFilter::LONG_URL => 'foo',
ShortUrlInputFilter::CUSTOM_SLUG => '/',
]];
yield [[ yield [[
ShortUrlInputFilter::LONG_URL => 'foo', ShortUrlInputFilter::LONG_URL => 'foo',
ShortUrlInputFilter::CUSTOM_SLUG => '', ShortUrlInputFilter::CUSTOM_SLUG => '',
@ -107,6 +103,7 @@ class ShortUrlMetaTest extends TestCase
yield ['foo bar', 'foo-bar']; yield ['foo bar', 'foo-bar'];
yield ['foo bar baz', 'foo-bar-baz']; yield ['foo bar baz', 'foo-bar-baz'];
yield ['foo bar-baz', 'foo-bar-baz']; yield ['foo bar-baz', 'foo-bar-baz'];
yield ['foo/bar/baz', 'foo-bar-baz'];
yield ['wp-admin.php', 'wp-admin.php']; yield ['wp-admin.php', 'wp-admin.php'];
yield ['UPPER_lower', 'UPPER_lower']; yield ['UPPER_lower', 'UPPER_lower'];
yield ['more~url_special.chars', 'more~url_special.chars']; yield ['more~url_special.chars', 'more~url_special.chars'];