Permalink
Browse files

Resuelta issue 26 para webrat. No en capybara para expresiones regulares

  • Loading branch information...
1 parent fa7d13f commit 213b58a2b56db5cb0a6db9faed2accfad45b9fe6 Paco Guzman committed with May 6, 2010
View
8 features/es_ES/veo-los-siguientes-textos.feature
@@ -1,6 +1,7 @@
# language: es
Característica: veo (o no) una serie de textos expresados en step-table
+ @wip
Escenario: Veo (o no) los siguientes textos
########################################################################
# Patrón:
@@ -22,3 +23,10 @@ Característica: veo (o no) una serie de textos expresados en step-table
Y no debo ver los siguientes textos:
| Cucumber |
| Rocks |
+# Y debo ver los siguientes textos dentro de la etiqueta "div.navigation_links":
+# | Registro |
+# | Entra |
+# | Listado de todos los huertos |
+ Y no debo ver los siguientes textos dentro de la etiqueta "div.navigation_links":
+ | Mundo Pepino |
+ | app.welcome.title |
View
121 features/support/app/app/views/welcome/index.html.erb
@@ -3,67 +3,72 @@
<div id="interpolated"><%= t 'app.welcome.interpolated', :name => 'Nombre' %></div>
<p>Find me in app/views/welcome/index.html.erb</p>
<div class="navigation_links">
-<%= link_to 'Registro', :action => 'signup' %>
-<%= link_to '¡Entra!', new_session_path %>
-<%= link_to 'Listado de todos los huertos', orchards_path %>
+ <%= link_to 'Registro', :action => 'signup' %>
+ <%= link_to '¡Entra!', new_session_path %>
+ <%= link_to 'Listado de todos los huertos', orchards_path %>
</div>
<% form_tag({:action => :form_action}, :enctype => "multipart/form-data") do %>
- <div>
- <%= label_tag :login, "Nombre de usuario" %>
- <%= text_field_tag :login %>
- </div>
- <div>
- <%= label_tag :password, "Contraseña" %>
- <%= password_field_tag :password %>
- </div>
- <div>
- <%= label_tag :text_field, "Campo de texto" %>
- <%= text_field_tag :text_field %>
- </div>
- <div>
- <%= label_tag :textarea, "Biografía" %>
- <%= text_area_tag :textarea %>
- </div>
- <div>
- <%= radio_button_tag :nationality, "Española" %>
- <%= radio_button_tag :nationality, "Pakistaní" %>
- </div>
- <div>
- <%= label_tag :color, "Color" %>
- <%= radio_button_tag :color, "verde" %><label for="color_verde">Verde</label>
- <%= radio_button_tag :color, "rojo" %>
- <%= radio_button_tag :color, "gris" %>
- </div>
- <div>
- <%= check_box_tag :selected_check, "Seleccionado", true %>
+ <div>
+ <%= label_tag :login, "Nombre de usuario" %>
+ <%= text_field_tag :login %>
+ </div>
+ <div>
+ <%= label_tag :password, "Contraseña" %>
+ <%= password_field_tag :password %>
+ </div>
+ <div>
+ <%= label_tag :text_field, "Campo de texto" %>
+ <%= text_field_tag :text_field %>
+ </div>
+ <div>
+ <%= label_tag :textarea, "Biografía" %>
+ <%= text_area_tag :textarea %>
+ </div>
+ <div>
+ <%= radio_button_tag :nationality, "Española" %>
+ <%= radio_button_tag :nationality, "Pakistaní" %>
+ </div>
+ <div>
+ <%= label_tag :color, "Color" %>
+ <%= radio_button_tag :color, "verde" %>
+ <label for="color_verde">Verde</label>
+ <%= radio_button_tag :color, "rojo" %>
+ <%= radio_button_tag :color, "gris" %>
+ </div>
+ <div>
+ <%= check_box_tag :selected_check, "Seleccionado", true %>
<%= label_tag :selected_check, "Seleccionado" %>
- <%= check_box_tag :unselected_check, "Sin seleccionar", false %>
+ <%= check_box_tag :unselected_check, "Sin seleccionar", false %>
<%= label_tag :unselected_check, "Sin seleccionar" %>
- </div>
- <div>
- <%= label_tag :orchard_type, "Tipo de cultivo" %>
- <%= select_tag "orchard_type", options_for_select(['Mixto', 'Hortalizas', 'Frutales']) %>
- </div>
- <div>
- <%= label_tag :file_field, "Avatar" %>
- <%= file_field_tag :file_field %>
- </div>
- <div>
- <%= label :welcome, :preferred, 'Preferida' %><br />
- <%= datetime_select :welcome, :preferred, :start_year => 1992 %></div>
+ </div>
+ <div>
+ <%= label_tag :orchard_type, "Tipo de cultivo" %>
+ <%= select_tag "orchard_type", options_for_select(['Mixto', 'Hortalizas', 'Frutales']) %>
+ </div>
+ <div>
+ <%= label_tag :file_field, "Avatar" %>
+ <%= file_field_tag :file_field %>
+ </div>
+ <div>
+ <%= label :welcome, :preferred, 'Preferida' %>
+ <br/>
+ <%= datetime_select :welcome, :preferred, :start_year => 1992 %></div>
- <div>
- <%= label :welcome, :alternative, 'Alternativa' %><br />
- <%= datetime_select :welcome, :alternative, :start_year => 1992 %></div>
-
- <div>
- <%= label :welcome, :grape_harvest, 'Vendimia' %><br />
- <%= date_select :welcome, :grape_harvest, :start_year => 1992 %>
- </div>
- <div>
- <%= label :welcome, :pruning, 'Poda' %><br />
- <%= date_select :welcome, :pruning , :start_year => 1992 %>
- </div>
- <div><%= submit_tag( "Galleta de la Fortuna" ) %></div>
+ <div>
+ <%= label :welcome, :alternative, 'Alternativa' %>
+ <br/>
+ <%= datetime_select :welcome, :alternative, :start_year => 1992 %></div>
+
+ <div>
+ <%= label :welcome, :grape_harvest, 'Vendimia' %>
+ <br/>
+ <%= date_select :welcome, :grape_harvest, :start_year => 1992 %>
+ </div>
+ <div>
+ <%= label :welcome, :pruning, 'Poda' %>
+ <br/>
+ <%= date_select :welcome, :pruning, :start_year => 1992 %>
+ </div>
+ <div><%= submit_tag("Galleta de la Fortuna") %></div>
<% end %>
-<%= link_to 'Paginación', :page => ( params[:page] ? (params[:page].to_i % 2) + 1 : 2 ) %>
+<%= link_to 'Paginación', :page => (params[:page] ? (params[:page].to_i % 2) + 1 : 2) %>
View
9 lib/mundo_pepino/capybara/extensions.rb
@@ -127,4 +127,11 @@ def contain(content)
end
end
-World(Capextensions)
+World(Capextensions)
+
+module WithinHelpers
+ def with_scope(locator)
+ locator ? within(locator) { yield } : yield
+ end
+end
+World(WithinHelpers)
View
8 lib/mundo_pepino/es_ES/definitions.rb
@@ -213,9 +213,13 @@
end
end
-Entonces /^(#{_veo_o_no_}) los siguientes textos:$/i do |should, texts|
+Entonces /^(#{_veo_o_no_}) los siguientes textos(?: #{_dentro_de_} ['"]?(.+?)["']?)?:$/i do |should, selector, texts|
texts.raw.each do |row|
- Entonces "#{should} el texto #{row[0]}"
+ if selector
+ Entonces "#{should} el texto #{row[0]} dentro del selector #{selector}"
+ else
+ Entonces "#{should} el texto #{row[0]}"
+ end
end
end
View
10 lib/mundo_pepino/implementations.rb
@@ -74,8 +74,14 @@ def then_i_see_or_not_the_text(params)
if params[:selector].blank?
should_or_not_contain_text params
else
- within params[:selector] do
- should_or_not_contain_text params
+ if defined?(Capybara)
+ with_scope params[:selector] do
+ should_or_not_contain_text params
+ end
+ else
+ within params[:selector] do |content|
+ should_or_not_contain_text content, params
+ end
end
end
end
View
43 lib/mundo_pepino/implementations_api.rb
@@ -34,6 +34,14 @@ def field_for(model=nil, field = nil)
end
end
+ def hasify(should_or_not)
+ shouldify(should_or_not) == :should ? :have : :have_no
+ end
+
+ def not_hasify(should_or_not)
+ hasify(should_or_not) == :have ? :have_no : :have
+ end
+
def shouldify(should_or_not)
should_or_not =~ /^(#{MundoPepino::Matchers::Bites._should_})$/i ? :should : :should_not
end
@@ -269,12 +277,39 @@ def nested_field_prefix_prefix(parent_model, child_model)
"#{parent_model.name.underscore}_#{child_model.name.pluralize.underscore}_attributes"
end
- def should_or_not_contain_text(params)
+ # Used with capybara
+ def contain_text_or_regexp(text_or_regexp)
+ # TODO not support regexp -> based on cucumber web_steps.rb
+ text_or_regexp = text_or_regexp.to_unquoted.to_translated
+ if text_or_regexp.is_a?(String)
+ "content('#{text_or_regexp}')"
+ else
+ "xpath('//*', :text => /#{text_or_regexp}/)"
+ end
+ end
+
+ def should_or_not_contain_text(*args)
+ params = args.last.is_a?(Hash) ? args.pop : {}
+ content = args.empty? ? nil : args.first
+
# We can use response and contain with capybara due to capextensions
- response.send(
- shouldify(params[:should]),
- contain(params[:text].to_unquoted.to_translated.to_regexp))
+ if defined?(Capybara)
+ #"response.should have(?:_no)?_content(params[:text])"
+ #"response.should have(?:_no)?_xpath(, :text => params[:text])"
+ response.should eval("#{hasify(params[:should])}_#{contain_text_or_regexp(params[:text])}")
+ else
+ if content
+ content.send(
+ shouldify(params[:should]),
+ contain(params[:text].to_unquoted.to_translated.to_regexp))
+ else
+ response.send(
+ shouldify(params[:should]),
+ contain(params[:text].to_unquoted.to_translated.to_regexp))
+ end
+ end
end
end
end
+

0 comments on commit 213b58a

Please sign in to comment.