flights_gui_tests 0.0.30 → 0.0.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/features/step_definitions/checkout/checkout_steps.rb +39 -2
  3. data/features/step_definitions/checkout/verifications_steps.rb +6 -6
  4. data/features/step_definitions/page_steps.rb +1 -1
  5. data/features/step_definitions/results/filters_steps.rb +12 -17
  6. data/features/step_definitions/results/load_steps.rb +1 -1
  7. data/features/step_definitions/results/matrix_steps.rb +7 -3
  8. data/features/step_definitions/results/new_filters_steps.rb +331 -0
  9. data/features/step_definitions/thanks/thanks_steps.rb +15 -3
  10. data/features/support/classes/duracion.rb +43 -0
  11. data/features/support/env.rb +2 -0
  12. data/features/support/hooks.rb +1 -1
  13. data/features/support/modules/checkout/datos_de_facturacion.rb +18 -1
  14. data/features/support/modules/results/matrix/matrix_fare_chart.rb +1 -1
  15. data/features/support/modules/results/matrix/matrix_price.rb +1 -0
  16. data/features/support/modules/results/new_filters.rb +145 -0
  17. data/features/support/pages/all_pages.rb +4 -4
  18. data/features/support/pages/results/search_page.rb +1 -0
  19. data/features/support/pages/thanks/thanks_page.rb +3 -0
  20. data/features/tests/checkout/agency.feature +1 -0
  21. data/features/tests/checkout/book_ok.feature +2 -1
  22. data/features/tests/checkout/cac.feature +2 -1
  23. data/features/tests/checkout/cash_payment.feature +3 -2
  24. data/features/tests/checkout/compras_duplicadas.feature +2 -1
  25. data/features/tests/checkout/cupones.feature +2 -1
  26. data/features/tests/checkout/error_messages.feature +3 -3
  27. data/features/tests/checkout/fast_checkout.feature +2 -1
  28. data/features/tests/checkout/low_cost.feature +2 -1
  29. data/features/tests/checkout/online_payment.feature +3 -2
  30. data/features/tests/checkout/price_jump.feature +3 -2
  31. data/features/tests/checkout/providers.feature +2 -1
  32. data/features/tests/checkout/seguros.feature +2 -1
  33. data/features/tests/results/matrix/matrix_price.feature +2 -2
  34. data/features/tests/results/new_filters.feature +104 -0
  35. data/flights_gui_tests.gemspec +1 -1
  36. data/henry-context.yml +44 -0
  37. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e56090f01a0de8d04b593d31071889831038d78
4
- data.tar.gz: e2508721ccf42af0613d3911f89e98a16d3a73c7
3
+ metadata.gz: 4b4708f3aca9fe2e7758885b634952ec57f2cfa9
4
+ data.tar.gz: 989169155f7f084ace8f94d41ec93eb4ee4bec4a
5
5
  SHA512:
6
- metadata.gz: cf18e2e0f019e665f6390c3f7d500ff9d846861ab4c6c6dddf64aedbb968460edb8b16ea6ef0541e7c00af23e71609f4ed2f644efafdad30e4cb7aed2175e15c
7
- data.tar.gz: 7ed654ed097300544d4d0554ada89c2ce857e91ce9bb692acdb0fdb18537cb3f6e227833998d75f3d055fd05a97f6849312306c608a18030b958f0adcbdd5a33
6
+ metadata.gz: b46f69c9c8670c96a390b71411082fd90a07a8550e60a6d47d6b04a88dd91ed91af77b68a8d7c5d07e731e34bb619da5e3a616ebfdb6a3768609cc3ebed8aaf0
7
+ data.tar.gz: e14638a73b15342546aea0792b0d3224b63b75d5e89a6731686ec4bc87d7f9152bcf600ff8c3236398798f47a8e40498a876701662e325f36629f56dc2bfeeea
@@ -19,7 +19,7 @@ Entonces(/^elijo un itinerario del popup de no disponibilidad$/) do
19
19
  step "verifico que la pagina no rompa"
20
20
  step "cargo los pasajeros"
21
21
  step "cargo los datos de la tarjeta"
22
- step "si el site es \"AR|MX|PE\", cargo los datos de facturacion"
22
+ step "si el site es \"AR|MX|PE|BR\", cargo los datos de facturacion"
23
23
  step "cargo los datos de contacto"
24
24
  step "acepto y compro"
25
25
  step "espero que termine el pedido de compra"
