class Level

Helper class when creating nested resources

Public Class Methods

new(levels) click to toggle source
# File lib/cucumber-rest-bdd/level.rb, line 15
def initialize(levels)
  arr = []
  while (matches = /^ (?:for|in|on) ([^"]+?)(?: with (?:key|id))? "([^"]*)"/
    .match(levels))
    levels = levels[matches[0].length, levels.length]
    item = { resource: get_resource(matches[1]), id: matches[2] }
    item[:id] = item[:id].to_i if item[:id] =~ /^\d+$/
    arr.append(item)
  end
  @urls = arr.reverse
end

Public Instance Methods

hash() click to toggle source
# File lib/cucumber-rest-bdd/level.rb, line 31
def hash
  hash = {}
  @urls.each do |l|
    hash[parse_field("#{parse_field(l[:resource]).singularize}_id")] = l[:id]
  end
  hash
end
last_hash() click to toggle source
# File lib/cucumber-rest-bdd/level.rb, line 39
def last_hash
  last = @urls.last
  unless last.nil?
    key = parse_field("#{parse_field(last[:resource]).singularize}_id")
    return {
      key => last[:id]
    }
  end
  {}
end
to_s() click to toggle source
# File lib/cucumber-rest-bdd/level.rb, line 50
def to_s
  url
end
url() click to toggle source
# File lib/cucumber-rest-bdd/level.rb, line 27
def url
  @urls.map { |l| "#{l[:resource]}/#{l[:id]}/" }.join
end