‪TYPO3CMS  ‪main
ProcessingRuleTest.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;
28 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
29 
30 final class ‪ProcessingRuleTest extends UnitTestCase
31 {
32  #[Test]
33  public function ‪addValidatorAddsValidator(): void
34  {
35  $conjunctionValidator = new ‪ConjunctionValidator();
36  $conjunctionValidator->setOptions([]);
37  $validatorResolver = $this->createMock(ValidatorResolver::class);
38  $validatorResolver->method('createValidator')->with(ConjunctionValidator::class)->willReturn($conjunctionValidator);
39  $subject = new ‪ProcessingRule($this->createMock(PropertyMapper::class), $validatorResolver);
40  $testValidator = new ‪TestValidator();
41  $testValidator->setOptions([]);
42  $subject->addValidator($testValidator);
43  $validators = $subject->getValidators();
44  $validators->rewind();
45  self::assertInstanceOf(AbstractValidator::class, $validators->current());
46  }
47 
48  #[Test]
49  public function ‪removeAllRemovesAllValidators(): void
50  {
51  $conjunctionValidator = new ‪ConjunctionValidator();
52  $conjunctionValidator->setOptions([]);
53  $validatorResolver = $this->createMock(ValidatorResolver::class);
54  $validatorResolver->method('createValidator')->with(ConjunctionValidator::class)->willReturn($conjunctionValidator);
55  $subject = new ‪ProcessingRule($this->createMock(PropertyMapper::class), $validatorResolver);
56  $subject->addValidator(new ‪TestValidator());
57  $subject->addValidator(new ‪AnotherTestValidator());
58  $subject->addValidator(new ‪TestValidator());
59  $subject->removeAllValidators();
60  self::assertCount(0, $subject->getValidators());
61  }
62 
63  #[Test]
65  {
66  $conjunctionValidator = new ‪ConjunctionValidator();
67  $conjunctionValidator->setOptions([]);
68  $validatorResolver = $this->createMock(ValidatorResolver::class);
69  $validatorResolver->method('createValidator')->with(ConjunctionValidator::class)->willReturn($conjunctionValidator);
70  $subject = new ‪ProcessingRule($this->createMock(PropertyMapper::class), $validatorResolver);
71  $subject->addValidator(new ‪TestValidator());
72  $subject->addValidator(new ‪AnotherTestValidator());
73  $subject->addValidator(new ‪TestValidator());
74  $subject->filterValidators(static function (‪$validator) {
75  return ‪$validator instanceof ‪AnotherTestValidator;
76  });
77  $validators = $subject->getValidators();
78  self::assertCount(1, $validators);
79  self::assertInstanceOf(AnotherTestValidator::class, $validators->current());
80  }
81 
82  #[Test]
84  {
85  $conjunctionValidator = new ‪ConjunctionValidator();
86  $conjunctionValidator->setOptions([]);
87  $validatorResolver = $this->createMock(ValidatorResolver::class);
88  $validatorResolver->method('createValidator')->with(ConjunctionValidator::class)->willReturn($conjunctionValidator);
89  $subject = new ‪ProcessingRule($this->createMock(PropertyMapper::class), $validatorResolver);
90  $input = 'someValue';
91  self::assertSame($input, $subject->process($input));
92  }
93 
94  #[Test]
96  {
97  $conjunctionValidator = new ‪ConjunctionValidator();
98  $conjunctionValidator->setOptions([]);
99  $validatorResolver = $this->createMock(ValidatorResolver::class);
100  $validatorResolver->method('createValidator')->with(ConjunctionValidator::class)->willReturn($conjunctionValidator);
101  $subject = new ‪ProcessingRule($this->createMock(PropertyMapper::class), $validatorResolver);
102  $subject->addValidator(new ‪TestValidator());
103  $input = 'addError';
104  $subject->process($input);
105  self::assertTrue($subject->getProcessingMessages()->hasErrors());
106  }
107 }
‪TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator
Definition: AbstractValidator.php:29
‪TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator
Definition: ConjunctionValidator.php:26
‪TYPO3\CMS\Form\Tests\Unit\Mvc\ProcessingRuleTest\processNoPropertyMappingAndHasErrorsIfValidatorContainsErrors
‪processNoPropertyMappingAndHasErrorsIfValidatorContainsErrors()
Definition: ProcessingRuleTest.php:95
‪TYPO3\CMS\Form\Tests\Unit\Mvc\ProcessingRuleTest
Definition: ProcessingRuleTest.php:31
‪TYPO3\CMS\Form\Tests\Unit\Mvc\ProcessingRuleTest\addValidatorAddsValidator
‪addValidatorAddsValidator()
Definition: ProcessingRuleTest.php:33
‪TYPO3\CMS\Extbase\Validation\ValidatorResolver
Definition: ValidatorResolver.php:38
‪TYPO3\CMS\Form\Tests\Unit\Mvc
‪TYPO3\CMS\Form\Tests\Unit\Mvc\ProcessingRuleTest\processNoPropertyMappingReturnsNotModifiedValue
‪processNoPropertyMappingReturnsNotModifiedValue()
Definition: ProcessingRuleTest.php:83
‪TYPO3\CMS\Form\Tests\Unit\Mvc\ProcessingRuleTest\removeAllRemovesAllValidators
‪removeAllRemovesAllValidators()
Definition: ProcessingRuleTest.php:49
‪TYPO3\CMS\Form\Tests\Unit\Mvc\Fixtures\TestValidator
Definition: TestValidator.php:26
‪TYPO3\CMS\Form\Tests\Unit\Mvc\ProcessingRuleTest\filterValidatorRemovesValidatorsDependingOnClosure
‪filterValidatorRemovesValidatorsDependingOnClosure()
Definition: ProcessingRuleTest.php:64
‪$validator
‪if(isset($args['d'])) $validator
Definition: validateRstFiles.php:262
‪TYPO3\CMS\Extbase\Property\PropertyMapper
Definition: PropertyMapper.php:30
‪TYPO3\CMS\Form\Mvc\ProcessingRule
Definition: ProcessingRule.php:36
‪TYPO3\CMS\Form\Tests\Unit\Mvc\Fixtures\AnotherTestValidator
Definition: AnotherTestValidator.php:26