ValidatorTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace Gedmo\Uploadable\Mapping;
  3. use Gedmo\Uploadable\Mapping\Validator;
  4. /**
  5. * These are tests for the Mapping Validator of the Uploadable behavior
  6. *
  7. * @author Gustavo Falco <comfortablynumb84@gmail.com>
  8. * @author Gediminas Morkevicius <gediminas.morkevicius@gmail.com>
  9. * @package Gedmo.Uploadable.Mapping
  10. * @link http://www.gediminasm.org
  11. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  12. */
  13. class ValidatorTest extends \PHPUnit_Framework_TestCase
  14. {
  15. protected $meta;
  16. public function setUp()
  17. {
  18. $this->meta = $this->getMock('Doctrine\ORM\Mapping\ClassMetadata', array(), array(), '', false);
  19. }
  20. /**
  21. * @expectedException Gedmo\Exception\InvalidMappingException
  22. */
  23. public function test_validateField_ifFieldIsNotOfAValidTypeThrowException()
  24. {
  25. $this->meta->expects($this->once())
  26. ->method('getFieldMapping')
  27. ->will($this->returnValue(array('type' => 'someType')));
  28. Validator::validateField(
  29. $this->meta,
  30. 'someField',
  31. Validator::UPLOADABLE_FILE_MIME_TYPE,
  32. Validator::$validFileMimeTypeTypes
  33. );
  34. }
  35. /**
  36. * @expectedException Gedmo\Exception\UploadableInvalidPathException
  37. */
  38. public function test_validatePath_ifPathIsNotAStringOrIsAnEmptyStringThrowException()
  39. {
  40. Validator::validatePath('');
  41. }
  42. /**
  43. * @expectedException Gedmo\Exception\UploadableCantWriteException
  44. */
  45. public function test_validatePath_ifPassedDirIsNotAValidDirectoryOrIsNotWriteableThrowException()
  46. {
  47. Validator::validatePath('/invalid/directory/12312432423');
  48. }
  49. /**
  50. * @expectedException Gedmo\Exception\InvalidMappingException
  51. */
  52. public function test_validateConfiguration_ifFilePathFieldIsNotDefinedThrowException()
  53. {
  54. Validator::validateConfiguration($this->meta, array('filePathField' => false));
  55. }
  56. /**
  57. * @expectedException Gedmo\Exception\InvalidMappingException
  58. */
  59. public function test_validateConfiguration_ifPathMethodIsNotAValidMethodThrowException()
  60. {
  61. $this->meta->expects($this->once())
  62. ->method('getReflectionClass')
  63. ->will($this->returnValue(new \ReflectionClass(new FakeEntity())));
  64. Validator::validateConfiguration(
  65. $this->meta,
  66. array('filePathField' => 'someField', 'pathMethod' => 'invalidMethod')
  67. );
  68. }
  69. /**
  70. * @expectedException Gedmo\Exception\InvalidMappingException
  71. */
  72. public function test_validateConfiguration_ifCallbackMethodIsNotAValidMethodThrowException()
  73. {
  74. $this->meta->expects($this->once())
  75. ->method('getReflectionClass')
  76. ->will($this->returnValue(new \ReflectionClass(new FakeEntity())));
  77. Validator::validateConfiguration(
  78. $this->meta,
  79. array('filePathField' => 'someField', 'pathMethod' => '', 'callback' => 'invalidMethod')
  80. );
  81. }
  82. /**
  83. * @expectedException Gedmo\Exception\InvalidMappingException
  84. */
  85. public function test_validateConfiguration_ifFilenameGeneratorValueIsNotValidThrowException()
  86. {
  87. $this->meta->expects($this->once())
  88. ->method('getReflectionClass')
  89. ->will($this->returnValue(new \ReflectionClass(new FakeEntity())));
  90. Validator::validateConfiguration(
  91. $this->meta,
  92. array(
  93. 'fileMimeTypeField' => 'someField',
  94. 'filePathField' => 'someField',
  95. 'pathMethod' => '',
  96. 'callback' => '',
  97. 'filenameGenerator' => 'invalidClass'
  98. )
  99. );
  100. }
  101. }
  102. class FakeEntity
  103. {
  104. }