/**
  * Test that ValidationException can be created with both a ValidationResult
  * and a custom message
  */
 public function testCreateWithComplexValidationResultAndMessage()
 {
     $result = new ValidationResult();
     $result->error('A spork is not a knife')->error('A knife is not a back scratcher');
     $exception = new ValidationException($result, 'An error has occurred', E_USER_WARNING);
     $this->assertEquals(E_USER_WARNING, $exception->getCode());
     $this->assertEquals('An error has occurred', $exception->getMessage());
     $this->assertEquals(false, $exception->getResult()->valid());
     $this->assertEquals('A spork is not a knife; A knife is not a back scratcher', $exception->getResult()->message());
 }
 /**
  * Generate a response object for a form validation error
  *
  * @param Form $form The source form
  * @param ValidationException $e The validation error message
  * @return SS_HTTPResponse
  * @throws SS_HTTPResponse_Exception
  */
 protected function generateValidationResponse($form, $e)
 {
     $controller = $this->getToplevelController();
     $form->sessionMessage($e->getResult()->message(), 'bad', false);
     $responseNegotiator = new PjaxResponseNegotiator(array('CurrentForm' => function () use(&$form) {
         return $form->forTemplate();
     }, 'default' => function () use(&$controller) {
         return $controller->redirectBack();
     }));
     if ($controller->getRequest()->isAjax()) {
         $controller->getRequest()->addHeader('X-Pjax', 'CurrentForm');
     }
     return $responseNegotiator->respond($controller->getRequest());
 }