2011-03-18 4 views
6

El siguiente conjunto de campo casilla forma Formtastic:casilla Formtastic params enviada de manera diferente por Carpincho que por aplicación real

<%= semantic_form_for @store do |f| %> 
    <%= f.inputs do %> 
    <%= f.input :services, :as => :check_boxes, :collection => Service.all %> 
    <% end -%> 
<% end -%> 

está enviando malas params para: servicios en una prueba de pepino utilizando capibara, por lo que la prueba falla, mientras que el aplicación real envía los correctos, que se procesa bien:

#cucumber steps using the boiler_plate capybara web_steps.rb: 
Given a "Mail Order" service 
...(steps for rest of the form)... 
When I check "Mail Order" 
And I press "Create Store" 
Then I should see "Store was successfully created." 
And I should see "Mail Order" 

#params sent by cucumber 
"store"=>{"services"=>["[\"4d8247ed7f5bfd2275000004\"]"] 

#params sent by app on manual test 
"store"=>{"services"=>["4d8247ed7f5bfd2275000004"]} 

Aunque el formulario hTML en sí se hace de la misma manera en ambos casos:

<input id="store_services_4d8247ed7f5bfd2275000004" name="store[services][]" type="checkbox" value="4d8247ed7f5bfd2275000004" /> 

Parece que en algún lugar durante la solicitud de creación de params, los pares clave/valor de formulario para ese campo se analizan de manera diferente cuando son enviados por Cucumber/Capybara.

¿Alguien más se encuentra con esto?

+0

Probablemente esa solución se convierta en una "respuesta": otras personas pueden buscar (y encontrar) este problema, pero omítanlo, pensando que no hay una solución. –

+0

No pude encontrar una manera de responder mi propia pregunta. Puede que no tenga suficientes privilegios? Busqué en el sitio meta respuestas sobre esto, pero no tuve suerte. – oliverbarnes

+0

Si está conectado, debe tener una gran caja justo debajo de estos comentarios. No importa si es tu propia pregunta o no. –

Respuesta

1

responder a mi propia pregunta:

consiguió un puntero de autor de Carpincho, Jonas Nicklas, que me llevó a this rack-test patch which hasn't been committed yet

Por ahora sólo estoy usando el tenedor y la rama donde vive el parche:

gem 'rack-test', :git => 'https://github.com/econsultancy/rack-test.git', :branch => 'econsultancy-20110119' 

Y eso hace el truco. Me imagino que este parche se fusionará muy pronto, ya que fue presentado hace un par de meses.

+0

Gracias por esta solución. Me imaginé que podría actualizar a una versión posterior de la prueba en rack con la solución, ya que hay dos versiones más recientes de prueba en rack. Pero las versiones 3.0.x de Rails dependen de la prueba en rack 0.5.7. Así que bundle se queja de que no se puede actualizar a ninguna versión posterior de la prueba en rack para la aplicación my rails 3.0. –

Cuestiones relacionadas