/tests/Zend/Validator/StaticValidatorTest.php

https://github.com/adaykin/zf2 · PHP · 187 lines · 121 code · 20 blank · 46 comment · 1 complexity · a1a7b97ed9350c72b9966b329d5e5ca1 MD5 · raw file

  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Validator
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. */
  21. /**
  22. * @namespace
  23. */
  24. namespace ZendTest\Validator;
  25. use Zend\Validator,
  26. Zend\Validator\ValidatorBroker,
  27. Zend\Loader\Broker,
  28. Zend\Loader\PluginBroker,
  29. Zend\Translator;
  30. /**
  31. * @category Zend
  32. * @package Zend_Validator
  33. * @subpackage UnitTests
  34. * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
  35. * @license http://framework.zend.com/license/new-bsd New BSD License
  36. * @group Zend_Validator
  37. */
  38. class StaticValidatorTest extends \PHPUnit_Framework_TestCase
  39. {
  40. public function clearRegistry()
  41. {
  42. if (\Zend\Registry::isRegistered('Zend_Translate')) {
  43. $registry = \Zend\Registry::getInstance();
  44. unset($registry['Zend_Translate']);
  45. }
  46. }
  47. /**
  48. * Creates a new validation object for each test method
  49. *
  50. * @return void
  51. */
  52. public function setUp()
  53. {
  54. $this->clearRegistry();
  55. Validator\AbstractValidator::setDefaultTranslator(null);
  56. Validator\StaticValidator::setBroker(null);
  57. $this->validator = new Validator\Alpha();
  58. }
  59. public function tearDown()
  60. {
  61. $this->clearRegistry();
  62. Validator\AbstractValidator::setDefaultTranslator(null);
  63. Validator\AbstractValidator::setMessageLength(-1);
  64. }
  65. /**
  66. * Ignores a raised PHP error when in effect, but throws a flag to indicate an error occurred
  67. *
  68. * @param integer $errno
  69. * @param string $errstr
  70. * @param string $errfile
  71. * @param integer $errline
  72. * @param array $errcontext
  73. * @return void
  74. */
  75. public function errorHandlerIgnore($errno, $errstr, $errfile, $errline, array $errcontext)
  76. {
  77. $this->_errorOccurred = true;
  78. }
  79. public function testCanSetGlobalDefaultTranslator()
  80. {
  81. set_error_handler(array($this, 'errorHandlerIgnore'));
  82. $translator = new Translator\Translator('ArrayAdapter', array(), 'en');
  83. restore_error_handler();
  84. Validator\AbstractValidator::setDefaultTranslator($translator);
  85. $this->assertSame($translator->getAdapter(), Validator\AbstractValidator::getDefaultTranslator());
  86. }
  87. public function testGlobalDefaultTranslatorUsedWhenNoLocalTranslatorSet()
  88. {
  89. $this->testCanSetGlobalDefaultTranslator();
  90. $this->assertSame(Validator\AbstractValidator::getDefaultTranslator(), $this->validator->getTranslator());
  91. }
  92. public function testGlobalTranslatorFromRegistryUsedWhenNoLocalTranslatorSet()
  93. {
  94. set_error_handler(array($this, 'errorHandlerIgnore'));
  95. $translate = new Translator\Translator('ArrayAdapter', array());
  96. restore_error_handler();
  97. \Zend\Registry::set('Zend_Translate', $translate);
  98. $this->assertSame($translate->getAdapter(), $this->validator->getTranslator());
  99. }
  100. public function testLocalTranslatorPreferredOverGlobalTranslator()
  101. {
  102. $this->testCanSetGlobalDefaultTranslator();
  103. set_error_handler(array($this, 'errorHandlerIgnore'));
  104. $translator = new Translator\Translator('ArrayAdapter', array(), 'en');
  105. restore_error_handler();
  106. $this->validator->setTranslator($translator);
  107. $this->assertNotSame(Validator\AbstractValidator::getDefaultTranslator(), $this->validator->getTranslator());
  108. }
  109. public function testMaximumErrorMessageLength()
  110. {
  111. $this->assertEquals(-1, Validator\AbstractValidator::getMessageLength());
  112. Validator\AbstractValidator::setMessageLength(10);
  113. $this->assertEquals(10, Validator\AbstractValidator::getMessageLength());
  114. $translator = new Translator\Translator(
  115. 'ArrayAdapter',
  116. array(Validator\Alpha::INVALID => 'This is the translated message for %value%'),
  117. 'en'
  118. );
  119. $this->validator->setTranslator($translator);
  120. $this->assertFalse($this->validator->isValid(123));
  121. $messages = $this->validator->getMessages();
  122. $this->assertTrue(array_key_exists(Validator\Alpha::INVALID, $messages));
  123. $this->assertEquals('This is...', $messages[Validator\Alpha::INVALID]);
  124. }
  125. public function testSetGetMessageLengthLimitation()
  126. {
  127. Validator\AbstractValidator::setMessageLength(5);
  128. $this->assertEquals(5, Validator\AbstractValidator::getMessageLength());
  129. $valid = new Validator\Between(1, 10);
  130. $this->assertFalse($valid->isValid(24));
  131. $message = current($valid->getMessages());
  132. $this->assertTrue(strlen($message) <= 5);
  133. }
  134. public function testSetGetDefaultTranslator()
  135. {
  136. set_error_handler(array($this, 'errorHandlerIgnore'));
  137. $translator = new \Zend\Translator\Translator('ArrayAdapter', array(), 'en');
  138. restore_error_handler();
  139. Validator\AbstractValidator::setDefaultTranslator($translator);
  140. $this->assertSame($translator->getAdapter(), Validator\AbstractValidator::getDefaultTranslator());
  141. }
  142. /* plugin loading */
  143. public function testLazyLoadsValidatorBrokerByDefault()
  144. {
  145. $broker = Validator\StaticValidator::getBroker();
  146. $this->assertType('Zend\Validator\ValidatorBroker', $broker);
  147. }
  148. public function testCanSetCustomPluginBroker()
  149. {
  150. $broker = new PluginBroker();
  151. Validator\StaticValidator::setBroker($broker);
  152. $this->assertSame($broker, Validator\StaticValidator::getBroker());
  153. }
  154. public function testPassingNullWhenSettingBrokerResetsBroker()
  155. {
  156. $broker = new PluginBroker();
  157. Validator\StaticValidator::setBroker($broker);
  158. $this->assertSame($broker, Validator\StaticValidator::getBroker());
  159. Validator\StaticValidator::setBroker(null);
  160. $this->assertNotSame($broker, Validator\StaticValidator::getBroker());
  161. }
  162. public function testExecuteValidWithParameters()
  163. {
  164. $this->assertTrue(Validator\StaticValidator::execute(5, 'Between', array(1, 10)));
  165. $this->assertTrue(Validator\StaticValidator::execute(5, 'Between', array('min' => 1, 'max' => 10)));
  166. }
  167. }