Os dados dinâmicos em tabelas pepino
Pergunta
Eu tenho um href="http://cukes.info/" rel="noreferrer"> Pepino mesa , um dos campos é uma data que eu gostaria de ter preenchido com data de hoje . Existe uma maneira de fazer isso sem ter que dura data de hoje de código na tabela?
Basicamente, eu gostaria de entrar Time.now.strftime("%Y-%m-%d")
na tabela e não tê-lo quebrar.
Solução
Uma vez que a tabela está sendo processada por sua definição etapa, você poderia colocar um compartimento especial na tabela, como a string "data_de_hoje", e então usar map_column!
para processar os dados na coluna para o formato desejado.
Por exemplo, dada a seguinte tabela
Given the following user records
| username | date |
| alice | 2001-01-01 |
| bob | TODAYS_DATE |
Na sua definição passo que você teria
Given /^the following user records$/ do |table|
table.map_column!('date') do |date|
if date == 'TODAYS_DATE'
date = Time.now.strftime("%Y-%m-%d")
end
date
end
table.hashes.each do |hash|
#Whatever you need to do
end
end
Nota isto só altera os valores quando você perguntar para o hash. mesa e table.raw permanecerá o mesmo, mas sempre que você precisar os hashes de linha, eles serão convertidos pelo código dentro do map_column!
Outras dicas
Eu sei que tem sido idades desde que esta pergunta foi feita, mas eu estava fazendo algo semelhante com pepino recentemente então aqui está uma solução alternativa, se alguém está interessado ...
Given the following user records
| username | date |
| bob | Time.now.strftime("%Y-%m-%d") |
E, em seguida, em sua definição da etapa apenas eval () a seqüência de data ??p>
Given /^the following user records$/ do |table|
table.hashes.each do |hash|
date = eval(hash["date"])
end
end
Embora ao contrário do exemplo de Brandon isso não vai deixar você colocar em datas exatas assim sem mais alguma lógica.
A resposta de bodnarbm é muito bom se é isso que você quer fazer. Minha própria sugestão seria a de tomar um olhar para o rel Timecop gem . Use-o para tempo definido para um dia conhecido, em seguida, ajustar suas tabelas em conformidade.
Com base em arquivos luminárias Eu criei este código:
Feature:
Given the following "Inquirers":
| id | email | start_date |
| 1 | alberto@deco.proteste.pt | <%= Time.now %> |
Helper:
Given(/^the following "(.*?)":$/) do |model, table|
table.hashes.each do |hash|
attributes = Rack::Utils.parse_nested_query(hash.to_query)
object = model_name.classify.constantize.new
attributes.keys.each do |key|
object.send("#{key}=", ERB.new(value).result())
end
...
end
end