Issue #2159737 by damiankloip: Unit test the Drupal\serialization\Normalizer\NormalizerBase class.

8.0.x
webchick 2014-01-07 23:49:45 -08:00
parent ab0bb61f14
commit b50ffe9928
2 changed files with 96 additions and 2 deletions

View File

@ -7,7 +7,6 @@
namespace Drupal\serialization\Normalizer; namespace Drupal\serialization\Normalizer;
use Symfony\Component\Serializer\Exception\RuntimeException;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\Serializer\Normalizer\SerializerAwareNormalizer; use Symfony\Component\Serializer\Normalizer\SerializerAwareNormalizer;
@ -27,7 +26,7 @@ abstract class NormalizerBase extends SerializerAwareNormalizer implements Norma
* Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::supportsNormalization(). * Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::supportsNormalization().
*/ */
public function supportsNormalization($data, $format = NULL) { 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));
} }
} }

View File

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