@@ -37,6 +37,7 @@ Entonces(/^elijo un itinerario para reserva CAC del popup de no disponibilidad$/
37
37
  step "verifico que la pagina no rompa"
38
38
  step "cargo los pasajeros"
39
39
  step "completo los datos para reservas CAC"
40
+ step "si el site es \"AR|MX|PE|BR\", cargo los datos de facturacion"
40
41
  step "cargo los datos de contacto"
41
42
  step "acepto y compro"
42
43
  step "espero que termine el pedido de compra"
@@ -54,7 +55,43 @@ Entonces(/^elijo un itinerario para fast checkout del popup de no disponibilidad
54
55
  step "verifico que la pagina no rompa"
55
56
  step "cargo los pasajeros"
56
57
  step "elijo una tarjeta ya guardada"
57
- step "si el site es \"AR|MX|PE\", cargo los datos de facturacion"
58
+ step "si el site es \"AR|MX|PE|BR\", cargo los datos de facturacion"
59
+ step "cargo los datos de contacto"
60
+ step "acepto y compro"
61
+ step "espero que termine el pedido de compra"
62
+ step "verifico si no trae errores"
63
+ step "si aparece el popup de no disponibilidad, elijo un itinerario para fast checkout del popup de no disponibilidad"
64
+ end
65
+
66
+ Entonces(/^elijo un itinerario para pago online del popup de no disponibilidad$/) do
67
+ @popup_no_disponibilidad_page.sumar_aparicion
68
+ pending("La cantidad de compras supero las #{@popup_no_disponibilidad_page.apariciones} apariciones") if @popup_no_disponibilidad_page.apariciones > 4
69
+ @popup_no_disponibilidad_page.itinerario_element.when_visible(timeout=60)
70
+ @popup_no_disponibilidad_page.cargar_itinerarios
71
+ @itinerario_checkout = @popup_no_disponibilidad_page.elegir_itinerario(0)
72
+ step "verifico que ingrese al checkout"
73
+ step "verifico que la pagina no rompa"
74
+ step "cargo los pasajeros"
75
+ step "completo el formulario de pago online"
76
+ step "si el site es \"AR|MX|PE|BR\", cargo los datos de facturacion"
77
+ step "cargo los datos de contacto"
78
+ step "acepto y compro"
79
+ step "espero que termine el pedido de compra"
80
+ step "verifico si no trae errores"
81
+ step "si aparece el popup de no disponibilidad, elijo un itinerario para fast checkout del popup de no disponibilidad"
82
+ end
83
+
84
+ Entonces(/^elijo un itinerario para pago por deposito del popup de no disponibilidad$/) do
85
+ @popup_no_disponibilidad_page.sumar_aparicion
86
+ pending("La cantidad de compras supero las #{@popup_no_disponibilidad_page.apariciones} apariciones") if @popup_no_disponibilidad_page.apariciones > 4
87
+ @popup_no_disponibilidad_page.itinerario_element.when_visible(timeout=60)
88
+ @popup_no_disponibilidad_page.cargar_itinerarios
89
+ @itinerario_checkout = @popup_no_disponibilidad_page.elegir_itinerario(0)
90
+ step "verifico que ingrese al checkout"
91
+ step "verifico que la pagina no rompa"
92
+ step "cargo los pasajeros"
93
+ step "completo el formulario de deposito"
94
+ step "si el site es \"AR|MX|PE|BR\", cargo los datos de facturacion"
58
95
  step "cargo los datos de contacto"
59
96
  step "acepto y compro"
60
97
  step "espero que termine el pedido de compra"
@@ -52,20 +52,20 @@ Y(/^verifico que los datos cargados sean mostrados correctamente al lado del bot
52
52
  data = ["A","B","C","D","E","F","G","H","I","J","k"]
53
53
  index = 0
54
54
  @page.manage_data.adt.times do |adulto|
55
- (doc/"div.ticket-left li.passenger span.names span.first-name")[index].inner_text.should equal("Diego QA#{data[index]}")
56
- (doc/"div.ticket-left li.passenger span.names span.last-name")[index].inner_text.should equal("Romero#{data[index]}")
55
+ (doc/"div.ticket-left li.passenger span.names span.first-name span.value")[index].inner_text.should equal("Diego QA#{data[index]}")
56
+ (doc/"div.ticket-left li.passenger span.names span.last-name span.value")[index].inner_text.should equal("Romero#{data[index]}")
57
57
  (doc/"div.ticket-left li.passenger span.document span.document-number")[index].inner_text.should equal("3245673#{index}") if (doc/"div.ticket-left li.passenger span.document span.document-number")[index]
58
58
  index += 1
59
59
  end
60
60
  @page.manage_data.cnn.times do |nino|
61
- (doc/"div.ticket-left li.passenger span.names span.first-name")[index].inner_text.should equal("Martin QA#{data[index]}")
62
- (doc/"div.ticket-left li.passenger span.names span.last-name")[index].inner_text.should equal("Diez jr#{data[index]}")
61
+ (doc/"div.ticket-left li.passenger span.names span.first-name span.value")[index].inner_text.should equal("Martin QA#{data[index]}")
62
+ (doc/"div.ticket-left li.passenger span.names span.last-name span.value")[index].inner_text.should equal("Diez jr#{data[index]}")
63
63
  (doc/"div.ticket-left li.passenger span.document span.document-number")[index].inner_text.should equal("4245663#{index}") if (doc/"div.ticket-left li.passenger span.document span.document-number")[index]
64
64
  index += 1
65
65
  end
66
66
  @page.manage_data.inf.times do |bebe|
67
- (doc/"div.ticket-left li.passenger span.names span.first-name")[index].inner_text.should equal("Maribel QA#{data[index]}")
68
- (doc/"div.ticket-left li.passenger span.names span.last-name")[index].inner_text.should equal("Dias Herr jrb#{data[index]}")
67
+ (doc/"div.ticket-left li.passenger span.names span.first-name span.value")[index].inner_text.should equal("Maribel QA#{data[index]}")
68
+ (doc/"div.ticket-left li.passenger span.names span.last-name span.value")[index].inner_text.should equal("Dias Herr jrb#{data[index]}")
69
69
  (doc/"div.ticket-left li.passenger span.document span.document-number")[index].inner_text.should equal("4249966#{index}") if (doc/"div.ticket-left li.passenger span.document span.document-number")[index]
70
70
  index += 1
71
71
  end
@@ -18,5 +18,5 @@ Entonces(/^seteo el proveedor "(.*)"$/) do |provider|
18
18
  end
19
19
 
20
20
  Entonces(/^es ida y vuelta$/) do
21
- @page.manage_data.description.downcase=="roundtrip"
21
+ @page.manage_data.description.should equal("roundtrip")
22
22
  end
@@ -13,7 +13,7 @@ end
13
13
  Cuando(/^elijo una aerolinea a aplicar$/) do
14
14
  doc = Hpricot.parse(@page.html)
15
15
  options = (doc/"div.ux-flights-filter-airlines")[0]
16
- options = (options/"ul.items label").reject{|option| option.attributes["class"].match(/selected|disabled|enabled/)}
16
+ options = (options/"ul.items label").reject{|option| option.attributes["class"].match(/selected|disabled|enabled/) or option.attributes["for"]=="airport-outbound-unique"}
17
17
  @airline = options[rand(options.length)]
18
18
  @total = (@airline/"span.total").inner_text.strip.to_i
19
19
  end
@@ -57,7 +57,7 @@ Cuando(/^elijo un aeropuerto (outbound|inbound) a aplicar$/) do |_class|
57
57
  else
58
58
  _clase = 'destiny'
59
59
  end
60
- options = (doc/"div.ux-flights-filter-#{_clase}airports//label").reject{|option| option.attributes["class"].match(/selected|disabled/) or option.attributes["for"].match(/unique-airport/)}
60
+ options = (doc/"div.ux-flights-filter-#{_clase}airports label").reject{|option| option.attributes["class"].match(/selected|disabled/) or option.attributes["for"].match("unique")}
61
61
  @airport = options[rand(options.length)]
62
62
  @total = (@airport/"span.total").inner_text.strip.to_i
63
63
  end
@@ -92,7 +92,7 @@ Cuando(/^elijo una escala a aplicar$/) do
92
92
  end
93
93
 
94
94
  Entonces(/^filtro por escala$/) do
95
- @page.browser.checkbox(:id,(@stop/"input").first.attributes['id']).set
95
+ @page.browser.checkbox(:id,(@stop/"input").first.attributes['id']).set
96
96
  end
97
97
 
98
98
  Entonces(/^verifico que los contadores respecto a las escalas sean correctos$/) do
@@ -189,16 +189,13 @@ end
189
189
 
190
190
  Cuando(/^elijo una duracion (outbound|inbound) a aplicar$/) do |_class|
191
191
  unless((_class=="inbound")and(@page.tipo_de_busqueda=="oneway"))
192
- box=@page.browser.div(:class,"ux-common-filter-section ux-common-filter-slider ux-flights-filter-hours-slider ux-flights-filter-duration-slider ux-flights-filter-#{_class}duration-slider")
193
- @from_time=box.li(:class,'ux-common-filter-hour-min').spans.first.text
194
- puts @from_time
195
- @to_time=box.li(:class,'ux-common-filter-hour-max').spans.first.text
196
- puts @to_time
192
+ box=@page.browser.div(:class,"flights-filter ux-common-filter-section ux-common-filter-slider ux-flights-filter-hours-slider ux-flights-filter-duration-slider ux-flights-filter-#{_class}duration-slider")
193
+ @from_time=box.span(:class,'flights-slider-min').spans.first.text
194
+ @to_time=box.span(:class,'flights-slider-max').spans.first.text
197
195
  diff="#{@to_time.split(':')[0].to_i-1}:#{@from_time.split(':')[1]}"
198
- puts diff
199
196
  while(@to_time!=diff and @to_time!=@from_time)
200
- box.link(:class,'ui-slider-handle ui-state-default ui-corner-all ui-slider-handle-max').send_keys :left
201
- @to_time=box.li(:class,'ux-common-filter-hour-max').spans.first.text
197
+ box.link(:class,'ui-slider-handle ui-state-default ui-corner-all ui-slider-handle-min').send_keys :left
198
+ @to_time=box.span(:class,'flights-slider-max').spans.first.text
202
199
  end
203
200
  end
204
201
  end
@@ -228,18 +225,18 @@ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de du
228
225
  (time[0].gsub(/\D/,'').to_i >= @from_time.split(':')[0].to_i).should be_true
229
226
  (time[0].gsub(/\D/,'').to_i <= @to_time.split(':')[0].to_i).should be_true
230
227
  if ((time[0].gsub(/\D/,'').to_i == @from_time.split(':')[0].to_i)and(time[1]))
231
- (time[1].gsub(/\D/,'').to_i >= @from_time.split(':')[1].to_i).should be_true
228
+ time[1].gsub(/\D/,'').to_i.should es_mayor_igual_que(@from_time.split(':')[1].to_i)
232
229
  end
233
230
  if ((time[0].gsub(/\D/,'').to_i == @to_time.split(':')[0].to_i)and(time[1]))
234
- (time[1].gsub(/\D/,'').to_i <= @to_time.split(':')[1].to_i).should be_true
231
+ time[1].gsub(/\D/,'').to_i.should es_menor_igual_que(@to_time.split(':')[1].to_i)
235
232
  end
236
233
  end
237
234
  end
238
235
  end
239
236
 
240
237
  Entonces(/^limpio el filtro de duracion (outbound|inbound)$/) do |_class|
241
- unless((_class=="inbound")and(@page.tipo_de_busqueda=="oneway"))
242
- box=@page.browser.div(:class,"ux-common-filter-section ux-common-filter-slider ux-flights-filter-hours-slider ux-flights-filter-duration-slider ux-flights-filter-#{_class}duration-slider")
238
+ unless((_class.downcase=="inbound")and(@page.tipo_de_busqueda.downcase=="oneway"))
239
+ box=@page.browser.div(:class,"flights-filter ux-common-filter-section ux-common-filter-slider ux-flights-filter-hours-slider ux-flights-filter-duration-slider ux-flights-filter-#{_class}duration-slider")
243
240
  box.link(:class,'ux-common-filter-reset').click
244
241
  end
245
242
  end
@@ -255,8 +252,6 @@ Cuando(/^Recupero los precios limites de la lista$/) do
255
252
  doc = Hpricot.parse(@page.html)
256
253
  @price_down=Price.new((doc/"div#clusters div.cluster #{@li_class} span[@class='price-currency #{Helpers.currency(AllPages.site.upcase)} '] span.currency").first.inner_text + " " + (doc/"div#clusters div.cluster #{@li_class} span[@class='price-currency #{Helpers.currency(AllPages.site.upcase)} '] span.amount").first.inner_text).value
257
254
  @price_up=Price.new((doc/"div#clusters div.cluster #{@li_class} span[@class='price-currency #{Helpers.currency(AllPages.site.upcase)} '] span.currency")[-2].inner_text + " " + (doc/"div#clusters div.cluster #{@li_class} span[@class='price-currency #{Helpers.currency(AllPages.site.upcase)} '] span.amount")[-2].inner_text).value
258
- puts @price_down
259
- puts @price_up
260
255
  end
261
256
 
262
257
  Entonces(/^filtro por precio mayor$/) do
@@ -53,7 +53,7 @@ Entonces(/^verifico el nuevo loader$/) do
53
53
  unless text.empty?
54
54
  unless text.no_accents.downcase.match("searching flights to #{@page.manage_data.city_to_1.name(AllPages.site).downcase} by|buscando vuelos hacia #{@page.manage_data.city_to_1.name(AllPages.site).downcase} por|procurando voos a #{@page.manage_data.city_to_1.name(AllPages.site).downcase} por")
55
55
  airlines=@page.manage_data.get_indec_airlines($ENV)
56
- airlines.should is_empty
56
+ airlines.should is_empty?
57
57
  end
58
58
  else
59
59
  puts "Fallo la validacion en el loader con el texto de aerolineas"
@@ -126,7 +126,7 @@ Cuando(/^verificar que filtre por una celda de la matriz$/) do
126
126
  end
127
127
 
128
128
  Entonces(/^no se muestra la matriz de precios$/) do
129
- (!@page.tab_matriz_precio_element.present? and !@page.alerta_matriz_precio.present?).should be_true
129
+ (!@page.tab_matriz_precio_sin_popup_element.present? and !@page.tab_matriz_precio_element.present?).should be_true
130
130
  end
131
131
 
132
132
  Entonces(/^verifico que se muestre la matriz de precios$/) do
@@ -138,6 +138,10 @@ Entonces(/^verifico que se muestre la matriz de precios$/) do
138
138
  @page.tab_matriz_precio_element.click
139
139
  sleep(2)
140
140
  end
141
+ if @page.tab_matriz_precio_sin_popup_element.present?
142
+ @page.tab_matriz_precio_sin_popup_element.click
143
+ sleep(2)
144
+ end
141
145
  @page.matriz_precio_element.should visible
142
146
  end
143
147
 
@@ -223,9 +227,9 @@ Entonces(/^realizo las busquedas para recargar la matriz$/) do
223
227
  [0,1,2,3].each do |y|
224
228
  @page.manage_data.set_new_date(@page.manage_data.date_from_1,@page.manage_data.date_to_1+1)
225
229
  begin
226
- HTTParty.get(@page.manage_data.generate_url_results_search.gsub(/results/,"data/search") + "/TOTALFARE/ASCENDING/NA/NA/NA/NA/NA?hashForData=#{Digest::MD5.hexdigest(@search.generate_url_results_search+'despegar')}",:headers => {"referer" => @page.manage_data.generate_url_results_search})
230
+ HTTParty.get(@page.manage_data.generate_url_results_search.gsub(/results/,"data/search") + "/TOTALFARE/ASCENDING/NA/NA/NA/NA/NA?hashForData=#{Digest::MD5.hexdigest(@page.manage_data.generate_url_results_search+'despegar')}",:headers => {"referer" => @page.manage_data.generate_url_results_search})
227
231
  rescue Errno::ECONNRESET,Timeout::Error
228
- HTTParty.get(@page.manage_data.generate_url_results_search.gsub(/results/,"data/search") + "/TOTALFARE/ASCENDING/NA/NA/NA/NA/NA?hashForData=#{Digest::MD5.hexdigest(@search.generate_url_results_search+'despegar')}",:headers => {"referer" => @page.manage_data.generate_url_results_search})
232
+ HTTParty.get(@page.manage_data.generate_url_results_search.gsub(/results/,"data/search") + "/TOTALFARE/ASCENDING/NA/NA/NA/NA/NA?hashForData=#{Digest::MD5.hexdigest(@page.manage_data.generate_url_results_search+'despegar')}",:headers => {"referer" => @page.manage_data.generate_url_results_search})
229
233
  end
230
234
  end
231
235
  @page.manage_data.set_new_date(@page.manage_data.date_from_1+1,date)
@@ -0,0 +1,331 @@
1
+ # encoding: utf-8
2
+ Cuando(/^elijo una aerolinea a aplicar - filtros nuevo -$/) do
3
+ if @page.filtro_aerolineas_visible_element.present?
4
+ @page.filtro_aerolineas_visible_element.click
5
+ else
6
+ @page.ver_filtro(@page.ver_filtro_aerolineas_visible_element)
7
+ end
8
+ @aerolinea = @page.opciones_aerolineas_elements[rand(@page.opciones_aerolineas_elements.size)]
9
+ end
10
+
11
+ Entonces(/^filtro por aerolinea - filtros nuevo -$/) do
12
+ @aerolinea.click
13
+ @page.aplicar_filtros_element.click
14
+ end
15
+
16
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de aerolineas - filtros nuevo -$/) do
17
+ group_airlines = [["UA","CM","AM","US","AA","DL"],["LA","4M","XL","4C","JJ","PZ"],["AV","TA","LR"]]
18
+ doc = Hpricot.parse(@page.html)
19
+ airlines = []
20
+ (doc/"div#clusters div.cluster ul.itineraries-group").each do |itineraries|
21
+ airlines += (itineraries/"li.logo img").collect{|img| img.attributes['src'].match(/\/(.{1,7})\.png/)[1]}
22
+ airlines += (itineraries/"li.airlines img").collect{|img| img.attributes['src'].match(/\/(.{1,7})\.png/)[1]}
23
+ airlines += (itineraries/"li.airlinesShort img").collect{|img| img.attributes['src'].match(/\/(.{1,7})\.png/)[1]}
24
+ group_airlines.each{|airlines_tmp| airlines.concat(airlines_tmp) if airlines_tmp.include?(@aerolinea.value)}
25
+ end
26
+ airlines.should include?(@aerolinea.value)
27
+ end
28
+
29
+ Cuando(/^limpio el filtro de aerolineas - filtros nuevo -$/) do
30
+ @page.remover_filtro_de_aerolinea(@aerolinea.value).click
31
+ @page.aplicar_filtros_element.click
32
+ end
33
+
34
+ Cuando(/^elijo un aeropuerto de origen a aplicar - filtros nuevo -$/) do
35
+ if @page.filtro_aeropuertos_visible_element.present?
36
+ @page.filtro_aeropuertos_visible_element.click
37
+ else
38
+ @page.ver_filtro(@page.ver_filtro_aeropuertos_visible_element)
39
+ end
40
+ @aeropuerto = @page.opciones_aeropuerto_origen_elements[rand(@page.opciones_aeropuerto_origen_elements.size)]
41
+ end
42
+
43
+ Cuando(/^elijo un aeropuerto de destino a aplicar - filtros nuevo -$/) do
44
+ if @page.filtro_aeropuertos_visible_element.present?
45
+ @page.filtro_aeropuertos_visible_element.click unless @page.filtros_aeropuerto_element.present?
46
+ else
47
+ @page.ver_filtro(@page.ver_filtro_aeropuertos_visible_element)
48
+ end
49
+ @aeropuerto = @page.opciones_aeropuerto_destino_elements[rand(@page.opciones_aeropuerto_destino_elements.size)]
50
+ end
51
+
52
+ Entonces(/^filtro por aeropuerto - filtros nuevo -$/) do
53
+ @aeropuerto.click
54
+ @page.aplicar_filtros_element.click
55
+ end
56
+
57
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de aeropuertos de origen - filtros nuevo -$/) do
58
+ doc = Hpricot.parse(@page.html)
59
+ @aeropuerto.value.strip.should equal((doc/"div#clusters div.cluster div.outbound span.airport a").first.inner_text.strip)
60
+ end
61
+
62
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de aeropuertos de destino - filtros nuevo -$/) do
63
+ doc = Hpricot.parse(@page.html)
64
+ @aeropuerto.value.strip.should equal((doc/"div#clusters div.cluster div.inbound span.airport a").first.inner_text.strip)
65
+ end
66
+
67
+ Cuando(/^limpio el filtro de aeropuertos de origen - filtros nuevo -$/) do
68
+ @page.remover_filtro_de_aeropuerto_origen(@aeropuerto.value).click
69
+ @page.aplicar_filtros_element.click
70
+ end
71
+
72
+ Cuando(/^limpio el filtro de aeropuertos de destino - filtros nuevo -$/) do
73
+ @page.remover_filtro_de_aeropuerto_destino(@aeropuerto.value).click
74
+ @page.aplicar_filtros_element.click
75
+ end
76
+
77
+ Cuando(/^elijo una escala a aplicar - filtros nuevo -$/) do
78
+ if @page.filtro_escalas_visible_element.present?
79
+ @page.filtro_escalas_visible_element.click
80
+ else
81
+ @page.ver_filtro(@page.ver_filtro_escalas_visible_element)
82
+ end
83
+ escalas_habilitadas = @page.opciones_escalas_elements.reject{|escala| escala.class_name.match(/ux-common-filter-disabled/)}
84
+ @escalas = escalas_habilitadas[rand(escalas_habilitadas.size)]
85
+ end
86
+
87
+ Entonces(/^filtro por escala - filtros nuevo -$/) do
88
+ @escalas.click
89
+ @page.aplicar_filtros_element.click
90
+ end
91
+
92
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de escalas - filtros nuevo -$/) do
93
+ doc = Hpricot.parse(@page.html)
94
+ (doc/"div#clusters div.cluster li.stops").each do |stop|
95
+ applied_stop = @page.cantidad_de_escalas(@escalas.value)
96
+ stop_displayed = stop.inner_text.gsub(/\D/,'').strip.to_i
97
+ if applied_stop == 2
98
+ (applied_stop<=>stop_displayed).should be_true
99
+ elsif applied_stop == 1
100
+ (applied_stop>=stop_displayed).should be_true
101
+ else
102
+ applied_stop.should equal(stop_displayed)
103
+ end
104
+ end
105
+ end
106
+
107
+ Cuando(/^limpio el filtro de escalas - filtros nuevo -$/) do
108
+ @page.remover_filtro_de_escalas(@escalas.value).click
109
+ @page.aplicar_filtros_element.click
110
+ end
111
+
112
+ Cuando(/^elijo un horario a aplicar - filtros nuevo -$/) do
113
+ if @page.filtro_horarios_visible_element.present?
114
+ @page.filtro_horarios_visible_element.click unless @page.filtros_horarios_element.present?
115
+ else
116
+ @page.ver_filtro(@page.ver_filtro_horarios_visible_element)
117
+ end
118
+ doc = Hpricot.parse(@page.html)
119
+ options = (doc/"div#inline-filters-detail-time div.inline-filters-slider-panel")
120
+ options = (options[0]/"ul.hour-filter-range-links li")
121
+ @time = options[rand(options.length)]
122
+ end
123
+
124
+ Entonces(/^filtro por horario de ida - filtros nuevo -$/) do
125
+ @page.browser.div(:id,'inline-filters-detail-time').div(:class=>"inline-filters-slider-panel",:index=>0).link(:text,@time.inner_text).click
126
+ @page.aplicar_filtros_element.click
127
+ end
128
+
129
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de horario de ida - filtros nuevo -$/) do
130
+ doc = Hpricot.parse(@page.html)
131
+ if @page.remover_ultima_accion_element.present?
132
+ puts "Disculpe, no encontramos vuelos con el último criterio que ha seleccionado."
133
+ else
134
+ case (@time/"a").inner_text.strip
135
+ when "Mañana"
136
+ maxx, min = Time.parse("12:00"), Time.parse("05:00")
137
+ when "Manhã"
138
+ maxx, min = Time.parse("12:00"), Time.parse("05:00")
139
+ when "Morning"
140
+ maxx, min = Time.parse("12:00"), Time.parse("05:00")
141
+ when "Tarde"
142
+ maxx, min = Time.parse("19:00"), Time.parse("12:00")
143
+ when "Afternoon"
144
+ maxx, min = Time.parse("19:00"), Time.parse("12:00")
145
+ when "Noche"
146
+ maxx, min = Time.parse("00:00")+(24*60*60),Time.parse("19:00")
147
+ when "Noite"
148
+ maxx, min = Time.parse("00:00")+(24*60*60),Time.parse("19:00")
149
+ when "Night"
150
+ maxx, min = Time.parse("00:00")+(24*60*60),Time.parse("19:00")
151
+ when "Madrugada"
152
+ maxx, min = Time.parse("05:00"),Time.parse("00:00")
153
+ when "Dawn"
154
+ maxx, min = Time.parse("05:00"),Time.parse("00:00")
155
+ end
156
+ (doc/"div#clusters div.cluster div.outbound ul.itineraries-group li.itinerary").each do |itineraries|
157
+ hour = Time.parse((itineraries/"li.leave span.hour").inner_text.strip)
158
+ (hour <= maxx and hour >= min).should be_true
159
+ end
160
+ end
161
+ end
162
+
163
+ Cuando(/^limpio el filtro de horario de ida - filtros nuevo -$/) do
164
+ @page.remover_filtro_de_horario_de_ida_element.click
165
+ @page.aplicar_filtros_element.click
166
+ end
167
+
168
+ Entonces(/^filtro por horario de vuelta - filtros nuevo -$/) do
169
+ @page.browser.div(:id,'inline-filters-detail-time').div(:class=>"inline-filters-slider-panel",:index=>1).link(:text,@time.inner_text).click
170
+ @page.aplicar_filtros_element.click
171
+ end
172
+
173
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de horario de vuelta - filtros nuevo -$/) do
174
+ doc = Hpricot.parse(@page.html)
175
+ if @page.remover_ultima_accion_element.present?
176
+ puts "Disculpe, no encontramos vuelos con el último criterio que ha seleccionado."
177
+ else
178
+ case (@time/"a").inner_text.strip
179
+ when "Mañana"
180
+ maxx, min = Time.parse("12:00"), Time.parse("05:00")
181
+ when "Manhã"
182
+ maxx, min = Time.parse("12:00"), Time.parse("05:00")
183
+ when "Morning"
184
+ maxx, min = Time.parse("12:00"), Time.parse("05:00")
185
+ when "Tarde"
186
+ maxx, min = Time.parse("19:00"), Time.parse("12:00")
187
+ when "Afternoon"
188
+ maxx, min = Time.parse("19:00"), Time.parse("12:00")
189
+ when "Noche"
190
+ maxx, min = Time.parse("00:00")+(24*60*60),Time.parse("19:00")
191
+ when "Noite"
192
+ maxx, min = Time.parse("00:00")+(24*60*60),Time.parse("19:00")
193
+ when "Night"
194
+ maxx, min = Time.parse("00:00")+(24*60*60),Time.parse("19:00")
195
+ when "Madrugada"
196
+ maxx, min = Time.parse("05:00"),Time.parse("00:00")
197
+ when "Dawn"
198
+ maxx, min = Time.parse("05:00"),Time.parse("00:00")
199
+ end
200
+ (doc/"div#clusters div.cluster div.inbound ul.itineraries-group li.itinerary").each do |itineraries|
201
+ hour = Time.parse((itineraries/"li.leave span.hour").inner_text.strip)
202
+ (hour <= maxx and hour >= min).should be_true
203
+ end
204
+ end
205
+ end
206
+
207
+ Cuando(/^limpio el filtro de horario de vuelta - filtros nuevo -$/) do
208
+ @page.remover_filtro_de_horario_de_vuelta_element.click
209
+ @page.aplicar_filtros_element.click
210
+ end
211
+
212
+ Cuando(/^recupero los precios limites de la lista - filtros nuevo -$/) do
213
+ if @page.filtro_precio_visible_element.present?
214
+ @page.filtro_precio_visible_element.click unless @page.filtros_precio_element.present?
215
+ else
216
+ @page.ver_filtro(@page.ver_filtro_precio_visible_element)
217
+ end
218
+ @price_down=Price.new(@page.valor_minimo(@page.filtros_precio_element).text).value
219
+ @price_up=Price.new(@page.valor_maximo(@page.filtros_precio_element).text).value
220
+ end
221
+
222
+ Entonces(/^filtro por precio mayor - filtros nuevo -$/) do
223
+ @page.execute_script("javascript:void($('#inline-filters-detail-price .price-max').val(''))")
224
+ @page.nuevo_filtro_precio_mayor_element.set(@price_up+3)
225
+ price=@page.nuevo_filtro_precio_mayor_element.value.to_i
226
+ while(price>@price_up)
227
+ @page.slider_nuevo_precio_mayor_element.send_keys :left
228
+ price=@page.nuevo_filtro_precio_mayor_element.value.to_i
229
+ end
230
+ @price_up=price
231
+ @page.aplicar_filtros_element.click
232
+ step "espero que termine de cargar la pagina de resultados"
233
+ end
234
+
235
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de precio - filtros nuevo -$/) do
236
+ doc = Hpricot.parse(@page.html)
237
+ @page.cargar_itinerarios
238
+ @page.datos_de_itinerarios.each do |itinerario|
239
+ if AllPages.site.match("MX|UY|PE|BR|CR|PA")
240
+ itinerario.tarifas['tarifa_adulto'].value.should es_mayor_igual_que(@price_down)
241
+ itinerario.tarifas['tarifa_adulto'].value.should es_menor_igual_que(@price_up)
242
+ else
243
+ itinerario.tarifas['total'].value.should es_mayor_igual_que(@price_down)
244
+ itinerario.tarifas['total'].value.should es_menor_igual_que(@price_up)
245
+ end
246
+ end
247
+ end
248
+
249
+ Entonces(/^filtro por precio menor - filtros nuevo -$/) do
250
+ @page.execute_script("javascript:void($('#inline-filters-detail-price .price-min').val(''))")
251
+ @page.nuevo_filtro_precio_menor_element.set(@price_down-2)
252
+ price=@page.nuevo_filtro_precio_menor_element.value.to_i
253
+ while(price<@price_down)
254
+ @page.slider_nuevo_precio_menor_element.send_keys :right
255
+ price=@page.filtro_precio_menor_element.value.to_i
256
+ end
257
+ @price_down=price
258
+ @page.aplicar_filtros_element.click
259
+ step "espero que termine de cargar la pagina de resultados"
260
+ end
261
+
262
+ Cuando(/^limpio el filtro de precio - filtros nuevo -$/) do
263
+ @page.remover_filtro_de_precio_element.click
264
+ @page.aplicar_filtros_element.click
265
+ end
266
+
267
+ Cuando(/^elijo una duracion de salida a aplicar - filtros nuevo -$/) do
268
+ if @page.filtro_duracion_visible_element.present?
269
+ @page.filtro_duracion_visible_element.click unless @page.filtros_duracion_element.present?
270
+ else
271
+ @page.ver_filtro(@page.ver_filtro_duracion_visible_element)
272
+ end
273
+ @from_time=@page.devolver_duracion(@page.valor_minimo(@page.nuevo_filtro_duracion_salida_element).text)
274
+ @to_time =@page.devolver_duracion(@page.valor_maximo(@page.nuevo_filtro_duracion_salida_element).text)
275
+ end
276
+
277
+ Entonces(/^filtro por duracion de salida - filtros nuevo -$/) do
278
+ diff=Duracion.new(@to_time.horas-1,@from_time.minutos)
279
+ while(@to_time!=diff and @to_time!=@from_time)
280
+ @page.slider_nuevo_filtro_duracion_salida_element.send_keys :left
281
+ @to_time = @page.devolver_duracion(@page.valor_maximo(@page.nuevo_filtro_duracion_salida_element).text)
282
+ end
283
+ @page.aplicar_filtros_element.click
284
+ end
285
+
286
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de duracion de salida - filtros nuevo -$/) do
287
+ doc = Hpricot.parse(@page.html)
288
+ (doc/"div#clusters div.cluster div.outbound ul.itineraries-group li.itinerary").each do |itineraries|
289
+ time = @page.devolver_duracion((itineraries/"li.time span").inner_text)
290
+ time.should es_mayor_igual_que(@from_time)
291
+ time.should es_menor_igual_que(@to_time)
292
+ end
293
+ end
294
+
295
+ Entonces(/^limpio el filtro de duracion de salida - filtros nuevo -$/) do
296
+ @page.remover_filtro_de_duracion_de_ida_element.click
297
+ @page.aplicar_filtros_element.click
298
+ end
299
+
300
+ Cuando(/^elijo una duracion de llegada a aplicar - filtros nuevo -$/) do
301
+ if @page.filtro_duracion_visible_element.present?
302
+ @page.filtro_duracion_visible_element.click unless @page.filtros_duracion_element.present?
303
+ else
304
+ @page.ver_filtro(@page.ver_filtro_duracion_visible_element)
305
+ end
306
+ @from_time=@page.devolver_duracion(@page.valor_minimo(@page.nuevo_filtro_duracion_llegada_element).text)
307
+ @to_time =@page.devolver_duracion(@page.valor_maximo(@page.nuevo_filtro_duracion_llegada_element).text)
308
+ end
309
+
310
+ Entonces(/^filtro por duracion de llegada - filtros nuevo -$/) do
311
+ diff=Duracion.new(@to_time.horas-1,@from_time.minutos)
312
+ while(@to_time!=diff and @to_time!=@from_time)
313
+ @page.slider_nuevo_filtro_duracion_llegada_element.send_keys :left
314
+ @to_time=@page.devolver_duracion(@page.valor_maximo(@page.nuevo_filtro_duracion_llegada_element).text)
315
+ end
316
+ @page.aplicar_filtros_element.click
317
+ end
318
+
319
+ Entonces(/^verifico que la primer pagina muestre correctamente los filtros de duracion de llegada - filtros nuevo -$/) do
320
+ doc = Hpricot.parse(@page.html)
321
+ (doc/"div#clusters div.cluster div.inbound ul.itineraries-group li.itinerary").each do |itineraries|
322
+ time = @page.devolver_duracion((itineraries/"li.time span").inner_text)
323
+ time.should es_mayor_igual_que(@from_time)
324
+ time.should es_menor_igual_que(@to_time)
325
+ end
326
+ end
327
+
328
+ Entonces(/^limpio el filtro de duracion de llegada - filtros nuevo -$/) do
329
+ @page.remover_filtro_de_duracion_de_vuelta_element.click
330
+ @page.aplicar_filtros_element.click
331
+ end