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 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
- Sin embargo cada definición ha sido separada en un fichero `.feature` específico para poder enlazarlas desde este índice.
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 URL específica opcionalmente indicada con un nombre coloquial
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 URL asociada a un recurso concreto
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 URL asociada al último recurso definido
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 URL del índice (index) de un tipo de recurso (modelo)
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 URL de creación de un recurso
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 URL de edición de un recurso
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 URL específica (opcionalmente indicada con un nombre coloquial)
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 URL relativa a una visitada con anterioridad
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/tenemos-en-bbdd-valor-en-campo-de-registro.feature)
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/tenemos-en-bbdd-valor-en-campo-de-registro-mencionado.feature)
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/tenemos-en-bbdd-asocioacion-has-many-en-registro.feature)
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** en un registro mencionando anteriormente
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/tenemos-en-bbdd-asocioacion-has-many-en-registro-mencionado.feature)
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
- class Bites
4
- class << self
5
- def _number_
6
- 'a|an|one|two|three|four|five|six|seven|eight|nine|ten|\d+'
7
- end
8
- def _which_
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
- modelo = modelo_en_crudo.to_unquoted
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 )?(?:pulso|pincho) (?:en )?el bot[oó]n (.+)$/i do |boton|
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 )?(?:pulso|pincho) (?:en )?el (enlace|enlace ajax|enlace con efectos) (.+)$/i do |tipo, enlace|
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 )?(.+))?$/i do |valor, campo|
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
- class Bites
4
- class << self
5
- def _numero_
6
- 'un|una|dos|tres|cuatro|cinco|seis|siete|ocho|nueve|diez|\d+'
7
- end
8
- def _cuyo_
9
- '(?:cuy[oa]s?|que tienen? como)'
10
- end
11
- def _pagina_
12
- '(?:p[áa]gina|portada|[íi]ndice|listado|colecci[óo]n)'
13
- end
14
- def _pagina_desde_rutas_ # páginas obtenida a partir de las rutas
15
- '(?:la|el) \w+ del? |su p[aá]gina|su portada'
16
- end
17
- def _veo_o_no_
18
- '(?:no )?(?:veo|debo ver|deber[ií]a ver)'
19
- end
20
- def _leo_o_no_
21
- '(?:no )?(?:leo|debo leer|deber[íi]a leer)'
22
- end
23
- def _tenemos_en_bbdd_
24
- '(?:en (?:la )?(?:bb?dd?|base de datos) tenemos|tenemos en (?:la )?(?:bb?dd?|base de datos))'
25
- end
26
- def _tiene_en_bbdd_
27
- '(?:tiene en (?:la )?bbdd|en (?:la )?bbdd tiene|tiene en (?:la )?base de datos|en (?:la )?base de datos tiene)'
28
- end
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, parent_options(resource, children_model))
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.find_by_name(valor)
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.find_by_name(name)
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
+
@@ -2,7 +2,7 @@ module MundoPepino #:nodoc:
2
2
  class VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 4
5
+ TINY = 5
6
6
  PATCH = nil # Set to nil for official release
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PATCH].compact.join('.')
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
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-10-30 00:00:00 +01:00
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