Last active
August 29, 2015 14:00
-
-
Save geraudmathe/11342268 to your computer and use it in GitHub Desktop.
cucumber api step
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
When /^I send (.*) (GET|POST|PUT|DELETE) request to (.* path)(?: with:)?$/ do |format, method, path, *body| | |
headers = case format | |
when /xml/i | |
{ 'CONTENT_TYPE' => 'text/xml' } | |
when /json/i | |
{ 'CONTENT_TYPE' => 'application/json' } | |
else | |
{} | |
end | |
body = case format | |
when /xml/i, /json/i | |
body.first | |
else | |
(@params || {}).deep_merge(JSON::parse(body.first.presence || "{}")) | |
end | |
send(method.downcase, path_to(path) + '?' + default_params, body, headers) | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module NavigationHelpers | |
# Maps a name to a path. Used by the | |
# | |
# When /^I go to (.+)$/ do |page_name| | |
# | |
# step definition in web_steps.rb | |
# | |
def path_to(page_name) | |
case page_name | |
when /the "(.*)" (?:page|path)?/ | |
"#{$1}/" | |
when /the home\s?page/ | |
'/' | |
# the following are examples using path_to_pickle | |
when /^#{capture_model}(?:'s)? (?:page|path)?$/ # eg. the forum's page | |
path_to_pickle $1 | |
when /^#{capture_model}(?:'s)? #{capture_model}(?:'s)? (?:page|path)?$/ # eg. the forum's post's page | |
path_to_pickle $1, $2 | |
when /^#{capture_model}(?:'s)? #{capture_model}'s (.+?) (?:page|path)?$/ # eg. the forum's post's comments page | |
path_to_pickle $1, $2, :extra => $3 # or the forum's post's edit page | |
when /^#{capture_model}(?:'s)? (.+?) (?:page|path)?$/ # eg. the forum's posts page | |
path_to_pickle $1, :extra => $2 # or the forum's edit page | |
# Add more mappings here. | |
# Here is an example that pulls values out of the Regexp: | |
# | |
# when /^(.*)'s profile page$/i | |
# user_profile_path(User.find_by_login($1)) | |
else | |
begin | |
page_name =~ /the (.*) (?:page|path)?/ | |
path_components = $1.split(/\s+/) | |
self.send(path_components.push('path').join('_').to_sym) | |
rescue Object => e | |
raise "Can't find mapping from \"#{page_name}\" to a path.\n" + | |
"Now, go and add a mapping in #{__FILE__}" | |
end | |
end | |
end | |
end | |
World(NavigationHelpers) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment