Jakby ktoś chciał porównywać tabele podczas testów Cucumber+Celerity/Culerity to napisałem takiego małego helpera:
def culerity_table(table)
returning table.method_missing('to_a') do |c|
c.map! { |s| (eval s).to_a }
max_size = c.collect { |r| r.size }.max
c.each { |row| row[max_size] = nil }
end
end
Wywołujemy np.:
Then /^I should see the following sellers:$/ do |expected_sellers_table|
expected_sellers_table.diff!(culerity_table($browser.table(:index => 1)))
end
Po co to? Gdyż dziwnie zachowuje się metoda to_a w przypadku CulerityProxyObject (czy jakoś tak).
Culerity dostarcza pomostu pomiędzy Celerity pracującym na JRUby a Cucumberem na Rubym. Wywołanie: $browser.table(:index => 1)
dostarcza nam jakąś tablicę obiektów typu Culerity::RemoteObjectProxy ( http://rdoc.info/rdoc/langalex/culerity/blob/9f1280ef585c63693d420eb6b71caed8eaad872a/Culerity/RemoteObjectProxy.html ). Ten helperek przekształca te obiekty w coś co jest łykalne przez diff! webrata