|
@@ -29,6 +29,7 @@ use JMS\Serializer\Tests\Fixtures\InlineChildEmpty;
|
|
use JMS\Serializer\Tests\Fixtures\NamedDateTimeArraysObject;
|
|
use JMS\Serializer\Tests\Fixtures\NamedDateTimeArraysObject;
|
|
use JMS\Serializer\Tests\Fixtures\Tree;
|
|
use JMS\Serializer\Tests\Fixtures\Tree;
|
|
use PhpCollection\Sequence;
|
|
use PhpCollection\Sequence;
|
|
|
|
+use Symfony\Component\Form\FormFactoryBuilder;
|
|
use Symfony\Component\Translation\MessageSelector;
|
|
use Symfony\Component\Translation\MessageSelector;
|
|
use Symfony\Component\Translation\IdentityTranslator;
|
|
use Symfony\Component\Translation\IdentityTranslator;
|
|
use JMS\Serializer\EventDispatcher\Subscriber\DoctrineProxySubscriber;
|
|
use JMS\Serializer\EventDispatcher\Subscriber\DoctrineProxySubscriber;
|
|
@@ -55,6 +56,7 @@ use JMS\Serializer\Tests\Fixtures\AccessorOrderChild;
|
|
use JMS\Serializer\Tests\Fixtures\AccessorOrderParent;
|
|
use JMS\Serializer\Tests\Fixtures\AccessorOrderParent;
|
|
use JMS\Serializer\Tests\Fixtures\AccessorOrderMethod;
|
|
use JMS\Serializer\Tests\Fixtures\AccessorOrderMethod;
|
|
use JMS\Serializer\Tests\Fixtures\Author;
|
|
use JMS\Serializer\Tests\Fixtures\Author;
|
|
|
|
+use JMS\Serializer\Tests\Fixtures\Publisher;
|
|
use JMS\Serializer\Tests\Fixtures\AuthorList;
|
|
use JMS\Serializer\Tests\Fixtures\AuthorList;
|
|
use JMS\Serializer\Tests\Fixtures\AuthorReadOnly;
|
|
use JMS\Serializer\Tests\Fixtures\AuthorReadOnly;
|
|
use JMS\Serializer\Tests\Fixtures\BlogPost;
|
|
use JMS\Serializer\Tests\Fixtures\BlogPost;
|
|
@@ -292,7 +294,7 @@ abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase
|
|
|
|
|
|
public function testBlogPost()
|
|
public function testBlogPost()
|
|
{
|
|
{
|
|
- $post = new BlogPost('This is a nice title.', $author = new Author('Foo Bar'), new \DateTime('2011-07-30 00:00', new \DateTimeZone('UTC')));
|
|
|
|
|
|
+ $post = new BlogPost('This is a nice title.', $author = new Author('Foo Bar'), new \DateTime('2011-07-30 00:00', new \DateTimeZone('UTC')), new Publisher('Bar Foo'));
|
|
$post->addComment($comment = new Comment($author, 'foo'));
|
|
$post->addComment($comment = new Comment($author, 'foo'));
|
|
|
|
|
|
$this->assertEquals($this->getContent('blog_post'), $this->serialize($post));
|
|
$this->assertEquals($this->getContent('blog_post'), $this->serialize($post));
|
|
@@ -302,6 +304,7 @@ abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase
|
|
$this->assertEquals('2011-07-30T00:00:00+0000', $this->getField($deserialized, 'createdAt')->format(\DateTime::ISO8601));
|
|
$this->assertEquals('2011-07-30T00:00:00+0000', $this->getField($deserialized, 'createdAt')->format(\DateTime::ISO8601));
|
|
$this->assertAttributeEquals('This is a nice title.', 'title', $deserialized);
|
|
$this->assertAttributeEquals('This is a nice title.', 'title', $deserialized);
|
|
$this->assertAttributeSame(false, 'published', $deserialized);
|
|
$this->assertAttributeSame(false, 'published', $deserialized);
|
|
|
|
+ $this->assertAttributeSame('1edf9bf60a32d89afbb85b2be849e3ceed5f5b10', 'etag', $deserialized);
|
|
$this->assertAttributeEquals(new ArrayCollection(array($comment)), 'comments', $deserialized);
|
|
$this->assertAttributeEquals(new ArrayCollection(array($comment)), 'comments', $deserialized);
|
|
$this->assertAttributeEquals(new Sequence(array($comment)), 'comments2', $deserialized);
|
|
$this->assertAttributeEquals(new Sequence(array($comment)), 'comments2', $deserialized);
|
|
$this->assertAttributeEquals($author, 'author', $deserialized);
|
|
$this->assertAttributeEquals($author, 'author', $deserialized);
|
|
@@ -313,9 +316,10 @@ abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase
|
|
$objectConstructor = new InitializedBlogPostConstructor();
|
|
$objectConstructor = new InitializedBlogPostConstructor();
|
|
$this->serializer = new Serializer($this->factory, $this->handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors, $this->dispatcher);
|
|
$this->serializer = new Serializer($this->factory, $this->handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors, $this->dispatcher);
|
|
|
|
|
|
- $post = new BlogPost('This is a nice title.', $author = new Author('Foo Bar'), new \DateTime('2011-07-30 00:00', new \DateTimeZone('UTC')));
|
|
|
|
|
|
+ $post = new BlogPost('This is a nice title.', $author = new Author('Foo Bar'), new \DateTime('2011-07-30 00:00', new \DateTimeZone('UTC')), new Publisher('Bar Foo'));
|
|
|
|
|
|
$this->setField($post, 'author', null);
|
|
$this->setField($post, 'author', null);
|
|
|
|
+ $this->setField($post, 'publisher', null);
|
|
|
|
|
|
$this->assertEquals($this->getContent('blog_post_unauthored'), $this->serialize($post, SerializationContext::create()->setSerializeNull(true)));
|
|
$this->assertEquals($this->getContent('blog_post_unauthored'), $this->serialize($post, SerializationContext::create()->setSerializeNull(true)));
|
|
|
|
|
|
@@ -500,6 +504,36 @@ abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase
|
|
$this->assertEquals($this->getContent('nested_form_errors'), $this->serialize($form));
|
|
$this->assertEquals($this->getContent('nested_form_errors'), $this->serialize($form));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function testFormErrorsWithNonFormComponents()
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ if (!class_exists('Symfony\Component\Form\Extension\Core\Type\SubmitType')) {
|
|
|
|
+ $this->markTestSkipped('Not using Symfony Form >= 2.3 with submit type');
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
|
|
|
|
+
|
|
|
|
+ $factoryBuilder = new FormFactoryBuilder();
|
|
|
|
+ $factoryBuilder->addType(new \Symfony\Component\Form\Extension\Core\Type\SubmitType);
|
|
|
|
+ $factoryBuilder->addType(new \Symfony\Component\Form\Extension\Core\Type\ButtonType);
|
|
|
|
+ $factory = $factoryBuilder->getFormFactory();
|
|
|
|
+
|
|
|
|
+ $formConfigBuilder = new \Symfony\Component\Form\FormConfigBuilder('foo', null, $dispatcher);
|
|
|
|
+ $formConfigBuilder->setFormFactory($factory);
|
|
|
|
+ $formConfigBuilder->setCompound(true);
|
|
|
|
+ $formConfigBuilder->setDataMapper($this->getMock('Symfony\Component\Form\DataMapperInterface'));
|
|
|
|
+ $fooConfig = $formConfigBuilder->getFormConfig();
|
|
|
|
+
|
|
|
|
+ $form = new Form($fooConfig);
|
|
|
|
+ $form->add('save', 'submit');
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ $this->serialize($form);
|
|
|
|
+ } catch (\Exception $e) {
|
|
|
|
+ $this->assertTrue(false, 'Serialization should not throw an exception');
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
public function testConstraintViolation()
|
|
public function testConstraintViolation()
|
|
{
|
|
{
|
|
$violation = new ConstraintViolation('Message of violation', array(), null, 'foo', null);
|
|
$violation = new ConstraintViolation('Message of violation', array(), null, 'foo', null);
|
|
@@ -848,7 +882,7 @@ abstract class BaseSerializationTest extends \PHPUnit_Framework_TestCase
|
|
$this->serializer = new Serializer($this->factory, $this->handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors, $this->dispatcher);
|
|
$this->serializer = new Serializer($this->factory, $this->handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors, $this->dispatcher);
|
|
}
|
|
}
|
|
|
|
|
|
- private function getField($obj, $name)
|
|
|
|
|
|
+ protected function getField($obj, $name)
|
|
{
|
|
{
|
|
$ref = new \ReflectionProperty($obj, $name);
|
|
$ref = new \ReflectionProperty($obj, $name);
|
|
$ref->setAccessible(true);
|
|
$ref->setAccessible(true);
|