flights_gui_tests 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/features/step_definitions/checkout/checkout_steps.rb +1 -0
- data/features/step_definitions/checkout/load_steps.rb +18 -5
- data/features/step_definitions/page_steps.rb +1 -32
- data/features/step_definitions/results/filters_steps.rb +34 -55
- data/features/step_definitions/results/load_steps.rb +3 -1
- data/features/step_definitions/results/new_filters_steps.rb +85 -137
- data/features/step_definitions/results/results_steps.rb +14 -4
- data/features/step_definitions/thanks/load_steps.rb +2 -1
- data/features/support/classes/clusters/results/details_cluster.rb +1 -1
- data/features/support/classes/clusters/results/new_details_cluster.rb +1 -1
- data/features/support/modules/checkout/checkout.rb +1 -0
- data/features/support/modules/checkout/clusters/cluster.rb +86 -0
- data/features/support/modules/results/filters.rb +15 -0
- data/features/support/modules/results/itineraries.rb +7 -2
- data/features/support/modules/results/itineraries/bussines.rb +1 -1
- data/features/support/modules/results/itineraries/cluster.rb +104 -0
- data/features/support/modules/results/itineraries/details.rb +1 -1
- data/features/support/modules/results/itineraries/payments.rb +1 -1
- data/features/support/modules/results/new_filters.rb +27 -55
- data/features/support/pages/all_pages.rb +1 -1
- data/features/support/pages/checkout/checkout_page.rb +1 -0
- data/features/support/pages/checkout/new_checkout_page.rb +1 -1
- data/features/support/pages/results/search_page.rb +16 -4
- data/features/tests/checkout/agency.feature +1 -23
- data/features/tests/checkout/book_ok.feature +1 -0
- data/features/tests/checkout/cac.feature +2 -0
- data/features/tests/checkout/cash_payment.feature +2 -1
- data/features/tests/checkout/compras_duplicadas.feature +1 -0
- data/features/tests/checkout/cupones.feature +2 -1
- data/features/tests/checkout/error_messages.feature +1 -0
- data/features/tests/checkout/online_payment.feature +2 -1
- data/features/tests/checkout/price_jump.feature +2 -2
- data/features/tests/checkout/seguros.feature +2 -0
- data/features/tests/results/basefare.feature +6 -5
- data/features/tests/results/busquedas_promo.feature +0 -0
- data/features/tests/results/filters.feature +7 -6
- data/features/tests/results/itineraries.feature +6 -5
- data/features/tests/results/matrix/matrix_price.feature +6 -0
- data/features/tests/results/new_filters.feature +18 -14
- data/features/tests/results/search.feature +10 -1
- data/features/tests/results/wish_list.feature +6 -0
- data/flights_gui_tests.gemspec +1 -1
- data/henry-context.yml +6 -97
- metadata +4 -4
- data/features/data/promos.csv +0 -30
- data/features/tests/results/new_itineraries.feature +0 -103
@@ -38,7 +38,7 @@ Entonces(/^recorro y (?:verifico|valido) cada itinerario$/) do
|
|
38
38
|
i=0
|
39
39
|
$num = 0
|
40
40
|
@page.itinerarios_elements.each do |itinerario|
|
41
|
-
_itinerario =
|
41
|
+
_itinerario = @page.cargar_itinerario(itinerario)
|
42
42
|
@page.validar_millas(json,i)
|
43
43
|
@page.validar_mas_detalles(json,i,_itinerario)
|
44
44
|
@page.validar_detalles_itinerario(i)
|
@@ -59,6 +59,16 @@ Y(/^(?:verifico|valido) el popup de alertas$/) do
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
Cuando(/^defino
|
63
|
-
|
64
|
-
|
62
|
+
Cuando(/^defino cluster a utilizar$/) do
|
63
|
+
step "fuerzo el abztesting de \"clusterStyle\" al \"#{$HENRY_PARAMS['cluster'].to_i}\""
|
64
|
+
@page.definir_nuevo_cluster($HENRY_PARAMS['cluster'].to_i<50) #seteo el cluster parametrizado
|
65
|
+
end
|
66
|
+
|
67
|
+
Y(/^verifico el banner de cancelacion en el dia en resultados$/) do
|
68
|
+
@page.mensaje_cancelacion_element.when_visible(timeout=5)
|
69
|
+
@page.mensaje_cancelacion_element.should visible("mensaje cancelacion")
|
70
|
+
end
|
71
|
+
|
72
|
+
Y(/^verifico el banner de cancelacion en el dia en checkout$/) do
|
73
|
+
@page.mensaje_cancelacion_element.should visible("mensaje cancelacion")
|
74
|
+
end
|
@@ -6,7 +6,8 @@ end
|
|
6
6
|
|
7
7
|
Entonces(/^(?:verifico|valido) que ingrese a la pagina de gracias$/) do
|
8
8
|
@page.checkout_id_element.should visible("Checkout ID")
|
9
|
-
puts @page.
|
9
|
+
puts " URL: #{@page.url}"
|
10
|
+
puts " IDCRO: #{@page.checkout_id_element.text}"
|
10
11
|
@id_reserva = @page.checkout_id_element.text
|
11
12
|
end
|
12
13
|
|
@@ -14,7 +14,7 @@ class DetailsCluster
|
|
14
14
|
tramo['clase'] = (div/"div.segment span.not-economy-segments span.not-economy-segments-description").first.inner_text.strip.no_accents
|
15
15
|
end
|
16
16
|
tramo['ciudad_origen'] = (div/"li.departure span.location span.data").first.inner_text.strip.no_accents
|
17
|
-
tramo['fecha_origen'] = Date.
|
17
|
+
tramo['fecha_origen'] = Date.parse_new_result((div/"li.departure span.date span.day").first.inner_text.strip.no_accents)
|
18
18
|
tramo['hora_origen'] = Time.parse((div/"li.departure span.date span.hour").first.inner_text.strip.no_accents)
|
19
19
|
tramo['ciudad_destino'] = (div/"li.arrival span.location span.data").last.inner_text.strip.no_accents
|
20
20
|
tramo['hora_destino'] = Time.parse((div/"li.arrival span.date span.hour").last.inner_text.strip.no_accents)
|
@@ -14,7 +14,7 @@ class NewDetailsCluster
|
|
14
14
|
tramo['clase'] = (div/"span.inline-detail-flight-cabinType span.inline-detail-flight-data-description").first.inner_text.strip.no_accents
|
15
15
|
end
|
16
16
|
tramo['ciudad_origen'] = (div/"span.inline-detail-airport-description").first.inner_text.gsub(/\-(.*)/,'').strip.no_accents
|
17
|
-
tramo['fecha_origen'] = Date.
|
17
|
+
tramo['fecha_origen'] = Date.parse_new_result((div/"span.inline-detail-airport-date").first.inner_text.strip.gsub(/Sale:/,'').no_accents)
|
18
18
|
tramo['hora_origen'] = (div/"span.inline-detail-airport-hour").first.inner_text.empty? ? Time.parse((div/"span.inline-detail-airport-hour").last.inner_text.strip.no_accents) : Time.parse((div/"span.inline-detail-airport-hour").first.inner_text.strip.no_accents)
|
19
19
|
tramo['ciudad_destino'] = (div/"span.inline-detail-airport-description").last.inner_text.gsub(/\-(.*)/,'').strip.no_accents
|
20
20
|
tramo['hora_destino'] = (div/"span.inline-detail-airport-hour").last.inner_text.empty? ? Time.parse((div/"span.inline-detail-airport-hour").first.inner_text.strip.no_accents) : Time.parse((div/"span.inline-detail-airport-hour").last.inner_text.strip.no_accents)
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Checkout
|
3
|
+
class Cluster
|
4
|
+
attr_accessor :ida, :vuelta, :tarifas, :idas, :vueltas
|
5
|
+
|
6
|
+
def initialize(itinerario,html,page = 0)
|
7
|
+
self.cargar_precios((html/"div.prices"))
|
8
|
+
eval "#{itinerario.downcase}(html)"
|
9
|
+
end
|
10
|
+
|
11
|
+
def roundtrip(html)
|
12
|
+
tramos = cargar_tramos((html/"div.outbound-route div.segment"))
|
13
|
+
@ida = DataCluster.new(tramos.first['salida']['nombre'], tramos.last['llegada']['nombre'], tramos.first['salida']['fecha'], tramos.collect{|tramo| tramo['aerolinea']}, escala_to_i((html/"div.outbound-route span.stops").inner_text.strip), tramos.first['salida']['iata'], tramos.last['llegada']['iata'], tramos.first['salida']['horario'], tramos.last['llegada']['horario'])
|
14
|
+
tramos = cargar_tramos((html/"div.inbound-route div.segment"))
|
15
|
+
@vuelta = DataCluster.new(tramos.first['salida']['nombre'], tramos.last['llegada']['nombre'], tramos.first['salida']['fecha'], tramos.collect{|tramo| tramo['aerolinea']}, escala_to_i((html/"div.outbound-route span.stops").inner_text.strip), tramos.first['salida']['iata'], tramos.last['llegada']['iata'], tramos.first['salida']['horario'], tramos.last['llegada']['horario'])
|
16
|
+
end
|
17
|
+
|
18
|
+
def oneway(html)
|
19
|
+
tramos = cargar_tramos((html/"div.outbound-route div.segment"))
|
20
|
+
@ida = DataCluster.new(tramos.first['salida']['nombre'], tramos.last['llegada']['nombre'], tramos.first['salida']['fecha'], tramos.collect{|tramo| tramo['aerolinea']}, escala_to_i((html/"div.outbound-route span.stops").inner_text.strip), tramos.first['salida']['iata'], tramos.last['llegada']['iata'], tramos.first['salida']['horario'], tramos.last['llegada']['horario'])
|
21
|
+
end
|
22
|
+
|
23
|
+
def multipledestinations(html)
|
24
|
+
data = (html/"div.outbound-route div.segment")
|
25
|
+
data_final = data.delete(data.last)
|
26
|
+
tramos = cargar_tramos(data)
|
27
|
+
@ida = DataCluster.new(tramos.first['salida']['nombre'], tramos.last['llegada']['nombre'], tramos.first['salida']['fecha'], tramos.collect{|tramo| tramo['aerolinea']}, escala_to_i((html/"div.outbound-route span.stops").inner_text.strip), tramos.first['salida']['iata'], tramos.last['llegada']['iata'], tramos.first['salida']['horario'], tramos.last['llegada']['horario'])
|
28
|
+
tramos = cargar_tramos([data_final])
|
29
|
+
@vuelta = DataCluster.new(tramos.first['salida']['nombre'], tramos.last['llegada']['nombre'], tramos.first['salida']['fecha'], tramos.collect{|tramo| tramo['aerolinea']}, escala_to_i((html/"div.outbound-route span.stops").inner_text.strip), tramos.first['salida']['iata'], tramos.last['llegada']['iata'], tramos.first['salida']['horario'], tramos.last['llegada']['horario'])
|
30
|
+
end
|
31
|
+
|
32
|
+
def cargar_tramos(lista_tramos)
|
33
|
+
tramos = Array.new
|
34
|
+
lista_tramos.each{ |segmento| tramos << cargar_tramo(segmento)}
|
35
|
+
return tramos
|
36
|
+
end
|
37
|
+
|
38
|
+
def cargar_tramo(segmento)
|
39
|
+
tramo = Hash.new
|
40
|
+
tramo['aerolinea'] = (segmento/"li.airline-data img").first.attributes['src'].match(/(..).png/)[1].upcase
|
41
|
+
tramo['salida'] = cargar_vuelo((segmento/"li.flight").first)
|
42
|
+
tramo['llegada'] = cargar_vuelo((segmento/"li.flight").last)
|
43
|
+
return tramo
|
44
|
+
end
|
45
|
+
|
46
|
+
def cargar_vuelo(vuelo)
|
47
|
+
vuelo_tmp = Hash.new
|
48
|
+
vuelo_tmp['iata'] = (vuelo/"a.city-code").inner_text.strip
|
49
|
+
vuelo_tmp['nombre'] = (vuelo/"li.location-name").inner_text.strip.no_accents
|
50
|
+
vuelo_tmp['fecha'] = (vuelo/"li.date").inner_text.strip.no_accents
|
51
|
+
vuelo_tmp['horario'] = (vuelo/"li.time").inner_text.gsub(/hs/,'').strip
|
52
|
+
return vuelo_tmp
|
53
|
+
end
|
54
|
+
|
55
|
+
def cargar_precios(html)
|
56
|
+
@tarifas = Hash.new
|
57
|
+
@tarifas['tarifa_adulto'] = Price.new((html/"div.adult-price span.price-currency").first.inner_text.strip)
|
58
|
+
@tarifas['adt'] = Price.new((html/"li.adult_fare span.price-currency").first.inner_text.strip)
|
59
|
+
@tarifas['cnn'] = (html/"li.child_fare").first ? Price.new((html/"li.child_fare span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
60
|
+
@tarifas['inf'] = (html/"li.infant_fare").first ? Price.new((html/"li.infant_fare span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
61
|
+
@tarifas['tasas'] = (html/"li.taxes").first ? Price.new((html/"li.taxes span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
62
|
+
@tarifas['cargos'] = (html/"li.charges").first ? Price.new((html/"li.charges span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
63
|
+
@tarifas['afip'] = (html/"li.tax_afip").first ? Price.new((html/"li.tax_afip span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
64
|
+
@tarifas['encargos'] = (html/"li.taxes_services").first ? Price.new((html/"li.taxes_services span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
65
|
+
@tarifas['total'] = (html/"li.total span.price-currency").first ? Price.new((html/"li.total span.price-currency").first.inner_text.strip) : Price.new("$ 0",true)
|
66
|
+
end
|
67
|
+
|
68
|
+
def validar_suma_desgloce(linea = "total|tarifa_adulto|tarifa_adulto_dolar")
|
69
|
+
sumaTarifas = 0
|
70
|
+
@tarifas.each_pair do |key,tarifa|
|
71
|
+
if key !~ /#{linea}/
|
72
|
+
sumaTarifas += tarifa.valor
|
73
|
+
end
|
74
|
+
end
|
75
|
+
return sumaTarifas.to_i
|
76
|
+
end
|
77
|
+
|
78
|
+
alias :validarSumaDesgloce :validar_suma_desgloce
|
79
|
+
|
80
|
+
def escala_to_i(escala)
|
81
|
+
return 0 if escala.to_s =~ /(solo vuelo directo)|(Sin escalas)|(Sem escalas)|(Soamente v.o directo)|(Vuelo Directo)/i
|
82
|
+
return escala.to_s.gsub(/\D/,'').to_i
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
end
|
@@ -33,6 +33,21 @@ module Results
|
|
33
33
|
link(:slider_precio_mayor,:class=>"ui-slider-handle ui-state-default ui-corner-all ui-slider-handle-max")
|
34
34
|
link(:slider_precio_menor,:class=>"ui-slider-handle ui-state-default ui-corner-all ui-slider-handle-min")
|
35
35
|
|
36
|
+
def devolver_duracion_filtro_viejo(duracion)
|
37
|
+
time = duracion.strip.split(':')
|
38
|
+
if time.length==1
|
39
|
+
aux = time.first
|
40
|
+
if(aux.match(/h/))
|
41
|
+
_duracion=Duracion.new(aux.gsub(/\D/,'').to_i,"00")
|
42
|
+
else
|
43
|
+
_duracion=Duracion.new("00",aux.gsub(/\D/,'').to_i)
|
44
|
+
end
|
45
|
+
else
|
46
|
+
_duracion = Duracion.new(time[0].gsub(/\D/,'').to_i,time[1].gsub(/\D/,'').to_i)
|
47
|
+
end
|
48
|
+
return _duracion
|
49
|
+
end
|
50
|
+
|
36
51
|
end
|
37
52
|
|
38
53
|
end
|
@@ -4,6 +4,7 @@ require_relative 'itineraries/bussines'
|
|
4
4
|
require_relative 'itineraries/payments'
|
5
5
|
require_relative 'itineraries/details'
|
6
6
|
require_relative 'itineraries/data'
|
7
|
+
require_relative 'itineraries/cluster'
|
7
8
|
|
8
9
|
module Results
|
9
10
|
module Itineraries
|
@@ -14,8 +15,12 @@ module Results
|
|
14
15
|
include Results::Itineraries::Details
|
15
16
|
include Results::Itineraries::Data
|
16
17
|
|
17
|
-
def
|
18
|
-
@
|
18
|
+
def definir_nuevo_cluster(valor)
|
19
|
+
@nuevo_cluster = valor
|
20
|
+
end
|
21
|
+
|
22
|
+
def nuevo_cluster?
|
23
|
+
return nuevo_cluster
|
19
24
|
end
|
20
25
|
|
21
26
|
end
|
@@ -6,7 +6,7 @@ module Results
|
|
6
6
|
include PageObject
|
7
7
|
|
8
8
|
def validar_vuelo_bussines(i)
|
9
|
-
unless @
|
9
|
+
unless @nuevo_cluster
|
10
10
|
if itinerarios_elements[i].div(:class,'not-economy-cluster-alert').present?
|
11
11
|
itinerarios_elements[i].span(:class,'ux-common-icon-rate-star').should visible("icono de bussines")
|
12
12
|
else
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module Results
|
3
|
+
class NewCluster
|
4
|
+
attr_accessor :ida, :vuelta, :tarifas, :idas, :vueltas
|
5
|
+
|
6
|
+
def initialize(itinerario,html,page = 0)
|
7
|
+
self.cargar_precios((html/"div.fare-container"))
|
8
|
+
eval "#{itinerario.downcase}(html)"
|
9
|
+
end
|
10
|
+
|
11
|
+
def roundtrip(html)
|
12
|
+
@idas = cargar_tramos((html/"div.outbound"))
|
13
|
+
@ida = @idas.first
|
14
|
+
@vueltas = cargar_tramos((html/"div.inbound"))
|
15
|
+
@vuelta = @vueltas.first
|
16
|
+
end
|
17
|
+
|
18
|
+
def oneway(html)
|
19
|
+
@idas = cargar_tramos((html/"div.outbound"))
|
20
|
+
@ida = @idas.first
|
21
|
+
end
|
22
|
+
|
23
|
+
def multipledestinations(html)
|
24
|
+
data = (html/"div.multiple")
|
25
|
+
@idas = cargar_tramos(data.first)
|
26
|
+
@ida = @idas.first
|
27
|
+
@vueltas = @idas
|
28
|
+
@vuelta = @vueltas.last
|
29
|
+
end
|
30
|
+
|
31
|
+
def cargar_tramos(lista_tramos)
|
32
|
+
tramos = Array.new
|
33
|
+
(lista_tramos/"li.cluster-item").each{ |segmento| tramos << cargar_tramo((lista_tramos/"div.data"),segmento)}
|
34
|
+
return tramos
|
35
|
+
end
|
36
|
+
|
37
|
+
def cargar_tramo(info_ruta,segmento)
|
38
|
+
aerolineas = (segmento/"li.airlines img").collect{|aerolinea| aerolinea.attributes['src'].match(/(..).png/)[1].upcase}
|
39
|
+
return DataCluster.new( (info_ruta/"span.city-departure").inner_text.strip.no_accents.gsub(/,/,''), #nombre ciudad salida
|
40
|
+
(info_ruta/"span.city-arrival").inner_text.strip.no_accents.gsub(/,/,''), #nombre ciudad llegada
|
41
|
+
(info_ruta/"span.date").inner_text.strip, #fecha
|
42
|
+
aerolineas, #aerolineas
|
43
|
+
escala_to_i((segmento/"span.stops-text").inner_text.strip), #escalas
|
44
|
+
(info_ruta/"span.airport").first.inner_text.strip.no_accents, #iata ciudad salida
|
45
|
+
(info_ruta/"span.airport").last.inner_text.strip.no_accents, #iata ciudad llegada
|
46
|
+
Time.parse((segmento/"span.hour").first.inner_text.strip), #horario salida
|
47
|
+
Time.parse((segmento/"span.hour").last.inner_text.strip), #horario llegada
|
48
|
+
(segmento/"li.time").inner_text.strip #duracion
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
def cargar_precios(html)
|
53
|
+
@tarifas = Hash.new
|
54
|
+
@tarifas['tarifa_adulto_dolar'] = Price.new((html/"span.price-currency span.currency").first.inner_text.strip + " " + (html/"span.price-currency span.amount").first.inner_text.strip)
|
55
|
+
if (html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.currency").first
|
56
|
+
@tarifas['tarifa_adulto'] = Price.new((html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.currency").first.inner_text.strip + " " + (html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.amount").first.inner_text.strip)
|
57
|
+
else
|
58
|
+
@tarifas['tarifa_adulto'] = @tarifas['tarifa_adulto_dolar']
|
59
|
+
end
|
60
|
+
|
61
|
+
adt = (html/"li").select{|li| li.inner_text.no_accents.downcase =~ /adulto/}.first
|
62
|
+
@tarifas['adt'] = adt ? Price.new((adt/"span.currency").first.inner_text.strip + " " + (adt/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
63
|
+
|
64
|
+
cnn = (html/"li").select{|li| li.inner_text.no_accents.downcase =~ /nino/}.first
|
65
|
+
@tarifas['cnn'] = cnn ? Price.new((cnn/"span.currency").first.inner_text.strip + " " + (cnn/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
66
|
+
|
67
|
+
inf = (html/"li").select{|li| li.inner_text.no_accents.downcase =~ /bebe/}.first
|
68
|
+
@tarifas['inf'] = inf ? Price.new((inf/"span.currency").first.inner_text.strip + " " + (inf/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
|
69
|
+
|
70
|
+
tasas = (html/"li.taxes-price").empty? ? (html/"li[@class='taxDetail.OTHER-price']").first : (html/"li.taxes-price").first
|
71
|
+
@tarifas['tasas'] = tasas ? Price.new((tasas/"span.currency").first.inner_text.strip + " " + (tasas/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
72
|
+
|
73
|
+
cargos = (html/"li.charges-price").first
|
74
|
+
@tarifas['cargos'] = cargos ? Price.new((cargos/"span.currency").first.inner_text.strip + " " + (cargos/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
75
|
+
|
76
|
+
afip = (html/"li[@class='taxDetail.ZK-price']").first
|
77
|
+
@tarifas['afip'] = afip ? Price.new((afip/"span.currency").first.inner_text.strip + " " + (afip/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
|
78
|
+
|
79
|
+
@tarifas['encargos'] = Price.new("$ 0",true)
|
80
|
+
|
81
|
+
campo = (html/"li").empty? ? "total" : "fare"
|
82
|
+
@tarifas['total'] = (html/"li.#{campo}-price span.currency").empty? ? Price.new("$ 0",true) : Price.new((html/"li.#{campo}-price span.currency").first.inner_text.strip + " " + (html/"li.#{campo}-price span.amount").first.inner_text.strip)
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
def validar_suma_desgloce(linea = "total|tarifa_adulto|tarifa_adulto_dolar")
|
87
|
+
sumaTarifas = 0
|
88
|
+
@tarifas.each_pair do |key,tarifa|
|
89
|
+
if key !~ /#{linea}/
|
90
|
+
sumaTarifas += tarifa.valor
|
91
|
+
end
|
92
|
+
end
|
93
|
+
return sumaTarifas.to_i
|
94
|
+
end
|
95
|
+
|
96
|
+
alias :validarSumaDesgloce :validar_suma_desgloce
|
97
|
+
|
98
|
+
def escala_to_i(escala)
|
99
|
+
return 0 if escala.to_s =~ /(solo vuelo directo)|(Sin escalas)|(Sem escalas)|(Soamente v.o directo)|(Vuelo Directo)|(Directo)/i
|
100
|
+
return escala.to_s.gsub(/\D/,'').to_i
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
@@ -10,7 +10,7 @@ module Results
|
|
10
10
|
elements(:new_popup_detail,:div,:class=>'inline-detail')
|
11
11
|
|
12
12
|
def validar_mas_detalles(json,i,itinerario)
|
13
|
-
unless @
|
13
|
+
unless @nuevo_cluster
|
14
14
|
j=0
|
15
15
|
mostrar_mas_itinerarios_element.click if mostrar_mas_itinerarios_element.present?
|
16
16
|
rutas_ida(itinerarios_elements[i]).each do |route|
|
@@ -9,7 +9,7 @@ module Results
|
|
9
9
|
span(:cerrar_popup_cuotas,:css=>"#popup-payments .popup-close-button")
|
10
10
|
|
11
11
|
def validar_popup_cuotas(i)
|
12
|
-
unless @
|
12
|
+
unless @nuevo_cluster
|
13
13
|
if(itinerarios_elements[i].div(:class,'actions').link(:class,'payments').present?)
|
14
14
|
itinerarios_elements[i].radio(:id,/outbound/).click if itinerarios_elements[i].radio(:id,/outbound/).present?
|
15
15
|
itinerarios_elements[i].radio(:id,/inbound/).click if itinerarios_elements[i].radio(:id,/inbound/).present?
|
@@ -8,7 +8,7 @@ module Results
|
|
8
8
|
div(:filtros_nuevos,:id=>"inline-filters")
|
9
9
|
div(:popup_mas_filtros,:id=>"inline-filters-item-more-tooltip")
|
10
10
|
|
11
|
-
div(:filtros_precio,:
|
11
|
+
div(:filtros_precio,:class=>"inline-filters-detail-price")
|
12
12
|
div(:filtros_escalas,:id=>"inline-filters-detail-scales")
|
13
13
|
div(:filtros_horarios,:id=>"inline-filters-detail-time")
|
14
14
|
div(:filtros_aeropuerto,:id=>"inline-filters-detail-airports")
|
@@ -18,23 +18,23 @@ module Results
|
|
18
18
|
|
19
19
|
div(:filtros_aplicados,:class=>"inline-filters-applied")
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
div(:filtro_precio_visible,:class=>"inline-filters-detail inline-filters-detail-price")
|
22
|
+
div(:filtro_aerolineas_visible,:class=>"inline-filters-detail inline-filters-detail-airlines")
|
23
|
+
div(:filtro_horarios_visible,:class=>"inline-filters-detail inline-filters-detail-time")
|
24
|
+
div(:filtro_aeropuertos_visible,:class=>"inline-filters-detail inline-filters-detail-airports")
|
25
|
+
div(:filtro_duracion_visible,:class=>"inline-filters-detail inline-filters-detail-duration")
|
26
|
+
div(:filtro_escalas_visible,:class=>"inline-filters-detail inline-filters-detail-scales")
|
27
|
+
div(:filtro_alianzas_visible,:class=>"inline-filters-detail inline-filters-detail-alliances")
|
28
28
|
|
29
29
|
span(:mas_filtros,:css=>"div#inline-filters li.inline-filters-item-more span.inline-filters-item-content")
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
li(:ver_filtro_precio_visible,:class=>"inline-filters-item inline-filters-item-price inline-fitlers-detail-title")
|
32
|
+
li(:ver_filtro_escalas_visible,:class=>"inline-filters-item inline-filters-item-scales inline-fitlers-detail-title")
|
33
|
+
li(:ver_filtro_horarios_visible,:class=>"inline-filters-item inline-filters-item-time inline-fitlers-detail-title")
|
34
|
+
li(:ver_filtro_aeropuertos_visible,:class=>"inline-filters-item inline-filters-item-airports inline-fitlers-detail-title")
|
35
|
+
li(:ver_filtro_duracion_visible,:class=>"inline-filters-item inline-filters-item-duration inline-fitlers-detail-title")
|
36
|
+
li(:ver_filtro_aerolineas_visible,:class=>"inline-filters-item inline-filters-item-airlines inline-fitlers-detail-title")
|
37
|
+
li(:ver_filtro_alianzas_visible,:class=>"inline-filters-item inline-filters-item-alliances inline-fitlers-detail-title")
|
38
38
|
|
39
39
|
elements(:opciones_aeropuerto_origen,:input,:name=>"inline-filters-airport-outbound")
|
40
40
|
elements(:opciones_aeropuerto_destino,:input,:name=>"inline-filters-airport-inbound")
|
@@ -47,21 +47,25 @@ module Results
|
|
47
47
|
span(:remover_filtro_de_horario_de_ida,:id=>"inline-filters-time-outbound-slider-applied")
|
48
48
|
span(:remover_filtro_de_horario_de_vuelta,:id=>"inline-filters-time-inbound-slider-applied")
|
49
49
|
span(:remover_filtro_de_precio,:id=>"inline-filters-price-slider-applied")
|
50
|
+
checkbox(:remover_filtro_de_aerolinea,:id=>"inline-filters-airlines-all")
|
51
|
+
checkbox(:remover_filtro_de_aeropuerto_origen,:id=>"inline-filters-airport-outbound-all")
|
52
|
+
checkbox(:remover_filtro_de_aeropuerto_destino,:id=>"inline-filters-airport-inbound-all")
|
53
|
+
checkbox(:remover_filtro_de_escalas,:id=>"inline-filters-stops-all")
|
50
54
|
|
51
55
|
span(:remover_filtro_de_duracion_de_ida,:id=>"inline-filters-duration-outbound-slider-applied")
|
52
56
|
span(:remover_filtro_de_duracion_de_vuelta,:id=>"inline-filters-duration-inbound-slider-applied")
|
53
57
|
|
54
|
-
text_field(:nuevo_filtro_precio_menor,:css=>"div
|
55
|
-
text_field(:nuevo_filtro_precio_mayor,:css=>"div
|
58
|
+
text_field(:nuevo_filtro_precio_menor,:css=>"div.inline-filters-detail-price span.ux-common-filter-price-min input.price-min")
|
59
|
+
text_field(:nuevo_filtro_precio_mayor,:css=>"div.inline-filters-detail-price span.ux-common-filter-price-max input.price-max")
|
56
60
|
|
57
|
-
div(:nuevo_filtro_duracion_salida,:css=>"div
|
58
|
-
div(:nuevo_filtro_duracion_llegada,:css=>"div
|
61
|
+
div(:nuevo_filtro_duracion_salida,:css=>"div.inline-filters-detail-duration div#inline-filters-duration-outbound-slider")
|
62
|
+
div(:nuevo_filtro_duracion_llegada,:css=>"div.inline-filters-detail-duration div#inline-filters-duration-inbound-slider")
|
59
63
|
|
60
|
-
link(:slider_nuevo_precio_mayor,:css=>"div
|
61
|
-
link(:slider_nuevo_precio_menor,:css=>"div
|
64
|
+
link(:slider_nuevo_precio_mayor,:css=>"div.inline-filters-detail-price .ui-slider-handle-max")
|
65
|
+
link(:slider_nuevo_precio_menor,:css=>"div.inline-filters-detail-price .ui-slider-handle-min")
|
62
66
|
|
63
|
-
link(:slider_nuevo_filtro_duracion_salida,:css=>"div
|
64
|
-
link(:slider_nuevo_filtro_duracion_llegada,:css=>"div
|
67
|
+
link(:slider_nuevo_filtro_duracion_salida,:css=>"div.inline-filters-detail-duration div#inline-filters-duration-outbound-slider .ui-slider-handle-min")
|
68
|
+
link(:slider_nuevo_filtro_duracion_llegada,:css=>"div.inline-filters-detail-duration div#inline-filters-duration-inbound-slider .ui-slider-handle-min")
|
65
69
|
|
66
70
|
def se_muestra_filtro_de_alianzas(alianza)
|
67
71
|
return browser.span(:id,"inline-filters-alliances-#{alianza}-applied")
|
@@ -71,38 +75,6 @@ module Results
|
|
71
75
|
return browser.span(:id,"inline-filters-alliances-#{alianza}-applied").span(:class,"inline-filters-applied-description-remove")
|
72
76
|
end
|
73
77
|
|
74
|
-
def se_muestra_filtro_de_aerolinea(aerolinea)
|
75
|
-
return browser.span(:id,"inline-filters-airlines-#{aerolinea}-applied")
|
76
|
-
end
|
77
|
-
|
78
|
-
def remover_filtro_de_aerolinea(aerolinea)
|
79
|
-
return browser.span(:id,"inline-filters-airlines-#{aerolinea}-applied").span(:class,"inline-filters-applied-description-remove")
|
80
|
-
end
|
81
|
-
|
82
|
-
def se_muestra_filtro_de_aeropuerto_origen(aeropuerto)
|
83
|
-
return browser.span(:id,"inline-filters-airport-outbound-#{aeropuerto}-applied")
|
84
|
-
end
|
85
|
-
|
86
|
-
def remover_filtro_de_aeropuerto_origen(aeropuerto)
|
87
|
-
return browser.span(:id,"inline-filters-airport-outbound-#{aeropuerto}-applied").span(:class,"inline-filters-applied-description-remove")
|
88
|
-
end
|
89
|
-
|
90
|
-
def se_muestra_filtro_de_aeropuerto_destino(aeropuerto)
|
91
|
-
return browser.span(:id,"inline-filters-airport-inbound-#{aeropuerto}-applied")
|
92
|
-
end
|
93
|
-
|
94
|
-
def remover_filtro_de_aeropuerto_destino(aeropuerto)
|
95
|
-
return browser.span(:id,"inline-filters-airport-inbound-#{aeropuerto}-applied").span(:class,"inline-filters-applied-description-remove")
|
96
|
-
end
|
97
|
-
|
98
|
-
def se_muestra_filtro_de_escalas(escalas)
|
99
|
-
return browser.span(:id,"inline-filters-stops-#{escalas}-applied")
|
100
|
-
end
|
101
|
-
|
102
|
-
def remover_filtro_de_escalas(escalas)
|
103
|
-
return browser.span(:id,"inline-filters-stops-#{escalas}-applied").span(:class,"inline-filters-applied-description-remove")
|
104
|
-
end
|
105
|
-
|
106
78
|
def ver_filtro(filtro)
|
107
79
|
mas_filtros_element.click
|
108
80
|
popup_mas_filtros_element.when_visible
|