PageRenderTime 57ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/Tests/Unit/Validation/Validator/StringLengthValidatorTest.php

https://github.com/christianjul/FLOW3-Composer
PHP | 178 lines | 88 code | 28 blank | 62 comment | 0 complexity | 235033ee7a4a7a2c8729402bfb2e8990 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-3.0
  1. <?php
  2. namespace TYPO3\FLOW3\Tests\Unit\Validation\Validator;
  3. /* *
  4. * This script belongs to the FLOW3 framework. *
  5. * *
  6. * It is free software; you can redistribute it and/or modify it under *
  7. * the terms of the GNU Lesser General Public License, either version 3 *
  8. * of the License, or (at your option) any later version. *
  9. * *
  10. * The TYPO3 project - inspiring people to share! *
  11. * */
  12. require_once('AbstractValidatorTestcase.php');
  13. /**
  14. * Testcase for the string length validator
  15. *
  16. */
  17. class StringLengthValidatorTest extends \TYPO3\FLOW3\Tests\Unit\Validation\Validator\AbstractValidatorTestcase {
  18. protected $validatorClassName = 'TYPO3\FLOW3\Validation\Validator\StringLengthValidator';
  19. /**
  20. * @test
  21. */
  22. public function validateReturnsNoErrorIfTheGivenValueIsNull() {
  23. $this->assertFalse($this->validator->validate(NULL)->hasErrors());
  24. }
  25. /**
  26. * @test
  27. */
  28. public function validateReturnsNoErrorIfTheGivenValueIsAnEmptyString() {
  29. $this->assertFalse($this->validator->validate('')->hasErrors());
  30. }
  31. /**
  32. * @test
  33. */
  34. public function stringLengthValidatorReturnsNoErrorForAStringShorterThanMaxLengthAndLongerThanMinLength() {
  35. $this->validatorOptions(array('minimum' => 0, 'maximum' => 50));
  36. $this->assertFalse($this->validator->validate('this is a very simple string')->hasErrors());
  37. }
  38. /**
  39. * @test
  40. */
  41. public function stringLengthValidatorReturnsErrorForAStringShorterThanThanMinLength() {
  42. $this->validatorOptions(array('minimum' => 50, 'maximum' => 100));
  43. $this->assertTrue($this->validator->validate('this is a very short string')->hasErrors());
  44. }
  45. /**
  46. * @test
  47. */
  48. public function stringLengthValidatorReturnsErrorsForAStringLongerThanThanMaxLength() {
  49. $this->validatorOptions(array('minimum' => 5, 'maximum' => 10));
  50. $this->assertTrue($this->validator->validate('this is a very short string')->hasErrors());
  51. }
  52. /**
  53. * @test
  54. */
  55. public function stringLengthValidatorReturnsNoErrorsForAStringLongerThanThanMinLengthAndMaxLengthNotSpecified() {
  56. $this->validatorOptions(array('minimum' => 5));
  57. $this->assertFalse($this->validator->validate('this is a very short string')->hasErrors());
  58. }
  59. /**
  60. * @test
  61. */
  62. public function stringLengthValidatorReturnsNoErrorsForAStringShorterThanThanMaxLengthAndMinLengthNotSpecified() {
  63. $this->validatorOptions(array('maximum' => 100));
  64. $this->assertFalse($this->validator->validate('this is a very short string')->hasErrors());
  65. }
  66. /**
  67. * @test
  68. */
  69. public function stringLengthValidatorReturnsNoErrorsForAStringLengthEqualToMaxLengthAndMinLengthNotSpecified() {
  70. $this->validatorOptions(array('maximum' => 10));
  71. $this->assertFalse($this->validator->validate('1234567890')->hasErrors());
  72. }
  73. /**
  74. * @test
  75. */
  76. public function stringLengthValidatorReturnsNoErrorForAStringLengthEqualToMinLengthAndMaxLengthNotSpecified() {
  77. $this->validatorOptions(array('minimum' => 10));
  78. $this->assertFalse($this->validator->validate('1234567890')->hasErrors());
  79. }
  80. /**
  81. * @test
  82. */
  83. public function stringLengthValidatorReturnsNoErrorIfMinLengthAndMaxLengthAreEqualAndTheGivenStringMatchesThisValue() {
  84. $this->validatorOptions(array('minimum' => 10, 'maximum' => 10));
  85. $this->assertFalse($this->validator->validate('1234567890')->hasErrors());
  86. }
  87. /**
  88. * @test
  89. */
  90. public function stringLengthValidatorReturnsNoErrorsfTheStringLengthIsEqualToMaxLength() {
  91. $this->validatorOptions(array('minimum' => 1, 'maximum' => 10));
  92. $this->assertFalse($this->validator->validate('1234567890')->hasErrors());
  93. }
  94. /**
  95. * @test
  96. */
  97. public function stringLengthValidatorReturnsNoErrorIfTheStringLengthIsEqualToMinLength() {
  98. $this->validatorOptions(array('minimum' => 10, 'maximum' => 100));
  99. $this->assertFalse($this->validator->validate('1234567890')->hasErrors());
  100. }
  101. /**
  102. * @test
  103. * @expectedException TYPO3\FLOW3\Validation\Exception\InvalidValidationOptionsException
  104. */
  105. public function stringLengthValidatorThrowsAnExceptionIfMinLengthIsGreaterThanMaxLength() {
  106. $this->validator = $this->getMock('TYPO3\FLOW3\Validation\Validator\StringLengthValidator', array('addError'), array(), '', FALSE);
  107. $this->validatorOptions(array('minimum' => 101, 'maximum' => 100));
  108. $this->validator->validate('1234567890');
  109. }
  110. /**
  111. * @test
  112. */
  113. public function stringLengthValidatorInsertsAnErrorObjectIfValidationFails() {
  114. $this->validatorOptions(array('minimum' => 50, 'maximum' => 100));
  115. $this->assertEquals(1, count($this->validator->validate('this is a very short string')->getErrors()));
  116. }
  117. /**
  118. * @test
  119. */
  120. public function stringLengthValidatorCanHandleAnObjectWithAToStringMethod() {
  121. $this->validator = $this->getMock('TYPO3\FLOW3\Validation\Validator\StringLengthValidator', array('addError'), array(), '', FALSE);
  122. $this->validatorOptions(array('minimum' => 5, 'maximum' => 100));
  123. $className = 'TestClass' . md5(uniqid(mt_rand(), TRUE));
  124. eval('
  125. class ' . $className . ' {
  126. public function __toString() {
  127. return \'some string\';
  128. }
  129. }
  130. ');
  131. $object = new $className();
  132. $this->assertFalse($this->validator->validate($object)->hasErrors());
  133. }
  134. /**
  135. * @test
  136. */
  137. public function validateReturnsErrorsIfTheGivenObjectCanNotBeConvertedToAString() {
  138. $this->validator = $this->getMock('TYPO3\FLOW3\Validation\Validator\StringLengthValidator', array('addError'), array(), '', FALSE);
  139. $this->validatorOptions(array('minimum' => 5, 'maximum' => 100));
  140. $className = 'TestClass' . md5(uniqid(mt_rand(), TRUE));
  141. eval('
  142. class ' . $className . ' {
  143. protected $someProperty;
  144. }
  145. ');
  146. $object = new $className();
  147. $this->assertTrue($this->validator->validate($object)->hasErrors());
  148. }
  149. }
  150. ?>