Ver índice de contenidos del libro

11.6. Indicando el método HTTP de un enlace

Ahora ya podemos probar el enlace "Publish" de forma sencilla:

$browser->info('  3.3 - On the preview page, you can publish the job')->
  createJob(array('position' => 'FOO1'))->
  click('Publish', array(), array('method' => 'put', '_with_csrf' => true))->
 
  with('propel')->begin()->
    check('JobeetJob', array(
      'position'     => 'FOO1',
      'is_activated' => true,
    ))->
  end()
;

Si te acuerdas del tutorial del día 10, el enlace "Publish" utiliza el método PUT de HTTP. Como los navegadores actuales no soportan las peticiones de tipo PUT, el helper link_to() convierte el enlace en un formulario con un poco de código JavaScript.

Como el navegador de pruebas no ejecuta código JavaScript, debemos indicar que el método es PUT pasándolo como tercer argumento del método click(). Además, el helper link_to() también incluye un token para realizar la protección frente a los ataques de tipo CSRF, por lo que debemos utilizar la opción _with_csrf para simular este token.

El proceso de probar el enlace "Delete" es muy similar:

$browser->info('  3.4 - On the preview page, you can delete the job')->
  createJob(array('position' => 'FOO2'))->
  click('Delete', array(), array('method' => 'delete', '_with_csrf' => true))->
 
  with('propel')->begin()->
    check('JobeetJob', array(
      'position' => 'FOO2',
    ), false)->
  end()
;