2 declare(strict_types = 1);
39 protected function setUp()
43 $this->validatorResolver = $this->getAccessibleMock(
44 ValidatorResolver::class,
47 $this->validatorResolver->injectObjectManager(GeneralUtility::makeInstance(ObjectManager::class));
48 $this->validatorResolver->injectReflectionService(GeneralUtility::makeInstance(ReflectionService::class));
57 'TYPO3.CMS.Extbase:NotEmpty' => [
58 'TYPO3.CMS.Extbase:NotEmpty',
59 NotEmptyValidator::class
61 'TYPO3.CMS.Extbase.Tests.Functional.Validation.Fixture:Custom' => [
62 'TYPO3.CMS.Extbase.Tests.Functional.Validation.Fixture:Custom',
63 Fixture\Validation\Validator\CustomValidator::class
79 $this->validatorResolver->_call(
'resolveValidatorObjectName', $validatorName)
88 $this->expectException(NoSuchValidatorException::class);
89 $this->expectExceptionCode(1365799920);
91 $validatorName =
'TYPO3.CMS.Extbase.Tests.Functional.Validation.Fixture:NonExistentValidator';
92 $this->validatorResolver->_call(
'resolveValidatorObjectName', $validatorName);
100 $this->expectException(NoSuchValidatorException::class);
101 $this->expectExceptionCode(1365776838);
103 $validatorName =
'TYPO3.CMS.Extbase.Tests.Functional.Validation.Fixture:CustomValidatorThatDoesNotImplementValidatorInterface';
104 $this->validatorResolver->_call(
'resolveValidatorObjectName', $validatorName);
112 $validatorName = Fixture\Validation\Validator\CustomValidator::class;
113 $className = Fixture\Validation\Validator\CustomValidator::class;
115 static::assertEquals(
117 $this->validatorResolver->_call(
'resolveValidatorObjectName', $validatorName)
126 $validatorName =
'\\' . Fixture\Validation\Validator\CustomValidator::class;
127 $className = Fixture\Validation\Validator\CustomValidator::class;
129 static::assertEquals(
131 $this->validatorResolver->_call(
'resolveValidatorObjectName', $validatorName)
140 $className = $this->getUniqueId(
'Foo\\Bar');
141 $this->expectException(NoSuchValidatorException::class);
142 $this->expectExceptionCode(1365799920);
143 $this->validatorResolver->_call(
'resolveValidatorObjectName', $className);
151 $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(Fixture\Controller\TestController::class);
152 $result = $this->validatorResolver->buildMethodArgumentsValidatorConjunctions(
157 static::assertSame([], $result);
165 $this->validatorResolver->_call(
166 'buildBaseValidatorConjunction',
167 \
TYPO3\CMS\
Extbase\Tests\Functional\Validation\Fixture\Domain\Model\Model::class,
168 \
TYPO3\CMS\
Extbase\Tests\Functional\Validation\Fixture\Domain\Model\Model::class
172 $baseValidatorConjunctions = $this->validatorResolver->_get(
'baseValidatorConjunctions');
173 static::assertTrue(is_array($baseValidatorConjunctions));
174 static::assertCount(2, $baseValidatorConjunctions);
175 static::assertArrayHasKey(\
TYPO3\CMS\
Extbase\Tests\Functional\Validation\Fixture\Domain\Model\Model::class, $baseValidatorConjunctions);
176 static::assertArrayHasKey(\
TYPO3\CMS\
Extbase\Tests\Functional\Validation\Fixture\Domain\Model\AnotherModel::class, $baseValidatorConjunctions);
179 $conjunctionValidator = $baseValidatorConjunctions[\TYPO3\CMS\Extbase\Tests\Functional\Validation\Fixture\Domain\Model\Model::class];
180 static::assertInstanceOf(ConjunctionValidator::class, $conjunctionValidator);
182 $baseValidators = $conjunctionValidator->getValidators();
183 static::assertInstanceOf(\SplObjectStorage::class, $baseValidators);
184 $baseValidators->rewind();
188 static::assertInstanceOf(GenericObjectValidator::class,
$validator);
190 $propertyValidators =
$validator->getPropertyValidators();
191 static::assertCount(4, $propertyValidators);
192 static::assertArrayHasKey(
'foo', $propertyValidators);
193 static::assertArrayHasKey(
'bar', $propertyValidators);
194 static::assertArrayHasKey(
'baz', $propertyValidators);
195 static::assertArrayHasKey(
'qux', $propertyValidators);
198 $fooPropertyValidators = $propertyValidators[
'foo'];
199 static::assertInstanceOf(\SplObjectStorage::class, $fooPropertyValidators);
200 static::assertCount(3, $fooPropertyValidators);
202 $fooPropertyValidators->rewind();
204 $propertyValidator = $fooPropertyValidators->current();
205 static::assertInstanceOf(StringLengthValidator::class, $propertyValidator);
206 static::assertSame([
'minimum' => 1,
'maximum' => PHP_INT_MAX], $propertyValidator->getOptions());
208 $fooPropertyValidators->next();
210 $propertyValidator = $fooPropertyValidators->current();
211 static::assertInstanceOf(StringLengthValidator::class, $propertyValidator);
212 static::assertSame([
'minimum' => 0,
'maximum' => 10], $propertyValidator->getOptions());
214 $fooPropertyValidators->next();
215 $propertyValidator = $fooPropertyValidators->current();
216 static::assertInstanceOf(NotEmptyValidator::class, $propertyValidator);
219 $barPropertyValidators = $propertyValidators[
'bar'];
220 static::assertInstanceOf(\SplObjectStorage::class, $barPropertyValidators);
221 static::assertCount(1, $barPropertyValidators);
223 $barPropertyValidators->rewind();
224 $propertyValidator = $barPropertyValidators->current();
225 static::assertInstanceOf(Fixture\Validation\Validator\CustomValidator::class, $propertyValidator);
228 $bazPropertyValidators = $propertyValidators[
'baz'];
229 static::assertInstanceOf(\SplObjectStorage::class, $bazPropertyValidators);
230 static::assertCount(1, $bazPropertyValidators);
232 $bazPropertyValidators->rewind();
233 $propertyValidator = $bazPropertyValidators->current();
234 static::assertInstanceOf(CollectionValidator::class, $propertyValidator);
237 $quxPropertyValidators = $propertyValidators[
'qux'];
238 static::assertInstanceOf(\SplObjectStorage::class, $quxPropertyValidators);
239 static::assertCount(1, $quxPropertyValidators);
241 $quxPropertyValidators->rewind();
242 $propertyValidator = $quxPropertyValidators->current();
243 static::assertInstanceOf(ConjunctionValidator::class, $propertyValidator);
245 $baseValidatorConjunctions[\
TYPO3\CMS\
Extbase\Tests\Functional\Validation\Fixture\Domain\Model\AnotherModel::class],
249 $baseValidators->next();
251 static::assertInstanceOf(Fixture\Domain\Validator\ModelValidator::class,
$validator);