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:
parent
353b50acfc
commit
7aed0f2d4d
2 changed files with 74 additions and 16 deletions
|
@ -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
|
||||
|
|
56
tests/vcloud_director/ensure_list_tests.rb
Normal file
56
tests/vcloud_director/ensure_list_tests.rb
Normal 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
|
Loading…
Reference in a new issue