public function buildMethodArgumentsValidatorConjunctionsBuildsAConjunctionFromValidateAnnotationsOfTheSpecifiedMethod()
{
$mockObject = new \stdClass();
$methodParameters = ['arg1' => ['type' => 'string'], 'arg2' => ['type' => 'array']];
$validateAnnotations = [new Annotations\Validate(['type' => 'Foo', 'options' => ['bar' => 'baz'], 'argumentName' => '$arg1']), new Annotations\Validate(['type' => 'Bar', 'argumentName' => '$arg1']), new Annotations\Validate(['type' => 'TYPO3\\TestPackage\\Quux', 'argumentName' => '$arg2'])];
$mockReflectionService = $this->getMockBuilder(ReflectionService::class)->disableOriginalConstructor()->getMock();
$mockReflectionService->expects($this->once())->method('getMethodParameters')->with(get_class($mockObject), 'fooAction')->will($this->returnValue($methodParameters));
$mockReflectionService->expects($this->once())->method('getMethodAnnotations')->with(get_class($mockObject), 'fooAction', Annotations\Validate::class)->will($this->returnValue($validateAnnotations));
$mockStringValidator = $this->createMock(ValidatorInterface::class);
$mockArrayValidator = $this->createMock(ValidatorInterface::class);
$mockFooValidator = $this->createMock(ValidatorInterface::class);
$mockBarValidator = $this->createMock(ValidatorInterface::class);
$mockQuuxValidator = $this->createMock(ValidatorInterface::class);
$conjunction1 = $this->getMockBuilder(ConjunctionValidator::class)->disableOriginalConstructor()->getMock();
$conjunction1->expects($this->at(0))->method('addValidator')->with($mockStringValidator);
$conjunction1->expects($this->at(1))->method('addValidator')->with($mockFooValidator);
$conjunction1->expects($this->at(2))->method('addValidator')->with($mockBarValidator);
$conjunction2 = $this->getMockBuilder(ConjunctionValidator::class)->disableOriginalConstructor()->getMock();
$conjunction2->expects($this->at(0))->method('addValidator')->with($mockArrayValidator);
$conjunction2->expects($this->at(1))->method('addValidator')->with($mockQuuxValidator);
$validatorResolver = $this->getAccessibleMock(ValidatorResolver::class, ['createValidator'], [], '', false);
$validatorResolver->expects($this->at(0))->method('createValidator')->with(ConjunctionValidator::class)->will($this->returnValue($conjunction1));
$validatorResolver->expects($this->at(1))->method('createValidator')->with('string')->will($this->returnValue($mockStringValidator));
$validatorResolver->expects($this->at(2))->method('createValidator')->with(ConjunctionValidator::class)->will($this->returnValue($conjunction2));
$validatorResolver->expects($this->at(3))->method('createValidator')->with('array')->will($this->returnValue($mockArrayValidator));
$validatorResolver->expects($this->at(4))->method('createValidator')->with('Foo', ['bar' => 'baz'])->will($this->returnValue($mockFooValidator));
$validatorResolver->expects($this->at(5))->method('createValidator')->with('Bar')->will($this->returnValue($mockBarValidator));
$validatorResolver->expects($this->at(6))->method('createValidator')->with('TYPO3\\TestPackage\\Quux')->will($this->returnValue($mockQuuxValidator));
$validatorResolver->_set('reflectionService', $mockReflectionService);
$result = $validatorResolver->buildMethodArgumentsValidatorConjunctions(get_class($mockObject), 'fooAction');
$this->assertEquals(['arg1' => $conjunction1, 'arg2' => $conjunction2], $result);
}