mundo-pepino 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +14 -0
- data/Manifest.txt +1 -0
- data/README_es.markdown +46 -19
- data/lib/mundo_pepino/en_US/matchers.rb +7 -13
- data/lib/mundo_pepino/es_ES/definitions.rb +44 -13
- data/lib/mundo_pepino/es_ES/matchers.rb +34 -32
- data/lib/mundo_pepino/implementations.rb +3 -1
- data/lib/mundo_pepino/implementations_api.rb +22 -2
- data/lib/mundo_pepino/matchers_delegation.rb +19 -0
- data/lib/mundo_pepino/version.rb +1 -1
- metadata +3 -2
data/History.txt
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
== 0.1.5 2009-11-09
|
2
|
+
* Fixed bug in children search if their name field it's not "name" (by Paco
|
3
|
+
Guzman).
|
4
|
+
* Dynamic load and refactoring of Matchers::Fragments delegation
|
5
|
+
* X new step definitions in es_ES:
|
6
|
+
* I press the following sequence of links and/or buttons + fit table
|
7
|
+
* Given I am on _page_
|
8
|
+
* Then I should be on _page_
|
9
|
+
* Then the field _field_ should|should-not contain _value_
|
10
|
+
* Resource at BBDD should have an specific number of children (Paco Guzman's
|
11
|
+
issue)
|
12
|
+
* Extended es_ES "I select _x_ from _y_" step definition.
|
13
|
+
* Spork reference at README_es (by Gaizka).
|
14
|
+
|
1
15
|
== 0.1.4 2009-10-30
|
2
16
|
* Added generator mundo_pepino_steps like mundo_pepino but creating a copy
|
3
17
|
of the step definitions in features/step_definitions.
|
data/Manifest.txt
CHANGED
@@ -17,6 +17,7 @@ lib/mundo_pepino/es_ES/mappings.rb
|
|
17
17
|
lib/mundo_pepino/es_ES/matchers.rb
|
18
18
|
lib/mundo_pepino/implementations.rb
|
19
19
|
lib/mundo_pepino/implementations_api.rb
|
20
|
+
lib/mundo_pepino/matchers_delegation.rb
|
20
21
|
lib/mundo_pepino/resources_history.rb
|
21
22
|
lib/mundo_pepino/version.rb
|
22
23
|
lib/mundo_pepino/visits_history.rb
|
data/README_es.markdown
CHANGED
@@ -38,7 +38,7 @@ En este punto deberíamos obtener dos errores, ambos debidos a que el *scaffold*
|
|
38
38
|
$EDITOR app/views/orchards/new.html.erb # "Crear" en lugar de "Create"
|
39
39
|
rake caracteristicas
|
40
40
|
|
41
|
-
Ahora sí, los escenarios deberían ser válidos, sin errores ni definiciones pendientes.
|
41
|
+
Ahora sí, los escenarios deberían ser válidos, sin errores ni definiciones pendientes. Para tener precargado el entorno utilizando Spork bastaría con añadir ''--spork'' al ''script/generate cucumber'' y meter la opción ''--drb'' dentro del profile y/o tarea de rake.
|
42
42
|
|
43
43
|
El generador mundo_pepino nos prepara el entorno para utilizar las definiciones de MundoPepino sin copiarnos las mismas en ''features/steps_definitions'', cargándolas directemente desde su código. Existe otro generador equivalente llamado **mundo_pepino_steps** que hace lo mismo pero copiando dichas definiciones dentro de ''features/steps_definitions''.
|
44
44
|
|
@@ -268,8 +268,7 @@ Para todos los escenarios podríamos tener una narrativa genérica que expresase
|
|
268
268
|
Como usuario de Cucumber
|
269
269
|
Quiero tener los pasos más habituales definidos, implementados y bien documentados
|
270
270
|
|
271
|
-
|
272
|
-
|
271
|
+
Cada definición ha sido separada en un fichero `.feature` específico para poder enlazarlas desde este índice.
|
273
272
|
|
274
273
|
Como **convención general** los nombres correspondientes a modelos y campos pueden ir sin comillas pero los valores deben ir entre comillas (simples o dobles). Por ejemplo:
|
275
274
|
|
@@ -283,7 +282,6 @@ Se puede utilizar la interpolación separando el hash con los parámetros de la
|
|
283
282
|
|
284
283
|
Entonces debería ver la etiqueta H1 con el valor "app.users.new_friend,{:name => 'Lucas'}"
|
285
284
|
|
286
|
-
|
287
285
|
### Dado el contexto (Givens)
|
288
286
|
|
289
287
|
Convenciones generales:
|
@@ -293,6 +291,9 @@ Convenciones generales:
|
|
293
291
|
* asignación de valores con el verbo **tener** en tercera persona (p.e. "Dado que dichas Acelgas **tienen** como variedad Amarilla de Lyon")
|
294
292
|
* todas las definiciones para "Cuando algo ocurre" (o *Then's*, ver más abajo) son válidas también como "Dado el contexto" incorporándoles el prefijo "que" (p.e. "Dado que visito la portada").
|
295
293
|
|
294
|
+
#### Estoy en una página específica (alias de //Solicitud de una página//) \*
|
295
|
+
Dado que estoy en la portada
|
296
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-especifica.feature)
|
296
297
|
|
297
298
|
#### Creación de uno o varios registros asignándoles opcionalmente un nombre
|
298
299
|
Dado que tenemos Un Producto llamado "Acelgas"
|
@@ -353,30 +354,36 @@ Convenciones generales:
|
|
353
354
|
* frases escritas en tiempo presente en primera persona del singular
|
354
355
|
* todas las definiciones son válidas también para definir contexto (en "Dados" o "Givens") incorporándoles el prefijo "que" (p.e. "Dado que visito la portada").
|
355
356
|
|
356
|
-
#### Solicitud de una
|
357
|
+
#### Solicitud de una página específica opcionalmente indicada con un nombre coloquial
|
357
358
|
Cuando visito la portada
|
358
359
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-especifica.feature)
|
359
|
-
#### Solicitud de la
|
360
|
+
#### Solicitud de la página asociada a un recurso concreto
|
360
361
|
Cuando visito la página del huerto "H-01"
|
361
362
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-de-recurso-especifico.feature)
|
362
|
-
#### Solicitud de la
|
363
|
+
#### Solicitud de la página asociada al último recurso definido
|
363
364
|
Cuando visito su página
|
364
365
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-de-recurso-mencionado.feature)
|
365
|
-
#### Solicitud de la
|
366
|
+
#### Solicitud de la página del índice (index) de un tipo de recurso (modelo)
|
366
367
|
Cuando visito la página de Tomates
|
367
368
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-de-indice-de-tipo-de-recurso.feature)
|
368
|
-
#### Solicitud de la
|
369
|
+
#### Solicitud de la página de creación de un recurso
|
369
370
|
Cuando visito la página de creación de Tomate
|
370
371
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-de-creacion.feature)
|
371
|
-
#### Solicitud de la
|
372
|
+
#### Solicitud de la página de edición de un recurso
|
372
373
|
Cuando visito la página de edición del huerto "H-01"
|
373
374
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-visito-url-de-edicion.feature)
|
374
|
-
#### Pincho en un enlace \*
|
375
|
+
#### Pincho/pulso en un enlace \*
|
375
376
|
Cuando pulso el enlace "Volver"
|
376
377
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-pulso-el-enlace.feature)
|
377
378
|
#### Pincho/pulso un bóton (*submit*) \*
|
378
379
|
Cuando pulso en el botón Enviar
|
379
380
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-pulso-el-boton.feature)
|
381
|
+
#### Pincho/pulso una serie de bótones y/o enlaces
|
382
|
+
Cuando pincho en los siguientes enlaces:
|
383
|
+
| presentación |
|
384
|
+
| galería de huertos |
|
385
|
+
| cultivos de regadío |
|
386
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-pulso-los-siguientes-enlaces-y-botones.feature)
|
380
387
|
#### Adjunto un fichero (*file*) \*
|
381
388
|
Cuando adjunto el fichero "images/cucumber.jpg" en Fotografía actual
|
382
389
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-adjunto-el-fichero.feature)
|
@@ -417,13 +424,20 @@ Convenciones generales:
|
|
417
424
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/cuando-borro-el-enesimo-recurso.feature)
|
418
425
|
|
419
426
|
### Entonces pasa (Thens)
|
420
|
-
|
421
427
|
Convenciones generales:
|
422
428
|
|
423
429
|
* frases escritas en primera persona del singular (excepto comprobaciones en bbdd)
|
424
430
|
* para expresar que algo es visible utiliza "veo" o "debo ver" (o "no veo" y "no debo ver")
|
425
431
|
* las comprobaciones del contenido de la base de datos se escriben haciendo una referencia explícita a la misma en primera persona del plural ("tenemos en base de datos") o en tercera del singular ("tiene en base de datos"). Esta verbosidad es intencionada debido a que [dichas comprobaciones están desaconsejadas](http://github.com/aslakhellesoy/cucumber/wikis/given-when-then), haciendo así menos limpio y un poco más costoso su uso.
|
426
432
|
|
433
|
+
#### Debería estar en una página específica \*
|
434
|
+
Entonces debo estar en la portada
|
435
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/estoy-en-url-especifica.feature)
|
436
|
+
|
437
|
+
#### Debería estar en página del índice (index) de un tipo de recurso (modelo)
|
438
|
+
Entonces debo estar en la página de Tomates
|
439
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/estoy-en-url-de-indice-de-recurso.feature)
|
440
|
+
|
427
441
|
#### Veo (o no) un texto \*
|
428
442
|
Entonces debo ver el texto "IVA incluido"
|
429
443
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/veo-el-texto.feature)
|
@@ -442,6 +456,11 @@ Convenciones generales:
|
|
442
456
|
| Selector | Valor |
|
443
457
|
| h1 | Mundo Pepino |
|
444
458
|
[más ejemplos]/mundo-pepino/tree/master/features/es_ES/veo-etiquetas-con-valores.feature
|
459
|
+
|
460
|
+
#### Veo (o no) un campo con un contenido concreto \*
|
461
|
+
Entonces debería ver el campo "nombre" con "Wadus"
|
462
|
+
[más ejemplos]/mundo-pepino/tree/master/features/es_ES/veo-campo-con-valor.feature
|
463
|
+
|
445
464
|
#### Leo (o no) un texto, quitando las etiquetas HTML
|
446
465
|
Entonces debo leer el texto "IVA incluido"
|
447
466
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/leo-el-texto.feature)
|
@@ -450,10 +469,10 @@ Convenciones generales:
|
|
450
469
|
| Muestras de tomate |
|
451
470
|
| Restos de lechuga |
|
452
471
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/leo-los-siguientes-textos.feature)
|
453
|
-
#### Veo (o no) un enlace a una
|
472
|
+
#### Veo (o no) un enlace a una página específica (opcionalmente indicada con un nombre coloquial)
|
454
473
|
Entonces debo ver un enlace a la página de recuperación de contraseña
|
455
474
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/veo-enlace-a-url-especifica)
|
456
|
-
#### Veo (o no) un enlace a una
|
475
|
+
#### Veo (o no) un enlace a una página relativa a una visitada con anterioridad
|
457
476
|
Entonces debo ver un enlace a la siguiente página
|
458
477
|
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/veo-enlace-a-url-relativa)
|
459
478
|
#### Veo marcada (o desmarcada) una casilla (*checkbox*) \*
|
@@ -482,19 +501,27 @@ Convenciones generales:
|
|
482
501
|
|
483
502
|
#### Tenemos en BBDD un valor en un campo de un registro concreto
|
484
503
|
Entonces el Huerto "H-02" tiene en base de datos como Área "2" hectáreas
|
485
|
-
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/
|
504
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/mundo-pepino.feature)
|
486
505
|
|
487
506
|
#### Tenemos en BBDD un valor en un campo del registro mencionando anteriormente
|
488
507
|
Entonces tiene en base de datos como Área "2" hectáreas
|
489
|
-
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/
|
508
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/mundo-pepino.feature)
|
490
509
|
|
491
510
|
#### Tenemos en BBDD una asociación **has\_many** en un registro concreto
|
492
511
|
Entonces el Huerto "H-02" tiene en base de datos un Bancal "A"
|
493
|
-
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/
|
512
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/mundo-pepino.feature)
|
494
513
|
|
495
|
-
#### Tenemos en BBDD una asociación **has\_many**
|
514
|
+
#### Tenemos en BBDD una asociación **has\_many** en un registro mencionando anteriormente
|
496
515
|
Entonces tiene en base de datos un Bancal "B"
|
497
|
-
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/
|
516
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/mundo-pepino.feature)
|
517
|
+
|
518
|
+
#### Tenemos en BBDD un número concreto de registros en una asociación **has\_many** de un registro padre concreto
|
519
|
+
Entonces el Huerto "H-02" tiene en base de datos tres Bancales
|
520
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/mundo-pepino.feature)
|
521
|
+
|
522
|
+
#### Tenemos en BBDD un número concreto de registros en una asociación **has\_many** de un registro mencionando anteriormente
|
523
|
+
Entonces tiene en base de datos siete Bancales
|
524
|
+
[más ejemplos](/nando/mundo-pepino/tree/master/features/es_ES/mundo-pepino.feature)
|
498
525
|
|
499
526
|
(\*) Los **asteriscos** al final de la definición hacen referencia a las **definiciones oficialmente comunes** generadas en inglés por `script/generate cucumber`. Dos asteríscos (\*\*) hacen referencia a una definición presente en la feature autogenerada por `script/generate feature`.
|
500
527
|
|
@@ -1,19 +1,13 @@
|
|
1
1
|
module MundoPepino
|
2
2
|
module Matchers
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
'(?:which|that have as)'
|
10
|
-
end
|
3
|
+
module Fragments
|
4
|
+
def _number_
|
5
|
+
'a|an|one|two|three|four|five|six|seven|eight|nine|ten|\d+'
|
6
|
+
end
|
7
|
+
def _which_
|
8
|
+
'(?:which|that have as)'
|
11
9
|
end
|
12
10
|
end
|
13
11
|
end
|
14
12
|
end
|
15
|
-
|
16
|
-
class << self
|
17
|
-
delegate :_number_, :_which_, :to => 'MundoPepino::Matchers::Bites'
|
18
|
-
end
|
19
|
-
|
13
|
+
require 'mundo_pepino/matchers_delegation'
|
@@ -1,4 +1,8 @@
|
|
1
1
|
# MundoPepino's step definitions in es_ES
|
2
|
+
Dado /^que estoy en (?!#{_pagina_desde_rutas_})(.+)$/ do |pagina|
|
3
|
+
do_visit pagina.to_unquoted.to_url
|
4
|
+
end
|
5
|
+
|
2
6
|
# Creación simple con nombre opcional
|
3
7
|
Dado /^(?:que tenemos )?(#{_numero_}) (?!.+ #{_cuyo_})(.+?)(?: (?:llamad[oa]s? )?['"](.+)["'])?$/i do |numero, modelo, nombre|
|
4
8
|
given_we_have_a_number_of_instances_called numero, modelo, nombre
|
@@ -75,16 +79,8 @@ end
|
|
75
79
|
|
76
80
|
###############################################################################
|
77
81
|
|
78
|
-
Cuando /^(?:que )?visito (?:el|la) #{_pagina_} de ([\w]+|['"][\w ]+["'])$/i do |modelo_en_crudo|
|
79
|
-
|
80
|
-
if model = modelo.to_model
|
81
|
-
pile_up model.new
|
82
|
-
do_visit eval("#{model.table_name}_path")
|
83
|
-
elsif url = "la página de #{modelo_en_crudo}".to_url
|
84
|
-
do_visit url
|
85
|
-
else
|
86
|
-
raise MundoPepino::ModelNotMapped.new(modelo)
|
87
|
-
end
|
82
|
+
Cuando /^(?:que )?visito ((?:el|la) #{_pagina_} de )([\w]+|['"][\w ]+["'])$/i do |la_pagina_de, modelo_en_crudo|
|
83
|
+
do_visit resource_index_or_mapped_page(la_pagina_de, modelo_en_crudo)
|
88
84
|
end
|
89
85
|
|
90
86
|
Cuando /^(?:que )?visito (?:el|la) #{_pagina_} (?:del|de la) (.+) ['"](.+)["']$/i do |modelo, nombre|
|
@@ -124,11 +120,11 @@ Cuando /^(?:que )?visito (?!#{_pagina_desde_rutas_})(.+)$/i do |pagina|
|
|
124
120
|
do_visit pagina.to_unquoted.to_url
|
125
121
|
end
|
126
122
|
|
127
|
-
Cuando /^(?:que )
|
123
|
+
Cuando /^(?:que )?#{_pulso_} (?:en )?el bot[oó]n (.+)$/i do |boton|
|
128
124
|
click_button(boton.to_unquoted.to_translated)
|
129
125
|
end
|
130
126
|
|
131
|
-
Cuando /^(?:que )
|
127
|
+
Cuando /^(?:que )?#{_pulso_} (?:en )?el (enlace|enlace ajax|enlace con efectos) (.+)$/i do |tipo, enlace|
|
132
128
|
options = {}
|
133
129
|
options[:wait] = case tipo.downcase
|
134
130
|
when 'enlace con efectos' then :effects
|
@@ -138,6 +134,21 @@ Cuando /^(?:que )?(?:pulso|pincho) (?:en )?el (enlace|enlace ajax|enlace con efe
|
|
138
134
|
click_link(enlace.to_unquoted.to_translated, options)
|
139
135
|
end
|
140
136
|
|
137
|
+
Cuando /^(?:que )?#{_pulso_} (?:en )?los (?:siguientes )?(?:enlaces|botones)(?: y (?:enlaces|botones))?:$/i do |tabla|
|
138
|
+
tabla.raw.each_with_index do |row, index|
|
139
|
+
if row.size == 1
|
140
|
+
Cuando "pulso el enlace '#{row[0]}'"
|
141
|
+
else
|
142
|
+
next if index == 0
|
143
|
+
if row[0] =~ /enlace/i
|
144
|
+
Cuando "pulso el enlace '#{row[1]}'"
|
145
|
+
else
|
146
|
+
Cuando "pulso el botón '#{row[1]}'"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
141
152
|
Cuando /^(?:que )?(?:completo|relleno) (.+) con (?:el valor )?['"](.+)["']$/i do |campo, valor|
|
142
153
|
find_field_and_do_with_webrat :fill_in, campo, :with => valor
|
143
154
|
end
|
@@ -165,7 +176,7 @@ Cuando /^(?:que )?adjunto el fichero ['"](.*)["'] (?:a|en) (.*)$/ do |ruta, camp
|
|
165
176
|
{:path => ruta, :content_type => ruta.to_content_type}
|
166
177
|
end
|
167
178
|
|
168
|
-
Cuando /^(?:que )?selecciono ["']([^"']+?)["'](?: en (?:el listado de )
|
179
|
+
Cuando /^(?:que )?selecciono ["']([^"']+?)["'](?: (?:en (?:el listado de )?|como )(?!#{_fecha_y_o_hora_})(.+))?$/i do |valor, campo|
|
169
180
|
begin
|
170
181
|
if campo
|
171
182
|
select valor, :from => campo.to_unquoted.to_translated # Vía label
|
@@ -259,6 +270,9 @@ Entonces /^(#{_veo_o_no_}) un enlace (?:al?|para) (.+)?$/i do |should, pagina|
|
|
259
270
|
}.send(not_shouldify(should), raise_error)
|
260
271
|
end
|
261
272
|
|
273
|
+
Entonces /^(#{_veo_o_no_}) el campo (.+) con el (?:valor|texto)? (.+)$/ do |should, campo, valor|
|
274
|
+
field_labeled(campo.to_unquoted).value.send shouldify(should), match(/#{valor.to_unquoted}/)
|
275
|
+
end
|
262
276
|
|
263
277
|
Entonces /^(#{_veo_o_no_}) marcad[ao] (?:la casilla|el checkbox)? ?(.+)$/ do |should, campo|
|
264
278
|
field_labeled(campo.to_unquoted).send shouldify(should), be_checked
|
@@ -328,6 +342,23 @@ Entonces /^(?:el|la) (.+) "(.+)" #{_tiene_en_bbdd_} una? (.+) "(.+)"$/ do |padre
|
|
328
342
|
last_mentioned_should_have_child(hijo, nombre_del_hijo)
|
329
343
|
end
|
330
344
|
|
345
|
+
Entonces /^(?:el|la) (.+) "(.+)" #{_tiene_en_bbdd_} (#{_numero_}) ['"]?([^"']+)["']?$/ do |modelo_padre, nombre_del_padre, numero, modelo_hijo|
|
346
|
+
add_resource_from_database(modelo_padre, nombre_del_padre)
|
347
|
+
last_mentioned_should_have_n_children(modelo_hijo, numero)
|
348
|
+
end
|
349
|
+
|
331
350
|
Entonces /^#{_tiene_en_bbdd_} una? (.+) "(.+)"$/ do |hijo, nombre_del_hijo|
|
332
351
|
last_mentioned_should_have_child(hijo, nombre_del_hijo)
|
333
352
|
end
|
353
|
+
|
354
|
+
Entonces /^#{_tiene_en_bbdd_} (#{_numero_}) ['"]?([^"']+)["']?$/ do |numero, modelo_hijo|
|
355
|
+
last_mentioned_should_have_n_children(modelo_hijo, numero)
|
356
|
+
end
|
357
|
+
|
358
|
+
Entonces /^#{_debo_estar_en_} ((?:el|la) #{_pagina_} de )([\w\s]+|['"][\w ]+["'])$/i do |la_pagina_de, modelo_en_crudo|
|
359
|
+
URI.parse(current_url).path.should == resource_index_or_mapped_page(la_pagina_de, modelo_en_crudo)
|
360
|
+
end
|
361
|
+
|
362
|
+
Entonces /^#{_debo_estar_en_} (?!#{_pagina_desde_rutas_})(.+)$/i do |pagina|
|
363
|
+
URI.parse(current_url).path.should == pagina.to_unquoted.to_url
|
364
|
+
end
|
@@ -1,38 +1,40 @@
|
|
1
1
|
module MundoPepino
|
2
2
|
module Matchers
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
3
|
+
module Fragments
|
4
|
+
def _numero_
|
5
|
+
'un|una|dos|tres|cuatro|cinco|seis|siete|ocho|nueve|diez|\d+'
|
6
|
+
end
|
7
|
+
def _cuyo_
|
8
|
+
'(?:cuy[oa]s?|que tienen? como)'
|
9
|
+
end
|
10
|
+
def _pagina_
|
11
|
+
'(?:p[áa]gina|portada|[íi]ndice|listado|colecci[óo]n)'
|
12
|
+
end
|
13
|
+
def _pagina_desde_rutas_ # páginas obtenida a partir de las rutas
|
14
|
+
'(?:la|el) \w+ del? |su p[aá]gina|su portada'
|
15
|
+
end
|
16
|
+
def _pulso_
|
17
|
+
'(?:pulso|pincho)'
|
18
|
+
end
|
19
|
+
def _fecha_y_o_hora_
|
20
|
+
'(?:(?:la )?fecha|hora)'
|
21
|
+
end
|
22
|
+
def _veo_o_no_
|
23
|
+
'(?:no )?(?:veo|debo ver|deber[ií]a ver)'
|
24
|
+
end
|
25
|
+
def _leo_o_no_
|
26
|
+
'(?:no )?(?:leo|debo leer|deber[íi]a leer)'
|
27
|
+
end
|
28
|
+
def _tenemos_en_bbdd_
|
29
|
+
'(?:en (?:la )?(?:bb?dd?|base de datos) tenemos|tenemos en (?:la )?(?:bb?dd?|base de datos))'
|
30
|
+
end
|
31
|
+
def _tiene_en_bbdd_
|
32
|
+
'(?:tiene en (?:la )?bbdd|en (?:la )?bbdd tiene|tiene en (?:la )?base de datos|en (?:la )?base de datos tiene)'
|
33
|
+
end
|
34
|
+
def _debo_estar_en_
|
35
|
+
'(?:debo|deber[ií]a) (?:estar|encontrarme) en'
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
32
39
|
end
|
33
|
-
|
34
|
-
class << self
|
35
|
-
delegate :_numero_, :_cuyo_, :_pagina_, :_pagina_desde_rutas_,
|
36
|
-
:_veo_o_no_, :_leo_o_no_, :_tenemos_en_bbdd_, :_tiene_en_bbdd_,
|
37
|
-
:to => 'MundoPepino::Matchers::Bites'
|
38
|
-
end
|
40
|
+
require 'mundo_pepino/matchers_delegation'
|
@@ -29,8 +29,10 @@ module MundoPepino
|
|
29
29
|
children_model = params[:children_model].to_unquoted.to_model
|
30
30
|
resources = (mentioned.is_a?(Array) ? mentioned : [mentioned])
|
31
31
|
resources.each do |resource|
|
32
|
+
options = parent_options(resource, children_model)
|
33
|
+
options[:model] = children_model
|
32
34
|
add_resource children_model,
|
33
|
-
translated_hashes(params[:step_table].raw,
|
35
|
+
translated_hashes(params[:step_table].raw, options)
|
34
36
|
end
|
35
37
|
end
|
36
38
|
end
|
@@ -92,10 +92,18 @@ module MundoPepino
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
+
def last_mentioned_should_have_n_children(child, numero)
|
96
|
+
if child_model = child.to_model
|
97
|
+
(last_mentioned.send child_model.table_name).size.should == numero.to_number
|
98
|
+
else
|
99
|
+
raise ModelNotMapped.new(child)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
95
103
|
def last_mentioned_should_have_value(campo, valor)
|
96
104
|
res = last_mentioned
|
97
105
|
if child_model = campo.to_model
|
98
|
-
child = child_model.
|
106
|
+
child = child_model.send "find_by_#{field_for(child_model)}", valor
|
99
107
|
child_field = campo.to_field || child_model.name.underscore
|
100
108
|
(res.send child_field).should == child
|
101
109
|
elsif field = field_for(res.class, campo)
|
@@ -107,7 +115,7 @@ module MundoPepino
|
|
107
115
|
|
108
116
|
def last_mentioned_should_have_child(child, name)
|
109
117
|
if child_model = child.to_model
|
110
|
-
child = child_model.
|
118
|
+
child = child_model.send "find_by_#{field_for(child_model)}", name
|
111
119
|
(last_mentioned.send child_model.table_name).detect do |c|
|
112
120
|
c.id == child.id
|
113
121
|
end.should_not be_nil
|
@@ -155,6 +163,18 @@ module MundoPepino
|
|
155
163
|
end
|
156
164
|
options
|
157
165
|
end
|
166
|
+
|
167
|
+
def resource_index_or_mapped_page(the_page_of, raw_model)
|
168
|
+
unquoted_model = raw_model.to_unquoted
|
169
|
+
if model = unquoted_model.to_model
|
170
|
+
pile_up model.new
|
171
|
+
eval("#{model.table_name}_path")
|
172
|
+
elsif url = "#{the_page_of}#{raw_model}".to_url
|
173
|
+
url
|
174
|
+
else
|
175
|
+
raise MundoPepino::ModelNotMapped.new(unquoted_model)
|
176
|
+
end
|
177
|
+
end
|
158
178
|
end
|
159
179
|
end
|
160
180
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
module MundoPepino
|
3
|
+
module Matchers
|
4
|
+
class Bites
|
5
|
+
class << self
|
6
|
+
include Fragments
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
MundoPepino::Matchers::Fragments.instance_methods(false).select{|m|
|
14
|
+
m =~ /^_[a-z][a-z_]+[a-z]_/
|
15
|
+
}.each do |method|
|
16
|
+
delegate method, :to => 'MundoPepino::Matchers::Bites'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
data/lib/mundo_pepino/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mundo-pepino
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Fernando Garc\xC3\xADa Samblas"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-04 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- lib/mundo_pepino/es_ES/matchers.rb
|
113
113
|
- lib/mundo_pepino/implementations.rb
|
114
114
|
- lib/mundo_pepino/implementations_api.rb
|
115
|
+
- lib/mundo_pepino/matchers_delegation.rb
|
115
116
|
- lib/mundo_pepino/resources_history.rb
|
116
117
|
- lib/mundo_pepino/version.rb
|
117
118
|
- lib/mundo_pepino/visits_history.rb
|