narfanator/data_spec

View on GitHub
lib/data_spec/cucumber.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'data_spec'

World(DataSpec::Helpers, DataSpec::Matchers)

Given(/^`(.*?)` is:?(?: "(.*?)")?$/) do |var, inline, *block|
  DataSpec::Helpers.evaluate("#{var} = DataSpec.parse(%##{(inline || block.first)}#)")
end

Given(/^`(.*?)` includes:?(?: "(.*?)")?$/) do |var, inline, *block|
  if DataSpec.parse("`#{var}`").is_a? Hash
    DataSpec::Helpers.evaluate("#{var}.merge! DataSpec.parse(%##{(inline || block.first)}#)")
  elsif DataSpec.parse("`#{var}`").is_a? Array
    DataSpec::Helpers.evaluate("#{var} += DataSpec.parse(%##{(inline || block.first)}#)")
  end
end

# Then the data at "path" should be "data"
# Then the data should be: (...)
Then(/^the data(?: at "(.*?)")? should be:?(?: "(.*?)")?$/) do |path, inline, *block|
  data.should match_data(DataSpec.parse(inline || block.first)).at(path)
end

Then(/^the data(?: at "(.*?)")? should include:?(?: "(.*?)")?$/) do |path, inline, *block|
  data.should include_data(DataSpec.parse(inline || block.first)).at(path)
end

Then(/^the data at "(.*?)" should be of type ([A-Z][a-z]+)$/) do |path, type|
  data.should match_block(lambda{|item| item.is_a? Object.const_get(type)}).at(path)
end