BaseDriverTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /*
  3. * Copyright 2011 Johannes M. Schmitt <schmittjoh@gmail.com>
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. namespace JMS\SerializerBundle\Tests\Metadata\Driver;
  18. use JMS\SerializerBundle\Metadata\PropertyMetadata;
  19. use JMS\SerializerBundle\Metadata\ClassMetadata;
  20. abstract class BaseDriverTest extends \PHPUnit_Framework_TestCase
  21. {
  22. public function testLoadBlogPostMetadata()
  23. {
  24. $m = $this->getDriver()->loadMetadataForClass(new \ReflectionClass('JMS\SerializerBundle\Tests\Fixtures\BlogPost'));
  25. $this->assertNotNull($m);
  26. $this->assertEquals('blog-post', $m->xmlRootName);
  27. $p = new PropertyMetadata($m->name, 'title');
  28. $p->type = 'string';
  29. $p->groups = array("comments","post");
  30. $this->assertEquals($p, $m->propertyMetadata['title']);
  31. $p = new PropertyMetadata($m->name, 'createdAt');
  32. $p->type = 'DateTime';
  33. $p->xmlAttribute = true;
  34. $this->assertEquals($p, $m->propertyMetadata['createdAt']);
  35. $p = new PropertyMetadata($m->name, 'published');
  36. $p->type = 'boolean';
  37. $p->serializedName = 'is_published';
  38. $p->xmlAttribute = true;
  39. $p->groups = array("post");
  40. $this->assertEquals($p, $m->propertyMetadata['published']);
  41. $p = new PropertyMetadata($m->name, 'comments');
  42. $p->type = 'ArrayCollection<JMS\SerializerBundle\Tests\Fixtures\Comment>';
  43. $p->xmlCollection = true;
  44. $p->xmlCollectionInline = true;
  45. $p->xmlEntryName = 'comment';
  46. $p->groups = array("comments");
  47. $this->assertEquals($p, $m->propertyMetadata['comments']);
  48. $p = new PropertyMetadata($m->name, 'author');
  49. $p->type = 'JMS\SerializerBundle\Tests\Fixtures\Author';
  50. $p->groups = array("post");
  51. $this->assertEquals($p, $m->propertyMetadata['author']);
  52. $m = $this->getDriver()->loadMetadataForClass(new \ReflectionClass('JMS\SerializerBundle\Tests\Fixtures\Price'));
  53. $this->assertNotNull($m);
  54. $p = new PropertyMetadata($m->name, 'price');
  55. $p->type = 'double';
  56. $p->xmlValue = true;
  57. $this->assertEquals($p, $m->propertyMetadata['price']);
  58. }
  59. abstract protected function getDriver();
  60. }