YamlFileLoaderTest.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Symfony\Tests\Component\Validator\Mapping\Loader;
  3. require_once __DIR__.'/../../Fixtures/Entity.php';
  4. require_once __DIR__.'/../../Fixtures/ConstraintA.php';
  5. use Symfony\Component\Validator\Constraints\All;
  6. use Symfony\Component\Validator\Constraints\Collection;
  7. use Symfony\Component\Validator\Constraints\NotNull;
  8. use Symfony\Component\Validator\Constraints\Min;
  9. use Symfony\Component\Validator\Constraints\Choice;
  10. use Symfony\Component\Validator\Mapping\ClassMetadata;
  11. use Symfony\Component\Validator\Mapping\Loader\YamlFileLoader;
  12. use Symfony\Tests\Component\Validator\Fixtures\ConstraintA;
  13. class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase
  14. {
  15. public function testLoadClassMetadataReturnsFalseIfEmpty()
  16. {
  17. $loader = new YamlFileLoader(__DIR__.'/empty-mapping.yml');
  18. $metadata = new ClassMetadata('Symfony\Tests\Component\Validator\Fixtures\Entity');
  19. $this->assertFalse($loader->loadClassMetadata($metadata));
  20. }
  21. /**
  22. * @expectedException \InvalidArgumentException
  23. */
  24. public function testLoadClassMetadataThrowsExceptionIfNotAnArray()
  25. {
  26. $loader = new YamlFileLoader(__DIR__.'/nonvalid-mapping.yml');
  27. $metadata = new ClassMetadata('Symfony\Tests\Component\Validator\Fixtures\Entity');
  28. $loader->loadClassMetadata($metadata);
  29. }
  30. public function testLoadClassMetadataReturnsTrueIfSuccessful()
  31. {
  32. $loader = new YamlFileLoader(__DIR__.'/constraint-mapping.yml');
  33. $metadata = new ClassMetadata('Symfony\Tests\Component\Validator\Fixtures\Entity');
  34. $this->assertTrue($loader->loadClassMetadata($metadata));
  35. }
  36. public function testLoadClassMetadataReturnsFalseIfNotSuccessful()
  37. {
  38. $loader = new YamlFileLoader(__DIR__.'/constraint-mapping.yml');
  39. $metadata = new ClassMetadata('\stdClass');
  40. $this->assertFalse($loader->loadClassMetadata($metadata));
  41. }
  42. public function testLoadClassMetadata()
  43. {
  44. $loader = new YamlFileLoader(__DIR__.'/constraint-mapping.yml');
  45. $metadata = new ClassMetadata('Symfony\Tests\Component\Validator\Fixtures\Entity');
  46. $loader->loadClassMetadata($metadata);
  47. $expected = new ClassMetadata('Symfony\Tests\Component\Validator\Fixtures\Entity');
  48. $expected->addConstraint(new NotNull());
  49. $expected->addConstraint(new ConstraintA());
  50. $expected->addConstraint(new Min(3));
  51. $expected->addConstraint(new Choice(array('A', 'B')));
  52. $expected->addConstraint(new All(array(new NotNull(), new Min(3))));
  53. $expected->addConstraint(new All(array('constraints' => array(new NotNull(), new Min(3)))));
  54. $expected->addConstraint(new Collection(array('fields' => array(
  55. 'foo' => array(new NotNull(), new Min(3)),
  56. 'bar' => array(new Min(5)),
  57. ))));
  58. $expected->addPropertyConstraint('firstName', new Choice(array(
  59. 'message' => 'Must be one of %choices%',
  60. 'choices' => array('A', 'B'),
  61. )));
  62. $expected->addGetterConstraint('lastName', new NotNull());
  63. $this->assertEquals($expected, $metadata);
  64. }
  65. }