Dont set null values when validating storage definition
This commit is contained in:
parent
efcf790eff
commit
d0f5687687
3 changed files with 12 additions and 6 deletions
|
@ -154,6 +154,10 @@ class DefinitionParameter implements \JsonSerializable {
|
|||
return $prefix . $this->getText();
|
||||
}
|
||||
|
||||
public function isOptional() {
|
||||
return $this->isFlagSet(self::FLAG_OPTIONAL) || $this->isFlagSet(self::FLAG_USER_PROVIDED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate a parameter value against this
|
||||
* Convert type as necessary
|
||||
|
@ -162,8 +166,6 @@ class DefinitionParameter implements \JsonSerializable {
|
|||
* @return bool success
|
||||
*/
|
||||
public function validateValue(&$value) {
|
||||
$optional = $this->isFlagSet(self::FLAG_OPTIONAL) || $this->isFlagSet(self::FLAG_USER_PROVIDED);
|
||||
|
||||
switch ($this->getType()) {
|
||||
case self::VALUE_BOOLEAN:
|
||||
if (!is_bool($value)) {
|
||||
|
@ -180,7 +182,7 @@ class DefinitionParameter implements \JsonSerializable {
|
|||
}
|
||||
break;
|
||||
default:
|
||||
if (!$value && !$optional) {
|
||||
if (!$value && !$this->isOptional()) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -136,10 +136,12 @@ trait FrontendDefinitionTrait {
|
|||
public function validateStorageDefinition(StorageConfig $storage) {
|
||||
foreach ($this->getParameters() as $name => $parameter) {
|
||||
$value = $storage->getBackendOption($name);
|
||||
if (!$parameter->validateValue($value)) {
|
||||
return false;
|
||||
if (!is_null($value) || !$parameter->isOptional()) {
|
||||
if (!$parameter->validateValue($value)) {
|
||||
return false;
|
||||
}
|
||||
$storage->setBackendOption($name, $value);
|
||||
}
|
||||
$storage->setBackendOption($name, $value);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -61,6 +61,8 @@ class FrontendDefinitionTraitTest extends \Test\TestCase {
|
|||
->getMock();
|
||||
$param->method('getName')
|
||||
->willReturn($name);
|
||||
$param->method('isOptional')
|
||||
->willReturn(false);
|
||||
$param->expects($this->once())
|
||||
->method('validateValue')
|
||||
->willReturn($valid);
|
||||
|
|
Loading…
Reference in a new issue