flights_gui_tests 1.0.3 → 1.0.4

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.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/features/step_definitions/results/matrix_steps.rb +1 -1
  3. data/features/step_definitions/results/results_steps.rb +2 -2
  4. data/features/step_definitions/results/wish_list_steps.rb +1 -1
  5. data/features/step_definitions/thanks/thanks_steps.rb +1 -1
  6. data/features/support/classes/checkout/{cluster.rb → old_cluster.rb} +1 -1
  7. data/features/support/classes/checkout/render_cluster.rb +1 -1
  8. data/features/support/classes/clusters.rb +3 -3
  9. data/features/support/classes/landing/cluster.rb +1 -1
  10. data/features/support/classes/results/old_cluster.rb +172 -0
  11. data/features/support/classes/results/{details_cluster.rb → old_details_cluster.rb} +1 -1
  12. data/features/support/env.rb +0 -1
  13. data/features/support/modules/browser.rb +4 -4
  14. data/features/support/modules/results/filters.rb +94 -30
  15. data/features/support/modules/results/itineraries/details.rb +1 -1
  16. data/features/support/modules/results/itineraries/miles.rb +0 -1
  17. data/features/support/pages/checkout/checkout_page/old_checkout_page.rb +1 -1
  18. data/features/support/pages/landing/search_page.rb +2 -2
  19. data/features/support/pages/results/search_page.rb +10 -10
  20. data/features/support/pages/thanks/thanks_page.rb +1 -1
  21. data/features/tests/results/filters.feature +73 -49
  22. data/flights_gui_tests.gemspec +1 -1
  23. data/henry-context.yml +6 -35
  24. metadata +5 -7
  25. data/features/support/classes/results/cluster.rb +0 -170
  26. data/features/support/modules/results/new_filters.rb +0 -117
  27. data/features/tests/results/new_filters.feature +0 -119
@@ -43,7 +43,7 @@ module Results
43
43
  route.li(:class,'stops').a(:class,'text').click
44
44
  popup_detail_element.when_visible(timeout=20)
45
45
  doc = Hpricot.parse(popup_detail_element.html)
