/** * @param ValueParser $parser * @param string $value * @param ValueValidator|null $validator * * @return array */ private function parseStringValue(ValueParser $parser, $value, ValueValidator $validator = null) { $result = array('raw' => $value); try { $parseResult = $parser->parse($value); } catch (ParseException $parseError) { $this->addParseErrorToResult($result, $parseError); return $result; } if ($parseResult instanceof DataValue) { $result['value'] = $parseResult->getArrayValue(); $result['type'] = $parseResult->getType(); } else { $result['value'] = $parseResult; } if ($validator) { $validatorResult = $validator->validate($parseResult); $validationStatus = $this->validatorErrorLocalizer->getResultStatus($validatorResult); $result['valid'] = $validationStatus->isOK(); if (!$validationStatus->isOK()) { $result['error'] = 'ValidationError'; $this->errorReporter->addStatusToResult($validationStatus, $result); $result['validation-errors'] = $this->getValidatorErrorCodes($validatorResult->getErrors()); } } return $result; }
/** * @dataProvider provideGetResultStatus() */ public function testGetResultStatus(Result $result) { $localizer = new ValidatorErrorLocalizer($this->getMockFormatter()); $status = $localizer->getResultStatus($result); $this->assertInstanceOf('Status', $status); $this->assertEquals($result->isValid(), $status->isOk(), 'isOK()'); $this->assertEquals(count($result->getErrors()), count($status->getErrorsArray()), 'Error count:'); }