module ChefSpec::ServerMethods

def self.entity(method, klass, key)

Returns:
  • (true, false) -
  • (Array) -
  • ($2, nil) -

Parameters:
  • name (String) --
  • name (String) --
  • data (Hash) --
  • name (String) --
def self.entity(method, klass, key)
  class_eval <<-EOH, __FILE__, __LINE__ + 1
    def create_#{method}(name, data = {})
      # Automatically set the "name" if no explicit one was given
      data[:name] ||= name
      # Convert it to JSON
      data = JSON.fast_generate(data)
      load_data(name, '#{key}', data)
    end
    def get_#{method}(name)
      data = get('#{key}', name)
      json = JSON.parse(data)
      case
      when #{klass}.respond_to?(:json_create)
        #{klass}.json_create(json)
      when #{klass}.respond_to?(:from_hash)
        #{klass}.from_hash(json)
      else
        #{klass}.new(json)
      end
    rescue ChefZero::DataStore::DataNotFoundError
      nil
    end
    def get_#{key}
      get('#{key}')
    end
    def has_#{method}?(name)
      !get('#{key}', name).nil?
    rescue ChefZero::DataStore::DataNotFoundError
      false
    end
  EOH
end