46
- detail = DetailsCluster.new(doc)
46
+ detail = OldDetailsCluster.new(doc)
47
47
  detail.duracion.should match(/#{cluster.duracion}/)
48
48
  detail.tramos.first['ciudad_origen'].should match(cluster.origen)
49
49
  detail.tramos.last['ciudad_destino'].should match(cluster.destino)
@@ -43,7 +43,6 @@ module Results
43
43
 
44
44
  if popup_pasajero_frecuente_element.present?
45
45
  doc = Hpricot.parse(popup_pasajero_frecuente_element.html)
46
- byebug
47
46
  (doc/"div.popup-content").inner_text.gsub(/\n\n/," ").gsub(/\n/,"").downcase.no_accents.strip.should match(text.downcase + data[airline][0].downcase.strip)
48
47
  popup_pasajero_frecuente_element.span(:class,'popup-close-button popup-close').click
49
48
  popup_pasajero_frecuente_element.when_not_visible(timeout=20)
@@ -52,7 +52,7 @@ module Checkout
52
52
  p(:id_reserva_compra_duplicada,:css=>"#popup-duplicated-transaction .paragraph")
53
53
 
54
54
  def datos_itinerario()
55
- return Checkout::Cluster.new(tipo_de_busqueda,Hpricot.parse(itinerario_element.html))
55
+ return OldCheckout::Cluster.new(tipo_de_busqueda,Hpricot.parse(itinerario_element.html))
56
56
  end
57
57
 
58
58
  def opcion_seguros(opcion)
@@ -103,14 +103,14 @@ module Landing
103
103
  (cluster/"div.outbound li.cluster-item").each_with_index do |item,j|
104
104
  itinerarios_elements[i].div(:class,'sub-cluster outbound').span(:class,'showMoreItineraries').click if itinerarios_elements[i].div(:class,'sub-cluster outbound').span(:class,'showMoreItineraries').present?
105
105
  itinerarios_elements[i].div(:class,"sub-cluster outbound").li(:class=>'item itinerary cluster-item',:index=>j).li(:class,'stops').link(:class,'text').click
106
- _cluster["idas"] << DetailsCluster.new(Hpricot.parse(popup_detalles_element.html))
106
+ _cluster["idas"] << OldDetailsCluster.new(Hpricot.parse(popup_detalles_element.html))
107
107
  popup_detalles_element.span(:class,'popup-close-button popup-close').click
108
108
  sleep(0.25)
109
109
  end
110
110
  (cluster/"div.inbound li.cluster-item").each_with_index do |item,j|
111
111
  itinerarios_elements[i].div(:class,'sub-cluster inbound').span(:class,'showMoreItineraries').click if itinerarios_elements[i].div(:class,'sub-cluster inbound').span(:class,'showMoreItineraries').present?
112
112
  itinerarios_elements[i].div(:class,"sub-cluster inbound").li(:class=>'item itinerary cluster-item',:index=>j).li(:class,'stops').link(:class,'text').click
113
- _cluster["vueltas"] << DetailsCluster.new(Hpricot.parse(popup_detalles_element.html))
113
+ _cluster["vueltas"] << OldDetailsCluster.new(Hpricot.parse(popup_detalles_element.html))
114
114
  popup_detalles_element.span(:class,'popup-close-button popup-close').click
115
115
  sleep(0.25)
116
116
  end
@@ -10,7 +10,6 @@ module Results
10
10
  include Results::Itineraries
11
11
  include Results::SearchParams
12
12
  include Results::Filters
13
- include Results::NewFilters
14
13
  include Results::Recommendation
15
14
  include Results::WishList
16
15
 
@@ -21,11 +20,6 @@ module Results
21
20
  div(:actualizar_informacion,:class=>"update-message")
22
21
  div(:actualizar_filtro,:id=>"update-message-overlay")
23
22
  div(:nuevo_cluster,:css=>".inline-detail-clusters-style")
24
- div(:mensaje_cancelacion,:id=>"cancellation-advice-popup-content")
25
- div(:cerrar_mensaje_cancelacion,:css=>"#cancellation-advice-popup-content .flights-message-close")
26
-
27
- div(:popup_destino_hot,:id=>"hot-destination-advice-popup")
28
- div(:cerrar_popup_destino_hot,:css=>"#hot-destination-advice-popup .flights-message-close")
29
23
 
30
24
  link(:link_mejor_precio,:id=>"best-price")
31
25
 
@@ -50,13 +44,19 @@ module Results
50
44
  select_list(:orden,:id=>"orderby")
51
45
  select_list(:moneda,:id=>"currency")
52
46
 
47
+ #popups
48
+ div(:mensaje_cancelacion,:id=>"cancellation-advice-popup-content")
49
+ div(:cerrar_mensaje_cancelacion,:css=>"#cancellation-advice-popup-content .flights-message-close")
50
+ div(:popup_destino_hot,:id=>"hot-destination-advice-popup")
51
+ div(:cerrar_popup_destino_hot,:css=>"#hot-destination-advice-popup .flights-message-close")
52
+ div(:popup_destino_hot_LOW,:id=>"hot-destination-advice-popup-content-LOW-HOT_DESTINATION_AVAILABILITY")
53
+ div(:cerrar_popup_destino_hot_LOW,:css=>"#hot-destination-advice-popup-content-LOW-HOT_DESTINATION_AVAILABILITY .flights-message-close")
53
54
  span(:cerrar_popup_alerta,:css=>"#create-alert-popup .popup-close-button")
54
55
  span(:cerrar_popup_cantidad_visitantes,:css=>"#searches-count-alert-popup .popup-close-button")
55
-
56
- div(:boton_alertas,:id=>"nibbler-subscriptions")
57
-
56
+ div(:boton_alertas,:id=>"flights-alerts")
58
57
  div(:popup_alertas,:id=>"nibbler-subscriptions")
59
58
  span(:cerrar_popup_alertas,:css=>"#nibbler-subscriptions .nibbler-common-overlay-close")
59
+ #fin popups
60
60
 
61
61
  def cargar_url(tipo,ambiente,cabotaje="nil",params={})
62
62
  super(tipo,ambiente,cabotaje,params)
@@ -98,7 +98,7 @@ module Results
98
98
  if @nuevo_cluster
99
99
  return Results::NewCluster.new(tipo_de_busqueda,Hpricot.parse(itinerario.html))
100
100
  else
101
- return ResultsCluster.new(tipo_de_busqueda,Hpricot.parse(itinerario.html))
101
+ return Results::OldCluster.new(tipo_de_busqueda,Hpricot.parse(itinerario.html))
102
102
  end
103
103
  end
104
104
 
@@ -32,7 +32,7 @@ module Thanks
32
32
  link(:ver_desglose_gracias,:class=>"ux-shared-checkout-thanks-more")
33
33
 
34
34
  def datos_itinerario()
35
- return Checkout::Cluster.new(tipo_de_busqueda,Hpricot.parse(popup_desglose_gracias_element.html))
35
+ return OldCheckout::Cluster.new(tipo_de_busqueda,Hpricot.parse(popup_desglose_gracias_element.html))
36
36
  end
37
37
  end
38
38
  end
@@ -11,80 +11,111 @@ Característica: results.filters
11
11
  Entonces verifico que la pagina no rompa
12
12
  Cuando espero que termine de cargar la pagina de resultados
13
13
  Entonces verifico que traiga resultados
14
- Cuando si el site es "CO|BR", defino cluster a utilizar
15
- Cuando si el site es "MX", fuerzo el abztesting de "filters" al "88"
16
14
  Cuando si el site es "MX", fuerzo el abztesting de "breakdown" al "88"
17
- Y si el site es "CO|MX|BR", ingreso una busqueda '<tipo>' del tipo '<cabotage>'
18
- Y si el site es "CO|MX|BR", realizo la busqueda
19
- Cuando si el site es "CO|MX|BR", verifico que la pagina no rompa
20
- Cuando si el site es "CO|MX|BR", espero que termine de cargar la pagina de resultados
21
- Entonces si el site es "CO|MX|BR", verifico que traiga resultados
22
- Cuando verifico que el cambio de moneda no muestre limpiar filtros
23
- Entonces elijo moneda local
24
- Cuando si el site es "PE", elijo moneda local como precio de filtrado
25
- Cuando espero que termine de cargar la pagina de resultados
26
- Entonces verifico que la pagina no rompa
27
- Y cierro popups
28
- Cuando Recupero los precios limites de la lista
29
- Entonces filtro por precio mayor
30
- Cuando espero que termine de cargar la pagina de resultados
15
+ Y ingreso una busqueda '<tipo>' del tipo '<cabotage>'
16
+ Y realizo la busqueda
31
17
  Entonces verifico que la pagina no rompa
32
- Y verifico que la primer pagina muestre correctamente los filtros de precio
33
- Entonces filtro por precio menor
34
18
  Cuando espero que termine de cargar la pagina de resultados
35
- Entonces verifico que la pagina no rompa
36
- Y verifico que la primer pagina muestre correctamente los filtros de precio
37
- Cuando limpio el filtro de precio
19
+ Entonces verifico que traiga resultados
20
+ Entonces elijo moneda local
38
21
  Cuando espero que termine de cargar la pagina de resultados
39
22
  Entonces verifico que la pagina no rompa
40
- Cuando elijo una aerolinea a aplicar
23
+ Cuando abro los filtros de aerolineas
24
+ Cuando elijo una aerolinea a aplicar - filtros nuevo -
41
25
  Entonces filtro por aerolinea
42
26
  Cuando espero que termine de cargar la pagina de resultados
43
27
  Entonces verifico que la pagina no rompa
28
+ Entonces verifico que traiga resultados
44
29
  Y verifico que la primer pagina muestre correctamente los filtros de aerolineas
45
- Cuando limpio el filtro de aerolineas
30
+ Cuando limpio el filtro de aerolineas - filtros nuevo -
46
31
  Cuando espero que termine de cargar la pagina de resultados
47
- Entonces verifico que la pagina no rompa
48
- Cuando elijo un aeropuerto outbound a aplicar
49
- Entonces filtro por aeropuerto
32
+ Cuando abro los filtros de aeropuertos
33
+ Cuando elijo un aeropuerto de origen a aplicar - filtros nuevo -
34
+ Entonces filtro por aeropuerto
50
35
  Cuando espero que termine de cargar la pagina de resultados
51
36
  Entonces verifico que la pagina no rompa
37
+ Entonces verifico que traiga resultados
52
38
  Y verifico que la primer pagina muestre correctamente los filtros de aeropuertos outbound
53
- Cuando limpio el filtro de aeropuertos de salida
39
+ Cuando limpio el filtro de aeropuertos de origen - filtros nuevo -
54
40
  Cuando espero que termine de cargar la pagina de resultados
55
41
  Entonces verifico que la pagina no rompa
56
- Cuando elijo una escala a aplicar
57
- Entonces filtro por escala
42
+ Cuando si es ida y vuelta, elijo un aeropuerto de destino a aplicar - filtros nuevo -
43
+ Entonces si es ida y vuelta, filtro por aeropuerto
44
+ Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
45
+ Entonces si es ida y vuelta, verifico que la pagina no rompa
46
+ Entonces si es ida y vuelta, verifico que traiga resultados
47
+ Y si es ida y vuelta, verifico que la primer pagina muestre correctamente los filtros de aeropuertos inbound
48
+ Cuando si es ida y vuelta, limpio el filtro de aeropuertos de destino - filtros nuevo -
49
+ Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
50
+ Entonces si es ida y vuelta, verifico que la pagina no rompa
51
+ Cuando abro los filtros de escalas
52
+ Cuando elijo una escala a aplicar - filtros nuevo -
53
+ Entonces filtro por escala
58
54
  Cuando espero que termine de cargar la pagina de resultados
59
55
  Entonces verifico que la pagina no rompa
56
+ Entonces verifico que traiga resultados
60
57
  Y verifico que la primer pagina muestre correctamente los filtros de escalas
61
- Cuando limpio el filtro de escalas
58
+ Cuando limpio el filtro de escalas - filtros nuevo -
62
59
  Cuando espero que termine de cargar la pagina de resultados
63
- Cuando elijo una duracion outbound a aplicar
64
- Entonces filtro por duracion outbound
60
+ Entonces verifico que la pagina no rompa
61
+ Cuando abro los filtros de horarios
62
+ Cuando elijo un horario a aplicar - filtros nuevo -
63
+ Entonces filtro por horario de ida - filtros nuevo -
65
64
  Cuando espero que termine de cargar la pagina de resultados
66
65
  Entonces verifico que la pagina no rompa
67
- Y verifico que la primer pagina muestre correctamente los filtros de duracion outbound
68
- Y limpio el filtro de duracion outbound
66
+ Entonces verifico que traiga resultados
67
+ Y valido que la primer pagina muestre correctamente los filtros de horario de ida - filtros nuevo -
68
+ Cuando limpio el filtro de horario de ida - filtros nuevo -
69
69
  Cuando espero que termine de cargar la pagina de resultados
70
70
  Entonces verifico que la pagina no rompa
71
- Cuando elijo una duracion inbound a aplicar
72
- Entonces filtro por duracion inbound
71
+ Cuando si es ida y vuelta, elijo un horario a aplicar - filtros nuevo -
72
+ Entonces si es ida y vuelta, filtro por horario de vuelta - filtros nuevo -
73
+ Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
74
+ Entonces si es ida y vuelta, verifico que la pagina no rompa
75
+ Entonces verifico que traiga resultados
76
+ Y si es ida y vuelta, verifico que la primer pagina muestre correctamente los filtros de horario de vuelta - filtros nuevo -
77
+ Cuando si es ida y vuelta, limpio el filtro de horario de vuelta - filtros nuevo -
78
+ Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
79
+ Entonces si es ida y vuelta, verifico que la pagina no rompa
80
+ Cuando elijo una duracion de salida a aplicar - filtros nuevo -
81
+ Entonces filtro por duracion de salida - filtros nuevo -
82
+ Cuando espero que termine de cargar la pagina de resultados
83
+ Entonces verifico que la pagina no rompa
84
+ Entonces verifico que traiga resultados
85
+ Y verifico que la primer pagina muestre correctamente los filtros de duracion de salida - filtros nuevo -
86
+ Y limpio el filtro de duracion de salida - filtros nuevo -
87
+ Cuando espero que termine de cargar la pagina de resultados
88
+ Entonces verifico que la pagina no rompa
89
+ Cuando si es ida y vuelta, elijo una duracion de llegada a aplicar - filtros nuevo -
90
+ Entonces si es ida y vuelta, filtro por duracion de llegada - filtros nuevo -
91
+ Cuando si es ida y vuelta, espero que termine de cargar la pagina de resultados
92
+ Entonces si es ida y vuelta, verifico que la pagina no rompa
93
+ Entonces si es ida y vuelta, verifico que traiga resultados
94
+ Y si es ida y vuelta, verifico que la primer pagina muestre correctamente los filtros de duracion de llegada - filtros nuevo -
95
+ Y si es ida y vuelta, limpio el filtro de duracion de llegada - filtros nuevo -
73
96
  Cuando espero que termine de cargar la pagina de resultados
74
97
  Entonces verifico que la pagina no rompa
75
- Y verifico que la primer pagina muestre correctamente los filtros de duracion inbound
76
- Y limpio el filtro de duracion inbound
98
+ Cuando recupero los precios limites de la lista - filtros nuevo -
99
+ Entonces filtro por precio mayor - filtros nuevo -
77
100
  Cuando espero que termine de cargar la pagina de resultados
78
101
  Entonces verifico que la pagina no rompa
79
- Cuando elijo un horario outbound a aplicar
80
- Entonces filtro por horario outbound
102
+ Entonces verifico que traiga resultados
103
+ Entonces filtro por precio menor - filtros nuevo -
81
104
  Cuando espero que termine de cargar la pagina de resultados
82
105
  Entonces verifico que la pagina no rompa
83
- Y verifico que la primer pagina muestre correctamente los filtros de horario outbound
84
- Cuando limpio el filtro de horario outbound
106
+ Entonces verifico que traiga resultados
107
+ Y verifico que la primer pagina muestre correctamente los filtros de precio - filtros nuevo -
108
+ Cuando limpio el filtro de precio - filtros nuevo -
85
109
  Cuando espero que termine de cargar la pagina de resultados
86
110
  Entonces verifico que la pagina no rompa
87
111
 
112
+ @mx
113
+ Ejemplos:
114
+ |pais|tipo|cabotage|
115
+ |MX |roundtrip|true|
116
+ |MX |oneway|true|
117
+ |MX |oneway|nil|
118
+ |MX |roundtrip|nil|
88
119
  @ar
89
120
  Ejemplos:
90
121
  |pais|tipo|cabotage|
@@ -99,13 +130,6 @@ Característica: results.filters
99
130
  |BR |roundtrip|true|
100
131
  |BR |oneway|nil|
101
132
  |BR |roundtrip|nil|
102
- @co
103
- Ejemplos:
104
- |pais|tipo|cabotage|
105
- |CO |roundtrip|nil|
106
- |CO |oneway|nil|
107
- |CO |roundtrip|true|
108
- |CO |oneway|true|
109
133
  @us
110
134
  Ejemplos:
111
135
  |pais|tipo|cabotage|
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.require_paths = ["lib"] # Usualmente es solo lib -> ["lib"]
16
16
 
17
- gem.version = '1.0.3' # La version se debe incrementar cada vez que se desea publicar una nueva version del test.
17
+ gem.version = '1.0.4' # La version se debe incrementar cada vez que se desea publicar una nueva version del test.
18
18
 
19
19
  gem.add_dependency('henry-container', '>= 0.1.39')
20
20
  gem.add_dependency('page-object')
@@ -2970,13 +2970,13 @@ tasks:
2970
2970
  recipients:
2971
2971
  - estebanldh@gmail.com
2972
2972
  - nsimean@despegar.com
2973
- - name: results.filters.ar
2973
+ - name: results.filters.mx
2974
2974
  class_name: Henry::Task::CucumberTask
2975
2975
  options:
2976
2976
  tags:
2977
2977
  - results
2978
2978
  - filters
2979
- - ar
2979
+ - mx
2980
2980
  expand: true
2981
2981
  no-source: true
2982
2982
  reports:
@@ -2985,13 +2985,13 @@ tasks:
2985
2985
  recipients:
2986
2986
  - estebanldh@gmail.com
2987
2987
  - nsimean@despegar.com
2988
- - name: results.filters.br
2988
+ - name: results.filters.ar
2989
2989
  class_name: Henry::Task::CucumberTask
2990
2990
  options:
2991
2991
  tags:
2992
2992
  - results
2993
2993
  - filters
2994
- - br
2994
+ - ar
2995
2995
  expand: true
2996
2996
  no-source: true
2997
2997
  reports:
@@ -3000,13 +3000,13 @@ tasks:
3000
3000
  recipients:
3001
3001
  - estebanldh@gmail.com
3002
3002
  - nsimean@despegar.com
3003
- - name: results.filters.co
3003
+ - name: results.filters.br
3004
3004
  class_name: Henry::Task::CucumberTask
3005
3005
  options:
3006
3006
  tags:
3007
3007
  - results
3008
3008
  - filters
3009
- - co
3009
+ - br
3010
3010
  expand: true
3011
3011
  no-source: true
3012
3012
  reports:
@@ -3030,35 +3030,6 @@ tasks:
3030
3030
  recipients:
3031
3031
  - estebanldh@gmail.com
3032
3032
  - nsimean@despegar.com
3033
- - name: results.new_filters
3034
- class_name: Henry::Task::CucumberTask
3035
- options:
3036
- tags:
3037
- - results
3038
- - new_filters
3039
- expand: true
3040
- no-source: true
3041
- reports:
3042
- - format: html
3043
- name: ${DATE}_${TASK_NAME}.html
3044
- recipients:
3045
- - estebanldh@gmail.com
3046
- - nsimean@despegar.com
3047
- - name: results.new_filters.mx
3048
- class_name: Henry::Task::CucumberTask
3049
- options:
3050
- tags:
3051
- - results
3052
- - new_filters
3053
- - mx
3054
- expand: true
3055
- no-source: true
3056
- reports:
3057
- - format: html
3058
- name: ${DATE}_${TASK_NAME}.html
3059
- recipients:
3060
- - estebanldh@gmail.com
3061
- - nsimean@despegar.com
3062
3033
  - name: results.pagination
3063
3034
  class_name: Henry::Task::CucumberTask
3064
3035
  options:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flights_gui_tests
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - lgonzalez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-20 00:00:00.000000000 Z
11
+ date: 2015-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: henry-container
@@ -259,8 +259,8 @@ files:
259
259
  - features/step_definitions/tags_steps.rb
260
260
  - features/step_definitions/thanks/load_steps.rb
261
261
  - features/step_definitions/thanks/thanks_steps.rb
262
- - features/support/classes/checkout/cluster.rb
263
262
  - features/support/classes/checkout/new_cluster.rb
263
+ - features/support/classes/checkout/old_cluster.rb
264
264
  - features/support/classes/checkout/render_cluster.rb
265
265
  - features/support/classes/clusters.rb
266
266
  - features/support/classes/data/data.rb
@@ -270,10 +270,10 @@ files:
270
270
  - features/support/classes/landing/cluster.rb
271
271
  - features/support/classes/price.rb
272
272
  - features/support/classes/process_manager.rb
273
- - features/support/classes/results/cluster.rb
274
- - features/support/classes/results/details_cluster.rb
275
273
  - features/support/classes/results/new_cluster.rb
276
274
  - features/support/classes/results/new_details_cluster.rb
275
+ - features/support/classes/results/old_cluster.rb
276
+ - features/support/classes/results/old_details_cluster.rb
277
277
  - features/support/classes/string.rb
278
278
  - features/support/env.rb
279
279
  - features/support/hooks.rb
@@ -312,7 +312,6 @@ files:
312
312
  - features/support/modules/results/matrix/matrix_airline.rb
313
313
  - features/support/modules/results/matrix/matrix_fare_chart.rb
314
314
  - features/support/modules/results/matrix/matrix_price.rb
315
- - features/support/modules/results/new_filters.rb
316
315
  - features/support/modules/results/recommendation.rb
317
316
  - features/support/modules/results/search_params.rb
318
317
  - features/support/modules/results/wish_list.rb
@@ -367,7 +366,6 @@ files:
367
366
  - features/tests/results/matrix/matrix_airlines.feature
368
367
  - features/tests/results/matrix/matrix_fare_chart.feature
369
368
  - features/tests/results/matrix/matrix_price.feature
370
- - features/tests/results/new_filters.feature
371
369
  - features/tests/results/orders.feature
372
370
  - features/tests/results/pagination.feature
373
371
  - features/tests/results/recommendation.feature
@@ -1,170 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- class ResultsCluster
3
-
4
- attr_accessor :ida, :vuelta, :tarifas, :idas, :vueltas
5
-
6
- def initialize(itinerario,html,page = 0)
7
- eval "#{itinerario.downcase}(html)"
8
- self.load_prices((html/"div.fare-container"))
9
- end
10
-
11
- def roundtrip(html)
12
- self.load_data_from((html/"div.itineraries div[@class='sub-cluster outbound']"))
13
- self.load_data_to((html/"div.itineraries div[@class='sub-cluster inbound']"))
14
- end
15
- def oneway(html)
16
- self.load_data_from((html/"div.itineraries//div[@class='sub-cluster outbound']"))
17
- @nro_vuelo_vuelta = -1
18
- end
19
- def multipledestinations(html)
20
- self.load_data_from((html/"div.itineraries//div[@class='sub-cluster multiple']"))
21
- self.load_data_to((html/"div.itineraries//div[@class='sub-cluster multiple']").last)
22
- end
23
- def load_data_from(div_datos)
24
- @idas = Array.new
25
- (div_datos/"li.itinerary").each do |div_datos_ida|
26
- duracion = (div_datos_ida/"li.time").inner_text.strip
27
- origen = (div_datos/"span.city-departure").first.inner_text.gsub(/,/,'').strip.no_accents
28
- destino= (div_datos/"span.city-arrival").first.inner_text.gsub(/,/,'').strip.no_accents
29
- origen_iata = (div_datos/"a")[0].inner_text.strip
30
- destino_iata = (div_datos/"a")[1].inner_text.strip
31
- fecha = (div_datos/"span.date").first.empty? ? (div_datos_ida/"li.date").first.inner_text.strip.no_accents : (div_datos/"span.date").first.inner_text.strip.no_accents
32
- escala = (div_datos_ida/"li.stops/a").inner_text.strip.empty? ? "Sin escalas" : (div_datos_ida/"li.stops/a").inner_text.to_i
33
- aerolinea = Array.new
34
- i = 0
35
- (div_datos_ida/"li.airlinesShort//img").each do |aer|
36
- aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
37
- i = i + 1
38
- end
39
- (div_datos_ida/"li.airlines//img").each do |aer|
40
- aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
41
- i = i + 1
42
- end
43
- hou_sal_ida = Time.parse((div_datos_ida/"li.leave span.hour").inner_text.strip)
44
- hou_lle_ida = Time.parse((div_datos_ida/"li.arrive span.hour").inner_text.strip)
45
- @idas << DataCluster.new(origen,destino,fecha, aerolinea, escala_to_i(escala),origen_iata,destino_iata,hou_sal_ida,hou_lle_ida,duracion)
46
- end
47
- @nro_vuelo_ida = 0
48
- @ida = @idas[@nro_vuelo_ida]
49
- end
50
- def load_data_to(div_datos)
51
- @vueltas = Array.new
52
- (div_datos/"li.itinerary").each do |div_datos_vuelta|
53
- duracion = (div_datos_vuelta/"li.time").inner_text.strip
54
- origen = (div_datos/"span.city-departure").first.inner_text.gsub(/,/,'').strip.no_accents
55
- destino= (div_datos/"span.city-arrival").first.inner_text.gsub(/,/,'').strip.no_accents
56
- origen_iata = (div_datos/"a")[0].inner_text.strip
57
- destino_iata = (div_datos/"a")[1].inner_text.strip
58
- fecha = (div_datos/"span.date").last.empty? ? (div_datos_vuelta/"li.date").last.inner_text.strip.no_accents : (div_datos/"span.date").last.inner_text.strip.no_accents
59
- escala = (div_datos_vuelta/"li.stops/a").inner_text.strip.empty? ? "Sin escalas" : (div_datos_vuelta/"li.stops/a").inner_text.to_i
60
- aerolinea = Array.new
61
- i = 0
62
- (div_datos_vuelta/"li.airlinesShort//img").each do |aer|
63
- aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
64
- i = i + 1
65
- end
66
- (div_datos_vuelta/"li.airlines//img").each do |aer|
67
- aerolinea << aer.attributes['src'].match(/(..).png/)[1].upcase
68
- i = i + 1
69
- end
70
- hou_sal_ida = Time.parse((div_datos_vuelta/"li.leave span.hour").inner_text.strip)
71
- hou_lle_ida = Time.parse((div_datos_vuelta/"li.arrive span.hour").inner_text.strip)
72
- @vueltas << DataCluster.new(origen,destino,fecha, aerolinea, escala_to_i(escala),origen_iata,destino_iata,hou_sal_ida,hou_lle_ida,duracion)
73
- end
74
- @nro_vuelo_vuelta = 0
75
- @vuelta = @vueltas[@nro_vuelo_vuelta]
76
- end
77
-
78
- def load_prices(p_html)
79
-
80
- @tarifas = Hash.new
81
- @tarifas['tarifa_adulto_dolar'] = Price.new((p_html/"span.price-currency span.currency").first.inner_text.strip + " " + (p_html/"span.price-currency span.amount").first.inner_text.strip)
82
- if (p_html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.currency").first
83
- @tarifas['tarifa_adulto'] = Price.new((p_html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.currency").first.inner_text.strip + " " + (p_html/"span[@class='price-currency #{Helpers.currency(AllPages.site)} '] span.amount").first.inner_text.strip)
84
- else
85
- @tarifas['tarifa_adulto'] = @tarifas['tarifa_adulto_dolar']
86
- end
87
-
88
- adt = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /adulto/}.first
89
- @tarifas['adt'] = adt ? Price.new((adt/"span.currency").first.inner_text.strip + " " + (adt/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
90
-
91
- cnn = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /nino/}.first
92
- @tarifas['cnn'] = cnn ? Price.new((cnn/"span.currency").first.inner_text.strip + " " + (cnn/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
93
-
94
- inf = (p_html/"li").select{|li| li.inner_text.no_accents.downcase =~ /bebe/}.first
95
- @tarifas['inf'] = inf ? Price.new((inf/"span.currency").first.inner_text.strip + " " + (inf/"span.amount").first.inner_text.strip) : Price.new("$ 0",true)
96
-
97
- tasas = (p_html/"li.taxes-price").empty? ? (p_html/"li[@class='taxDetail.OTHER-price']").first : (p_html/"li.taxes-price").first
98
- @tarifas['tasas'] = tasas ? Price.new((tasas/"span.currency").first.inner_text.strip + " " + (tasas/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
99
-
100
- cargos = (p_html/"li.charges-price").first
101
- @tarifas['cargos'] = cargos ? Price.new((cargos/"span.currency").first.inner_text.strip + " " + (cargos/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
102
-
103
- afip = (p_html/"li[@class='taxDetail.ZK-price']").first
104
- @tarifas['afip'] = afip ? Price.new((afip/"span.currency").first.inner_text.strip + " " + (afip/"span.amount").first.inner_text.strip,true) : Price.new("$ 0",true)
105
-
106
- @tarifas['encargos'] = Price.new("$ 0",true)
107
-
108
- campo = (p_html/"li").empty? ? "total" : "fare"
109
- @tarifas['total'] = (p_html/"li.#{campo}-price span.currency").empty? ? Price.new("$ 0",true) : Price.new((p_html/"li.#{campo}-price span.currency").first.inner_text.strip + " " + (p_html/"li.#{campo}-price span.amount").first.inner_text.strip)
110
- end
111
-
112
- def validarSumaDesgloce(linea = "total|tarifa_adulto")
113
-
114
- sumaTarifas = 0
115
- @tarifas.each_pair do |key,tarifa|
116
- if key !~ /#{linea}/
117
- sumaTarifas += tarifa.valor
118
- end
119
- if @tarifas['total'] and (tarifa.valor > @tarifas['total'].valor) and (linea !~ /tarifa_adulto/)
120
- true.should be_true
121
- end
122
- end
123
-
124
- if @tarifas['total'] and ((sumaTarifas.to_i - @tarifas['total'].valor.to_i) > 3)
125
- true.should be_true
126
- end
127
-
128
- end
129
- def validarEcuacionTarifasPorCantidadDePasajeros(cant)
130
- unless @tarifas['adt'].valor.zero?
131
- (@tarifas['adt'].valor == @tarifas['tarifa_adulto'].valor * cant).should be_true
132
- end
133
- end
134
- def validarResolucionAFIP
135
- (@tarifas['total'] * 20 / 100).truncate + 1 == @tarifas['afip']
136
- end
137
- def total_escalas()
138
- vueltas = @vueltas ? @vueltas.collect{|vuelta| vuelta.escalas} : []
139
- (vueltas + @idas.collect{|vuelta| vuelta.escalas}).sort
140
- end
141
-
142
- def duracion
143
- menor_ida = menor_duracion(@idas.collect{|ida| ida.duracion})
144
- menor_vuelta = @vueltas ? menor_duracion(@vueltas.collect{|ida| ida.duracion}) : 0
145
-
146
- return menor_vuelta + menor_ida
147
- end
148
-
149
- def escala_to_i(escala)
150
- return 0 if escala.to_s =~ /(solo vuelo directo)|(Sin escalas)|(Sem escalas)|(Soamente v.o directo)|(Vuelo Directo)/i
151
- return escala.to_s.gsub(/\D/,'').to_i
152
- end
153
-
154
- def menor_duracion(rutas)
155
- totales = []
156
- rutas.each do |custom|
157
- if custom.match("^(.*)h (.*)m$")
158
- total = custom.match("^(.*)h (.*)m$")[1].to_i * 60
159
- total += custom.match("^(.*)h (.*)m$")[2].to_i
160
- elsif custom.match("^(.*)h$")
161
- total = custom.match("^(.*)h$")[1].to_i * 60
162
- else
163
- total = custom.match("^(.*)m$")[1].to_i
164
- end
165
- totales << total
166
- end
167
- return totales.sort.first
168
- end
169
-
170
- end