/** * @test * @dataProvider ignoredValidationArgumentsProvider */ public function initializeActionMethodValidatorsDoesNotAddValidatorForIgnoredArgumentsWithoutEvaluation($evaluateIgnoredValidationArgument, $setValidatorShouldBeCalled) { $this->actionController = $this->getAccessibleMock(ActionController::class, ['getInformationNeededForInitializeActionMethodValidators']); $mockArgument = $this->getMockBuilder(Mvc\Controller\Argument::class)->disableOriginalConstructor()->getMock(); $mockArgument->expects($this->any())->method('getName')->will($this->returnValue('node')); $arguments = new Arguments(); $arguments['node'] = $mockArgument; $ignoredValidationArguments = ['showAction' => ['node' => ['evaluate' => $evaluateIgnoredValidationArgument]]]; $mockValidator = $this->createMock(ValidatorInterface::class); $parameterValidators = ['node' => $mockValidator]; $this->actionController->expects($this->any())->method('getInformationNeededForInitializeActionMethodValidators')->will($this->returnValue([[], [], [], $ignoredValidationArguments])); $this->inject($this->actionController, 'actionMethodName', 'showAction'); $this->inject($this->actionController, 'arguments', $arguments); $this->inject($this->actionController, 'objectManager', $this->mockObjectManager); $mockValidatorResolver = $this->createMock(ValidatorResolver::class); $mockValidatorResolver->expects($this->any())->method('buildMethodArgumentsValidatorConjunctions')->will($this->returnValue($parameterValidators)); $this->inject($this->actionController, 'validatorResolver', $mockValidatorResolver); if ($setValidatorShouldBeCalled) { $mockArgument->expects($this->once())->method('setValidator'); } else { $mockArgument->expects($this->never())->method('setValidator'); } $this->actionController->_call('initializeActionMethodValidators'); }