/** * @param array $errorFields */ private function thenItShouldHaveMarkedUniqueErrorForFields(array $errorFields) { $expectedErrors = array(); foreach ($errorFields as $errorField) { $expectedErrors[$errorField] = array('unique'); } $this->assertEquals($expectedErrors, $this->record->getErrorStack()->toArray()); }
/** * @param Record $record * @return bool */ public function validate($record) { if (!$record instanceof Record) { throw new \InvalidArgumentException("Argument #1 should be an instance of \\Dive\\Record!"); } $record->getErrorStack()->clear(); $disabledChecks = $this->getDisabledChecks(); foreach ($this->validators as $validator) { $validator->setDisabledChecks($disabledChecks); if (!$validator->validate($record)) { return false; } } return true; }
/** * @param Record $record * @return RecordInvalidException */ public static function createByRecord(Record $record) { $errorStack = $record->getErrorStack(); $message = "Record {$record} is invalid!\n"; foreach ($errorStack as $fieldName => $errorCodes) { $value = $record->get($fieldName); $type = gettype($value); $valueAsString = "({$type})"; if (is_string($value) || is_numeric($value)) { $valueAsString .= $value; } else { if (is_bool($value)) { $valueAsString .= $value ? 'TRUE' : 'FALSE'; } } $message .= " {$fieldName}: {$valueAsString} [codes: " . implode(', ', $errorCodes) . "]\n"; } return new self($message); }
/** * @param Record $record * @param string $fieldName * @param string $errorCode */ private function addErrorToStack(Record $record, $fieldName, $errorCode) { $record->getErrorStack()->add($fieldName, $errorCode); }