/** * Asserts that data are validation errors match an expected value when * validation given data for the Model * Calls the Model::validate() method and asserts validationErrors * * @param mixed $model Model being tested * @param array $data Data to validate * @param array $expectedErrors Expected errors keys * @return void */ public function assertValidationErrors($model, $data, $expectedErrors) { $this->_validData($model, $data, $validationErrors); $fail = array(); foreach ($validationErrors as $field => $errors) { if (!isset($expectedErrors[$field]) || $errors != $expectedErrors[$field]) { $fail[] = $field; } } $miss = array_diff(array_keys($expectedErrors), array_keys($validationErrors)); $this->addToAssertionCount(count($expectedErrors) - count($fail) - count($miss)); if (!empty($fail) || !empty($miss)) { parent::fail("Failed asserting that the correct validation errors were raised. " . "The following field(s) expected errors did not match:\n* " . implode("\n* ", array_merge($fail, $miss))); } }