public function testFragmentsOverride()
 {
     $negotiator = new PjaxResponseNegotiator(array('alpha' => function () {
         return 'alpha response';
     }, 'beta' => function () {
         return 'beta response';
     }));
     $request = new HTTPRequest('GET', '/');
     $request->addHeader('X-Pjax', 'alpha');
     $request->addHeader('Accept', 'text/json');
     $response = $negotiator->setFragmentOverride(array('beta'))->respond($request);
     $json = json_decode($response->getBody());
     $this->assertFalse(isset($json->alpha));
     $this->assertObjectHasAttribute('beta', $json);
 }
 /**
  * Generate a response object for a form validation error
  *
  * @param Form $form The source form
  * @param ValidationException $e The validation error message
  * @return HTTPResponse
  * @throws 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());
 }