improve function isEmptyValue + tests

This commit is contained in:
Julien Fastré 2015-12-18 00:22:09 +01:00
parent 24f9db6ae7
commit 573697d8c7
2 changed files with 66 additions and 17 deletions

View File

@ -269,11 +269,6 @@ class CustomFieldChoice extends AbstractCustomField
return true; return true;
} }
// if only one choice...
if (is_string($value)) {
return empty($value);
}
// if multiple choice OR multiple/single choice with other // if multiple choice OR multiple/single choice with other
if (is_array($value)) if (is_array($value))
{ {
@ -282,17 +277,14 @@ class CustomFieldChoice extends AbstractCustomField
if ($value['_choices'] === NULL) { if ($value['_choices'] === NULL) {
return true; return true;
} }
if (is_string($value['_choices'])) { return empty($value['_choices']);
return empty($value);
}
if (is_array($value['_choices'])){
return count($value['_choices']) > 0;
}
} else { // we do not have 'allow other' } else { // we do not have 'allow other'
return count($value) > .0; return empty($value);
} }
} else {
return empty($value);
} }
throw \LogicException("This case is not expected."); throw \LogicException("This case is not expected.");
} }

View File

@ -344,22 +344,79 @@ class CustomFieldsChoiceTest extends KernelTestCase
//////////////////////////////////////// ////////////////////////////////////////
/** /**
* test the not empty with the not-empty data provider
* *
* @param mixed $data * @param mixed $data
* @dataProvider serializedRepresentationDataProvider * @dataProvider serializedRepresentationDataProvider
*/ */
public function testIsEmptyValueNotEmpty($data) public function testIsEmptyValueNotEmpty($data)
{ {
$this->markTestSkipped("We have to improve the isEmptyFunction"); $customField = $this->generateCustomField(array(
CustomFieldChoice::ALLOW_OTHER => false,
CustomFieldChoice::MULTIPLE => true
));
$isEmpty = $this->cfChoice->isEmptyValue($data, $customField);
$this->assertFalse($isEmpty);
}
/**
*
* @dataProvider emptyDataProvider
* @param mixed $data
*/
public function testIsEmptyValueEmpty($data)
{
$customField = $this->generateCustomField(array( $customField = $this->generateCustomField(array(
CustomFieldChoice::ALLOW_OTHER => false, CustomFieldChoice::ALLOW_OTHER => false,
CustomFieldChoice::MULTIPLE => true CustomFieldChoice::MULTIPLE => true
)); ));
$deserialized = $this->cfChoice->deserialize($data, $customField); $isEmpty = $this->cfChoice->isEmptyValue($data, $customField);
$isEmpty = $this->cfChoice->isEmptyValue($deserialized, $customField);
$this->assertFalse($isEmpty); $this->assertTrue($isEmpty);
}
/**
* provide empty data in different possible reprsentation
*
* @return array
*/
public function emptyDataProvider()
{
return array(
// 0
array(
// signle
''
),
// 1
array(
// single
null
),
// 2
array(
// signle with allow other
array('_other' => 'something', '_choices' => '')
),
// 3
array(
// multiple
array()
),
// 4
array(
// multiple with allow other
array('_other' => 'something', '_choices' => array())
),
// 5
array(
// multiple with allow other
array('_other' => '', '_choices' => array())
),
);
} }
} }