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:
2016-01-01 22:24:38 +01:00
parent f145ae7f88
commit f288f67bb9
2 changed files with 68 additions and 18 deletions

View File

@@ -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);
$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);
$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)
)
);
}