1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

[vcloud_director] tests for #ensure_list!

This commit is contained in:
Dan Abel 2013-10-15 16:35:06 +01:00
parent 353b50acfc
commit 7aed0f2d4d
2 changed files with 74 additions and 16 deletions

View file

@ -414,6 +414,24 @@ module Fog
data[:id] = data[:href].split('/').last
end
# Compensate for Fog::ToHashDocument shortcomings.
# @api private
# @param [Hash] hash
# @param [String,Symbol] key1
# @param [String,Symbol] key2
# @return [Hash]
def ensure_list!(hash, key1, key2=nil)
if key2.nil?
hash[key1] ||= []
hash[key1] = [hash[key1]] if hash[key1].is_a?(Hash)
else
hash[key1] ||= {key2 => []}
hash[key1] = {key2 => []} if hash[key1].empty?
hash[key1][key2] = [hash[key1][key2]] if hash[key1][key2].is_a?(Hash)
end
hash
end
private
def login
@ -433,22 +451,6 @@ module Fog
@org_name = nil
end
# Compensate for Fog::ToHashDocument shortcomings.
# @param [Hash] hash
# @param [String,Symbol] key1
# @param [String,Symbol] key2
# @return [Hash]
def ensure_list!(hash, key1, key2=nil)
if key2.nil?
hash[key1] ||= []
hash[key1] = [hash[key1]] if hash[key1].is_a?(Hash)
else
hash[key1] ||= {key2 => []}
hash[key1] = {key2 => []} if hash[key1].empty?
hash[key1][key2] = [hash[key1][key2]] if hash[key1][key2].is_a?(Hash)
end
hash
end
end
class Mock

View file

@ -0,0 +1,56 @@
Shindo.tests('Compute::VcloudDirector | ensure_list!', ['vclouddirector']) do
# ensure list is not available in mocking mode
unless Fog.mocking?
@service = Fog::Compute::VcloudDirector.new
tests('#ensure_list! for single key') do
tests('for key with a hash').returns(Array) do
testdata = {:k => {:A => '1'}}
@service.ensure_list!(testdata, :k)
testdata[:k].class
end
tests('for key with empty array').returns(Array) do
testdata = {:k => []}
@service.ensure_list!(testdata, :k)
testdata[:k].class
end
tests('for key with nothing').returns(Array) do
testdata = {}
@service.ensure_list!(testdata, :k)
testdata[:k].class
end
tests('for key with non-empty array').returns(Array) do
testdata = {:k => ['one', 'two']}
@service.ensure_list!(testdata, :k)
testdata[:k].class
end
end
tests ('#ensure_list! for nested keys') do
tests('with no key').returns(Array) do
testdata = {}
@service.ensure_list!(testdata, :keys, :key)
testdata[:keys][:key].class
end
tests('with empty string').returns(Array) do
testdata = {:keys => ''}
@service.ensure_list!(testdata, :keys, :key)
testdata[:keys][:key].class
end
tests('with nested hashes').returns(Array) do
testdata = {:keys => {:key => {:a => '1'}}}
@service.ensure_list!(testdata, :keys, :key)
testdata[:keys][:key].class
end
end
end
end