Issue #2159737 by damiankloip: Unit test the Drupal\serialization\Normalizer\NormalizerBase class.
parent
ab0bb61f14
commit
b50ffe9928
|
@ -7,7 +7,6 @@
|
|||
|
||||
namespace Drupal\serialization\Normalizer;
|
||||
|
||||
use Symfony\Component\Serializer\Exception\RuntimeException;
|
||||
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
|
||||
use Symfony\Component\Serializer\Normalizer\SerializerAwareNormalizer;
|
||||
|
||||
|
@ -27,7 +26,7 @@ abstract class NormalizerBase extends SerializerAwareNormalizer implements Norma
|
|||
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::supportsNormalization().
|
||||
*/
|
||||
public function supportsNormalization($data, $format = NULL) {
|
||||
return is_object($data) && ($data instanceof $this->supportedInterfaceOrClass);
|
||||
return is_object($data) && (isset($this->supportedInterfaceOrClass) && ($data instanceof $this->supportedInterfaceOrClass));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Contains \Drupal\serialization\Tests\Normalizer\NormalizerBaseTest.
|
||||
*/
|
||||
|
||||
namespace Drupal\serialization\Tests\Normalizer;
|
||||
|
||||
use Drupal\Tests\UnitTestCase;
|
||||
use Drupal\serialization\Normalizer\NormalizerBase;
|
||||
|
||||
/**
|
||||
* Tests the NormalizerBase class.
|
||||
*
|
||||
* @see \Drupal\serialization\Normalizer\NormalizerBase
|
||||
*
|
||||
* @group Serialization
|
||||
*/
|
||||
class NormalizerBaseTest extends UnitTestCase {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => 'NormalizerBase',
|
||||
'description' => 'Tests the abstract NormalizerBase class.',
|
||||
'group' => 'Serialization',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the supportsNormalization method.
|
||||
*
|
||||
* @dataProvider providerTestSupportsNormalization
|
||||
*
|
||||
* @param bool $expected_return
|
||||
* The expected boolean return value from supportNormalization.
|
||||
* @param mixed $data
|
||||
* The data passed to supportsNormalization.
|
||||
* @param string $supported_interface_or_class
|
||||
* (optional) the supported interface or class to set on the normalizer.
|
||||
*/
|
||||
public function testSupportsNormalization($expected_return, $data, $supported_interface_or_class = NULL) {
|
||||
$normalizer_base = $this->getMockForAbstractClass('Drupal\serialization\Tests\Normalizer\TestNormalizerBase');
|
||||
|
||||
if (isset($supported_interface_or_class)) {
|
||||
$normalizer_base->setSupportedInterfaceOrClass($supported_interface_or_class);
|
||||
}
|
||||
|
||||
$this->assertSame($expected_return, $normalizer_base->supportsNormalization($data));
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider for testSupportsNormalization.
|
||||
*
|
||||
* @return array
|
||||
* An array of provider data for testSupportsNormalization.
|
||||
*/
|
||||
public function providerTestSupportsNormalization() {
|
||||
return array(
|
||||
// Something that is not an object should return FALSE immediately.
|
||||
array(FALSE, array()),
|
||||
// An object with no class set should return FALSE.
|
||||
array(FALSE, new \stdClass()),
|
||||
// Set a supported Class.
|
||||
array(TRUE, new \stdClass(), 'stdClass'),
|
||||
// Set a supported interface.
|
||||
array(TRUE, new \RecursiveArrayIterator(), 'RecursiveIterator'),
|
||||
// Set a different class.
|
||||
array(FALSE, new \stdClass(), 'ArrayIterator'),
|
||||
// Set a different interface.
|
||||
array(FALSE, new \stdClass(), 'RecursiveIterator'),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test class for NormalizerBase.
|
||||
*/
|
||||
abstract class TestNormalizerBase extends NormalizerBase {
|
||||
|
||||
/**
|
||||
* Sets the protected supportedInterfaceOrClass property.
|
||||
*
|
||||
* @param string $supported_interface_or_class
|
||||
* The class name to set.
|
||||
*/
|
||||
public function setSupportedInterfaceOrClass($supported_interface_or_class) {
|
||||
$this->supportedInterfaceOrClass = $supported_interface_or_class;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue