Skip to content

Commit

Permalink
Reorder setParameters checks to fix mobile and fixed_line rules being…
Browse files Browse the repository at this point in the history
… interpreted as countries (#242)

* Reorder setParameters checks

* Add test for broken mobile and fixed_line rules

---------

Co-authored-by: Simon Jarrett <[email protected]>
  • Loading branch information
mwnciau and Simon Jarrett authored Jan 15, 2024
1 parent e2a3512 commit 57ec1db
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/Rules/Phone.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,14 +158,14 @@ public function setParameters($parameters)
$this->lenient();
} elseif (strcasecmp('international', $parameter) === 0) {
$this->international();
} elseif ($this->isDataKey($parameter)) {
$this->countryField = $parameter;
} elseif (PhoneNumberCountry::isValid($parameter)) {
$this->country($parameter);
} elseif (ctype_digit($parameter) && PhoneNumberType::isValid((int) $parameter)) {
$this->type((int) $parameter);
} elseif (PhoneNumberType::isValidName($parameter)) {
$this->type($parameter);
} elseif ($this->isDataKey($parameter)) {
$this->countryField = $parameter;
} elseif (PhoneNumberCountry::isValid($parameter)) {
$this->country($parameter);
}
}

Expand Down
16 changes: 16 additions & 0 deletions tests/RuleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,22 @@ public function it_converts_string_validation_parameters()
$this->assertEquals(['mobile', 'fixed_line'], $this->getProtectedProperty($rule, 'blockedTypes'));
}

/** @test */
public function it_allows_data_field_names_to_be_parameters()
{
$base = (new Phone)->setValidator(validator([
'mobile' => null,
'fixed_line' => null,
'lenient' => null,
'international' => null,
]));

$rule = $base->setParameters(['mobile', 'fixed_line', 'lenient', 'international']);
$this->assertEquals(['mobile', 'fixed_line'], $this->getProtectedProperty($rule, 'allowedTypes'));
$this->assertTrue($this->getProtectedProperty($rule, 'lenient'));
$this->assertTrue($this->getProtectedProperty($rule, 'international'));
}

/** @test */
public function it_treats_string_validation_parameters_case_insensitive()
{
Expand Down

0 comments on commit 57ec1db

Please sign in to comment.