mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-18 08:14:24 +00:00
fix error with empty values with multiple and non-existant data
if a value was array(null) or array(_other => null, _choices => null), the isEmptyValue function failed.
This commit is contained in:
parent
f145ae7f88
commit
f288f67bb9
@ -247,7 +247,7 @@ class CustomFieldChoice extends AbstractCustomField
|
||||
return $value;
|
||||
} else {
|
||||
// we have a field with "allow other"
|
||||
if (isset($value['_choices'])) {
|
||||
if (array_key_exists('_choices', $value)) {
|
||||
return $value['_choices'];
|
||||
} else {
|
||||
// we have a field with "multiple"
|
||||
@ -273,14 +273,18 @@ class CustomFieldChoice extends AbstractCustomField
|
||||
if (is_array($value))
|
||||
{
|
||||
// if allow other
|
||||
if (isset($value['_choices'])) {
|
||||
if (array_key_exists('_choices', $value)) {
|
||||
if ($value['_choices'] === NULL) {
|
||||
return true;
|
||||
}
|
||||
return empty($value['_choices']);
|
||||
} else { // we do not have 'allow other'
|
||||
if (count($value) === 1){
|
||||
return empty($value[0]);
|
||||
} else {
|
||||
return empty($value);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return empty($value);
|
||||
}
|
||||
|
@ -111,12 +111,22 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
));
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(null, $customField);
|
||||
|
||||
$this->assertSame(null, $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize('', $customField);
|
||||
|
||||
$this->assertSame('', $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array(null), $customField);
|
||||
$this->assertSame(null, $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array('_other' => null, '_choices' => null), $customField);
|
||||
$this->assertSame(null, $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array('_other' => null, '_choices' => ''), $customField);
|
||||
$this->assertSame('', $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array(null), $customField);
|
||||
$this->assertSame(null, $deserialized);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -158,39 +168,42 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
// from a single to a single
|
||||
$data = array('_other' => 'something', '_choices' => '_other');
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('_other' => 'something', '_choices' => '_other'), $deserialized);
|
||||
|
||||
|
||||
// from a multiple to a single
|
||||
$data = array('_other' => 'something', '_choices' => array('some', '_other'));
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('_other' => 'something', '_choices' => '_other'), $deserialized);
|
||||
|
||||
//test with null data
|
||||
//from a single to a single :
|
||||
$data = array('_other' => 'something', '_choices' => null);
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('_other' => 'something', '_choices' => null), $deserialized);
|
||||
|
||||
$data = array('_other' => 'something', '_choices' => '');
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('_other' => 'something', '_choices' => ''), $deserialized);
|
||||
|
||||
// from a multiple to a signle
|
||||
$data = array('_other' => 'something', '_choices' => array());
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('_other' => 'something', '_choices' => ''), $deserialized);
|
||||
|
||||
$data = array('_other' => 'something', '_choices' => array(''));
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('_other' => 'something', '_choices' => ''), $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array('_other' => null, '_choices' => null), $customField);
|
||||
$this->assertSame(array('_other' => '', '_choices' => null), $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array('_other' => null, '_choices' => ''), $customField);
|
||||
$this->assertSame(array('_other' => '', '_choices' => ''), $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array(null), $customField);
|
||||
$this->assertSame(array('_other' => '', '_choices' => null), $deserialized);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -261,6 +274,15 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
|
||||
$this->assertSame(array('_other' => '', '_choices' => array()),
|
||||
$deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array('_other' => null, '_choices' => null), $customField);
|
||||
$this->assertSame(array('_other' => '', '_choices' => array(null)), $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array('_other' => null, '_choices' => ''), $customField);
|
||||
$this->assertSame(array('_other' => '', '_choices' => array('')), $deserialized);
|
||||
|
||||
$deserialized = $this->cfChoice->deserialize(array(null), $customField);
|
||||
$this->assertSame(array('_other' => '', '_choices' => array(null)), $deserialized);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -303,14 +325,26 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
// from single to multiple
|
||||
$data = 'my-value';
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('my-value'), $deserialized);
|
||||
|
||||
// from multiple to multiple
|
||||
$data = array('my-value');
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
|
||||
$this->assertSame(array('my-value'), $deserialized);
|
||||
|
||||
// from multiple
|
||||
$data = array(null);
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
$this->assertSame(array(null), $deserialized);
|
||||
|
||||
$data = array('_other' => null, '_choices' => array(null));
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
$this->assertSame(array(null), $deserialized);
|
||||
|
||||
//from single
|
||||
$data = array('_other' => null, '_choices' => null);
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
$this->assertSame(array(null), $deserialized);
|
||||
}
|
||||
|
||||
public function serializedRepresentationDataProvider()
|
||||
@ -356,7 +390,8 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
CustomFieldChoice::MULTIPLE => true
|
||||
));
|
||||
|
||||
$isEmpty = $this->cfChoice->isEmptyValue($data, $customField);
|
||||
$deserialized = $this->cfChoice->deserialize($data, $customField);
|
||||
$isEmpty = $this->cfChoice->isEmptyValue($deserialized, $customField);
|
||||
|
||||
$this->assertFalse($isEmpty);
|
||||
}
|
||||
@ -364,7 +399,7 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
/**
|
||||
*
|
||||
* @dataProvider emptyDataProvider
|
||||
* @param mixed $data
|
||||
* @param mixed $data deserialized data
|
||||
*/
|
||||
public function testIsEmptyValueEmpty($data)
|
||||
{
|
||||
@ -379,7 +414,8 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* provide empty data in different possible reprsentation
|
||||
* provide empty data in different possible representations.
|
||||
* Those data are supposed to be deserialized.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
@ -416,6 +452,16 @@ class CustomFieldsChoiceTest extends KernelTestCase
|
||||
// multiple with allow other
|
||||
array('_other' => '', '_choices' => array())
|
||||
),
|
||||
// 6
|
||||
array(
|
||||
// empty
|
||||
array('_other' => null, '_choices' => null)
|
||||
),
|
||||
// 7
|
||||
array(
|
||||
// empty
|
||||
array(null)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user