module ChefSpec::ServerMethods
def self.entity(method, klass, key)
-
(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