/** * ErrorBag constructor. * @param MessageBag $messages * @param ErrorInterface|null $prototype * an error prototype that the source and detail from the message bag should be set on. * @param string|null $sourcePrefix * @param bool $isParameter * true to set error source as a parameter, rather than a pointer. */ public function __construct(MessageBag $messages, ErrorInterface $prototype = null, $sourcePrefix = null, $isParameter = false) { parent::__construct($messages); $this->prototype = $prototype ? Error::cast($prototype) : new Error(); $this->sourcePrefix = $sourcePrefix ? (string) $sourcePrefix : null; $this->isParameter = (bool) $isParameter; }
/** * @inheritdoc */ public function filterParametersMessages(MessageBag $messages, $statusCode = self::STATUS_INVALID_FILTERS) { $prototype = $this->repository->error(self::FILTER_PARAMETERS_MESSAGES); $prototype = Error::cast($prototype)->setStatus($statusCode); $prefix = QueryParametersParserInterface::PARAM_FILTER; $errors = new ErrorBag($messages, $prototype, $prefix, true); return $errors->toArray(); }
/** * @param ErrorInterface|string $error * @param array $values * @return MutableErrorInterface * the error that was added. */ public function addError($error, array $values = []) { if ($error instanceof ErrorInterface) { $error = Error::cast($error); } else { $error = $this->getErrorRepository()->error($error, $values); } $this->getErrors()->add($error); return $error; }
public function testMerge() { $a = new BaseError(null, null, 422); $b = new Error(null, null, 400); $c = new BaseError(null, null, 500); $merge = new ErrorCollection(); $merge->add($a)->add($b); $errors = new MutableErrorCollection([$c]); $expected = [Error::cast($c), Error::cast($a), $b]; $this->assertEquals($errors, $errors->merge($merge)); $this->assertEquals($expected, $errors->getArrayCopy()); }
public function testCastBaseErrorToError() { $id = '123'; $aboutLink = new Link('/api/errors/123'); $status = '500'; $code = 'error_code'; $title = 'An Error'; $detail = 'This is the error detail'; $source = [Error::SOURCE_POINTER => '/data/attributes']; $meta = ['foo' => 'bar']; $error = new BaseError($id, $aboutLink, $status, $code, $title, $detail, $source, $meta); $expected = new Error($id, [], $status, $code, $title, $detail, $source, $meta); $expected->setAboutLink($aboutLink); $this->assertEquals($expected, Error::cast($error)); }
/** * @param ErrorInterface $error * @return $this */ public function add(ErrorInterface $error) { parent::add(Error::cast($error)); return $this; }