[!!!][TASK] Extract testing framework for TYPO3
[Packages/TYPO3.CMS.git] / typo3 / sysext / extbase / Tests / Unit / Validation / Validator / AbstractCompositeValidatorTest.php
1 <?php
2 namespace TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator;
3
4 /* *
5 * This script belongs to the Extbase framework. *
6 * *
7 * It is free software; you can redistribute it and/or modify it under *
8 * the terms of the GNU Lesser General Public License as published by the *
9 * Free Software Foundation, either version 3 of the License, or (at your *
10 * option) any later version. *
11 * *
12 * This script is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- *
14 * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser *
15 * General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License along with the script. *
19 * If not, see http://www.gnu.org/licenses/lgpl.html *
20 * *
21 * The TYPO3 project - inspiring people to share! *
22 * */
23
24 use TYPO3\CMS\Extbase\Tests\Unit\Validation\Validator\Fixture\AbstractCompositeValidatorClass;
25
26 /**
27 * Testcase for the abstract base-class of composite-validators
28 *
29 * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License, version 3 or later
30 */
31 class AbstractCompositeValidatorTest extends \TYPO3\CMS\Components\TestingFramework\Core\UnitTestCase
32 {
33 /**
34 * @test
35 */
36 public function validatorAcceptsSupportedOptions()
37 {
38 $inputOptions = [
39 'requiredOption' => 666,
40 'demoOption' => 42
41 ];
42 $expectedOptions = $inputOptions;
43 $validator = $this->getAccessibleMock(AbstractCompositeValidatorClass::class, ['dummy'], [$inputOptions]);
44 $this->assertSame($expectedOptions, $validator->_get('options'));
45 }
46
47 /**
48 * @test
49 */
50 public function validatorHasDefaultOptions()
51 {
52 $inputOptions = ['requiredOption' => 666];
53 $expectedOptions = [
54 'requiredOption' => 666,
55 'demoOption' => PHP_INT_MAX
56 ];
57 $validator = $this->getAccessibleMock(AbstractCompositeValidatorClass::class, ['dummy'], [$inputOptions]);
58 $this->assertSame($expectedOptions, $validator->_get('options'));
59 }
60
61 /**
62 * @test
63 */
64 public function validatorThrowsExceptionOnNotSupportedOptions()
65 {
66 $inputOptions = ['invalidoption' => 42];
67 $this->expectException(\TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationOptionsException::class);
68 $this->expectExceptionCode(1339079804);
69 $this->getAccessibleMock(AbstractCompositeValidatorClass::class, ['dummy'], [$inputOptions]);
70 }
71
72 /**
73 * @test
74 */
75 public function validatorThrowsExceptionOnMissingRequiredOptions()
76 {
77 $inputOptions = [];
78 $this->expectException(\TYPO3\CMS\Extbase\Validation\Exception\InvalidValidationOptionsException::class);
79 $this->expectExceptionCode(1339163922);
80 $this->getAccessibleMock(AbstractCompositeValidatorClass::class, ['dummy'], [$inputOptions]);
81 }
82 }