mirror of
https://github.com/shlinkio/shlink.git
synced 2026-03-10 01:03:13 +08:00
Add tests for ShortUrlRedirectionRuleService::setRulesForShortUrl
This commit is contained in:
@@ -8,6 +8,8 @@ use Laminas\InputFilter\Exception\InvalidArgumentException;
|
||||
use Shlinkio\Shlink\Core\Exception\ValidationException;
|
||||
use Shlinkio\Shlink\Core\RedirectRule\Model\Validation\RedirectRulesInputFilter;
|
||||
|
||||
use function array_values;
|
||||
|
||||
readonly class RedirectRulesData
|
||||
{
|
||||
private function __construct(public array $rules)
|
||||
@@ -22,7 +24,7 @@ readonly class RedirectRulesData
|
||||
throw ValidationException::fromInputFilter($inputFilter);
|
||||
}
|
||||
|
||||
return new self($inputFilter->getValue(RedirectRulesInputFilter::REDIRECT_RULES));
|
||||
return new self(array_values($inputFilter->getValue(RedirectRulesInputFilter::REDIRECT_RULES)));
|
||||
} catch (InvalidArgumentException) {
|
||||
throw ValidationException::fromArray(
|
||||
[RedirectRulesInputFilter::REDIRECT_RULES => RedirectRulesInputFilter::REDIRECT_RULES],
|
||||
|
||||
@@ -20,7 +20,6 @@ class RedirectRulesInputFilter extends InputFilter
|
||||
{
|
||||
public const REDIRECT_RULES = 'redirectRules';
|
||||
|
||||
public const RULE_PRIORITY = 'priority';
|
||||
public const RULE_LONG_URL = 'longUrl';
|
||||
public const RULE_CONDITIONS = 'conditions';
|
||||
|
||||
@@ -48,8 +47,6 @@ class RedirectRulesInputFilter extends InputFilter
|
||||
{
|
||||
$redirectRuleInputFilter = new InputFilter();
|
||||
|
||||
$redirectRuleInputFilter->add(InputFactory::numeric(self::RULE_PRIORITY, required: true));
|
||||
|
||||
$longUrl = InputFactory::basic(self::RULE_LONG_URL, required: true);
|
||||
$longUrl->setValidatorChain(ShortUrlInputFilter::longUrlValidators());
|
||||
$redirectRuleInputFilter->add($longUrl);
|
||||
|
||||
@@ -52,10 +52,10 @@ readonly class ShortUrlRedirectRuleService implements ShortUrlRedirectRuleServic
|
||||
|
||||
// Then insert new rules
|
||||
$rules = [];
|
||||
foreach ($data->rules as $rule) {
|
||||
foreach ($data->rules as $index => $rule) {
|
||||
$rule = new ShortUrlRedirectRule(
|
||||
shortUrl: $shortUrl,
|
||||
priority: $rule[RedirectRulesInputFilter::RULE_PRIORITY],
|
||||
priority: $index + 1,
|
||||
longUrl: $rule[RedirectRulesInputFilter::RULE_LONG_URL],
|
||||
conditions: new ArrayCollection(array_map(
|
||||
RedirectCondition::fromRawData(...),
|
||||
|
||||
Reference in New Issue
Block a user