public function process(ContainerBuilder $container) { $serviceDefinitions = $container->getDefinitions(); $validatorFactory = new ServiceDefinitionValidatorFactory($this->configuration); $validator = $validatorFactory->create($container); $batchValidator = new BatchServiceDefinitionValidator($validator, new ValidationErrorFactory()); $errorList = $batchValidator->validate($serviceDefinitions); if (count($errorList) === 0) { return; } $errorListPrinter = new SimpleErrorListPrinter(); $message = $errorListPrinter->printErrorList($errorList); throw new InvalidServiceDefinitionsException($message); }
public function testCreatesErrorListAndTransformsValidationExceptionIntoErrors() { $goodDefinition = $this->createMockDefinition(); $badDefinition = $this->createMockDefinition(); $definitions = array('good_service' => $goodDefinition, 'bad_service' => $badDefinition); $error = $this->createMockError(); $errorList = $this->createMockErrorList(); $errorList->expects($this->once())->method('add')->with($error); $errorFactory = $this->createMockErrorFactory(); $errorFactory->expects($this->once())->method('createValidationErrorList')->will($this->returnValue($errorList)); $exception = $this->createException(); $errorFactory->expects($this->once())->method('createValidationError')->with('bad_service', $badDefinition, $exception)->will($this->returnValue($error)); $validator = $this->createMockValidator(); $validator->expects($this->at(0))->method('validate')->with($goodDefinition); $validator->expects($this->at(1))->method('validate')->with($badDefinition)->will($this->throwException($exception)); $batchValidator = new BatchServiceDefinitionValidator($validator, $errorFactory); $result = $batchValidator->validate($definitions); $this->assertSame($errorList, $result); }