‪TYPO3CMS  ‪main
ConjunctionValidatorTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
27 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
28 
29 final class ‪ConjunctionValidatorTest extends FunctionalTestCase
30 {
31  protected function ‪setUp(): void
32  {
33  parent::setUp();
34  ‪$GLOBALS['LANG'] = $this->get(LanguageServiceFactory::class)->create('default');
35  }
36 
37  #[Test]
39  {
40  $conjunctionValidator = new ‪ConjunctionValidator();
41  $conjunctionValidator->setOptions([]);
42  $mockValidator = $this->createMock(ValidatorInterface::class);
43  $conjunctionValidator->addValidator($mockValidator);
44  self::assertTrue($conjunctionValidator->getValidators()->contains($mockValidator));
45  }
46 
47  #[Test]
49  {
50  $validatorConjunction = new ‪ConjunctionValidator();
51  $validatorConjunction->setOptions([]);
52  $validatorObject = $this->getMockBuilder(ValidatorInterface::class)
53  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
54  ->getMock();
55  $validatorObject->expects(self::once())->method('validate')->willReturn(new ‪Result());
56  ‪$errors = new ‪Result();
57  ‪$errors->addError(new ‪Error('Error', 123));
58  $secondValidatorObject = $this->getMockBuilder(ValidatorInterface::class)
59  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
60  ->getMock();
61  $secondValidatorObject->expects(self::once())->method('validate')->willReturn(‪$errors);
62  $thirdValidatorObject = $this->getMockBuilder(ValidatorInterface::class)
63  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
64  ->getMock();
65  $thirdValidatorObject->expects(self::once())->method('validate')->willReturn(new ‪Result());
66  $validatorConjunction->addValidator($validatorObject);
67  $validatorConjunction->addValidator($secondValidatorObject);
68  $validatorConjunction->addValidator($thirdValidatorObject);
69  $validatorConjunction->validate('some subject');
70  }
71 
72  #[Test]
74  {
75  $validatorConjunction = new ‪ConjunctionValidator();
76  $validatorConjunction->setOptions([]);
77  $validatorObject = $this->getMockBuilder(ValidatorInterface::class)
78  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
79  ->getMock();
80  $validatorObject->method('validate')->willReturn(new ‪Result());
81  $secondValidatorObject = $this->getMockBuilder(ValidatorInterface::class)
82  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
83  ->getMock();
84  $secondValidatorObject->method('validate')->willReturn(new ‪Result());
85  $validatorConjunction->addValidator($validatorObject);
86  $validatorConjunction->addValidator($secondValidatorObject);
87  self::assertFalse($validatorConjunction->validate('some subject')->hasErrors());
88  }
89 
90  #[Test]
92  {
93  $validatorConjunction = new ‪ConjunctionValidator();
94  $validatorConjunction->setOptions([]);
95  $validatorObject = $this->getMockBuilder(ValidatorInterface::class)
96  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
97  ->getMock();
98  ‪$errors = new ‪Result();
99  ‪$errors->addError(new ‪Error('Error', 123));
100  $validatorObject->method('validate')->willReturn(‪$errors);
101  $validatorConjunction->addValidator($validatorObject);
102  self::assertTrue($validatorConjunction->validate('some subject')->hasErrors());
103  }
104 
105  #[Test]
107  {
108  $validatorConjunction = new ‪ConjunctionValidator();
109  $validatorConjunction->setOptions([]);
110  $validator1 = $this->getMockBuilder(ValidatorInterface::class)
111  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
112  ->getMock();
113  $validator2 = $this->getMockBuilder(ValidatorInterface::class)
114  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
115  ->getMock();
116  $validatorConjunction->addValidator($validator1);
117  $validatorConjunction->addValidator($validator2);
118  $validatorConjunction->removeValidator($validator1);
119  self::assertFalse($validatorConjunction->getValidators()->contains($validator1));
120  self::assertTrue($validatorConjunction->getValidators()->contains($validator2));
121  }
122 
123  #[Test]
125  {
126  $this->expectException(NoSuchValidatorException::class);
127  $this->expectExceptionCode(1207020177);
128  $validatorConjunction = new ‪ConjunctionValidator();
129  $validatorConjunction->setOptions([]);
130  ‪$validator = $this->getMockBuilder(ValidatorInterface::class)
131  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
132  ->getMock();
133  $validatorConjunction->removeValidator(‪$validator);
134  }
135 
136  #[Test]
138  {
139  $validatorConjunction = new ‪ConjunctionValidator();
140  $validatorConjunction->setOptions([]);
141  $validator1 = $this->getMockBuilder(ValidatorInterface::class)
142  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
143  ->getMock();
144  $validator2 = $this->getMockBuilder(ValidatorInterface::class)
145  ->onlyMethods(['validate', 'getOptions', 'setOptions'])
146  ->getMock();
147  self::assertCount(0, $validatorConjunction);
148  $validatorConjunction->addValidator($validator1);
149  $validatorConjunction->addValidator($validator2);
150  self::assertCount(2, $validatorConjunction);
151  }
152 }
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator
Definition: ConjunctionValidator.php:26
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator
Definition: AlphanumericValidatorTest.php:18
‪TYPO3\CMS\Extbase\Validation\Exception\NoSuchValidatorException
Definition: NoSuchValidatorException.php:25
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\setUp
‪setUp()
Definition: ConjunctionValidatorTest.php:31
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\removingAValidatorOfTheValidatorConjunctionWorks
‪removingAValidatorOfTheValidatorConjunctionWorks()
Definition: ConjunctionValidatorTest.php:106
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest
Definition: ConjunctionValidatorTest.php:30
‪TYPO3\CMS\Extbase\Error\Result
Definition: Result.php:24
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\validatorConjunctionReturnsNoErrorsIfAllJunctionedValidatorsReturnNoErrors
‪validatorConjunctionReturnsNoErrorsIfAllJunctionedValidatorsReturnNoErrors()
Definition: ConjunctionValidatorTest.php:73
‪TYPO3\CMS\Extbase\Error\Error
Definition: Error.php:25
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\validatorConjunctionReturnsErrorsIfOneValidatorReturnsErrors
‪validatorConjunctionReturnsErrorsIfOneValidatorReturnsErrors()
Definition: ConjunctionValidatorTest.php:91
‪$validator
‪if(isset($args['d'])) $validator
Definition: validateRstFiles.php:262
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\addingValidatorsToAJunctionValidatorWorks
‪addingValidatorsToAJunctionValidatorWorks()
Definition: ConjunctionValidatorTest.php:38
‪$errors
‪$errors
Definition: annotationChecker.php:116
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\allValidatorsInTheConjunctionAreCalledEvenIfOneReturnsError
‪allValidatorsInTheConjunctionAreCalledEvenIfOneReturnsError()
Definition: ConjunctionValidatorTest.php:48
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\countReturnsTheNumberOfValidatorsContainedInTheConjunction
‪countReturnsTheNumberOfValidatorsContainedInTheConjunction()
Definition: ConjunctionValidatorTest.php:137
‪TYPO3\CMS\Extbase\Tests\Functional\Validation\Validator\ConjunctionValidatorTest\removingANotExistingValidatorIndexThrowsException
‪removingANotExistingValidatorIndexThrowsException()
Definition: ConjunctionValidatorTest.php:124
‪TYPO3\CMS\Extbase\Validation\Validator\ValidatorInterface
Definition: ValidatorInterface.php:26