From: Michal Fojtik <[email protected]>
Signed-off-by: Michal fojtik <[email protected]> --- server/tests/drivers/base/base_driver_test.rb | 125 ++++++++++++++++++++++++ server/tests/helpers/core_ext/array_tests.rb | 22 +++++ server/tests/helpers/core_ext/hash_tests.rb | 21 ++++ server/tests/helpers/core_ext/integer_tests.rb | 17 ++++ server/tests/helpers/core_ext/string_tests.rb | 72 ++++++++++++++ 5 files changed, 257 insertions(+) create mode 100644 server/tests/drivers/base/base_driver_test.rb create mode 100644 server/tests/helpers/core_ext/array_tests.rb create mode 100644 server/tests/helpers/core_ext/hash_tests.rb create mode 100644 server/tests/helpers/core_ext/integer_tests.rb create mode 100644 server/tests/helpers/core_ext/string_tests.rb diff --git a/server/tests/drivers/base/base_driver_test.rb b/server/tests/drivers/base/base_driver_test.rb new file mode 100644 index 0000000..4173b50 --- /dev/null +++ b/server/tests/drivers/base/base_driver_test.rb @@ -0,0 +1,125 @@ +require 'minitest/autorun' + +load File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'deltacloud', 'drivers', 'base_driver.rb') + +describe Deltacloud::BaseDriver do + + before do + class TestDriver < Deltacloud::BaseDriver + + define_hardware_profile('t1.micro') do + cpu 1 + memory 613 + storage 160 + architecture ['i386','x86_64'] + end + + feature :instances, :user_data + feature :instances, :user_name do + { :max_length => 50 } + end + + define_instance_states do + start.to( :pending ) .automatically + pending.to( :running ) .automatically + pending.to( :stopping ) .on( :stop ) + pending.to( :stopped ) .automatically + stopped.to( :running ) .on( :start ) + running.to( :running ) .on( :reboot ) + running.to( :stopping ) .on( :stop ) + stopping.to(:stopped) .automatically + stopping.to(:finish) .automatically + stopped.to( :finish ) .automatically + end + + def realms(credentials, opts={}); end + end + @driver = TestDriver.new + end + + describe 'when creating a new driver' do + + it 'must return the proper driver name' do + @driver.name.must_equal 'test' + TestDriver.name.must_equal 'TestDriver' + end + + end + + describe 'hardware profiles' do + + it 'must allow to define custom hardware profiles' do + TestDriver.must_respond_to :define_hardware_profile + end + + it 'should not allow to create duplicated profile' do + TestDriver.define_hardware_profile('t1.micro').must_be_nil + TestDriver.hardware_profiles.size.must_equal 1 + end + + it 'should return all defined hardware profiles' do + TestDriver.must_respond_to :hardware_profiles + TestDriver.hardware_profiles.wont_be_empty + end + + it 'should allow to filter hardware profiles' do + @driver.filter_hardware_profiles(TestDriver.hardware_profiles, :architecture => 'i386').wont_be_empty + @driver.filter_hardware_profiles(TestDriver.hardware_profiles, :architecture => 'unknown').must_be_empty + @driver.filter_hardware_profiles(TestDriver.hardware_profiles, :id => 't1.micro').wont_be_empty + @driver.filter_hardware_profiles(TestDriver.hardware_profiles, :id => 'm1.unknown').must_be_empty + end + + end + + describe 'features' do + + it 'should return all defined features' do + TestDriver.features.must_be_kind_of Hash + TestDriver.features.keys.must_include :instances + TestDriver.features[:instances].must_be_kind_of Array + TestDriver.features[:instances].must_include :user_data + end + + it 'must have method to check if feature is defined' do + TestDriver.must_respond_to :'has_feature?' + TestDriver.has_feature?(:instances, :user_data).must_equal true + TestDriver.has_feature?(:instances, :user_unknown).must_equal false + end + + it 'must return feature defined constraints' do + TestDriver.must_respond_to :'constraints' + TestDriver.constraints.must_be_kind_of Hash + TestDriver.constraints[:instances].must_be_kind_of Hash + TestDriver.constraints[:instances][:user_name].must_be_kind_of Hash + TestDriver.constraints[:instances][:user_name][:max_length].must_equal 50 + TestDriver.constraints(:collection => :instances, :feature => :user_name).must_be_kind_of Hash + TestDriver.constraints(:collection => :instances, :feature => :user_name)[:max_length].must_equal 50 + end + + end + + describe 'instance states' do + + it 'should return defined instance state machine' do + TestDriver.must_respond_to :instance_state_machine + TestDriver.instance_state_machine.must_be_kind_of Deltacloud::StateMachine + end + + it 'should return actions for given state' do + @driver.must_respond_to :instance_actions_for + @driver.instance_actions_for('RUNNING').must_be_kind_of Array + @driver.instance_actions_for('RUNNING').must_include :stop + end + + end + + describe 'capabilities' do + + it 'should return if driver has given capability' do + @driver.has_capability?(:realms).must_equal true + @driver.has_capability?(:images).must_equal false + end + + end + +end diff --git a/server/tests/helpers/core_ext/array_tests.rb b/server/tests/helpers/core_ext/array_tests.rb new file mode 100644 index 0000000..c116484 --- /dev/null +++ b/server/tests/helpers/core_ext/array_tests.rb @@ -0,0 +1,22 @@ +require 'minitest/autorun' + +load File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'deltacloud', 'core_ext.rb') + +class TestArray < MiniTest::Unit::TestCase + + + def test_expand_opts! + assert_equal true, [].respond_to?(:"expand_opts!") + a = [1,2,3] + a.expand_opts!(:test => 1) + assert_equal Hash, a.last.class + end + + def test_extract_opts! + assert_equal true, [].respond_to?(:"extract_opts!") + a = [1,2,3, { :test => 1}] + a.extract_opts! + assert_equal [1,2,3], a + end + +end diff --git a/server/tests/helpers/core_ext/hash_tests.rb b/server/tests/helpers/core_ext/hash_tests.rb new file mode 100644 index 0000000..196d70c --- /dev/null +++ b/server/tests/helpers/core_ext/hash_tests.rb @@ -0,0 +1,21 @@ +require 'minitest/autorun' + +load File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'deltacloud', 'core_ext.rb') + +class TestHash < MiniTest::Unit::TestCase + + + def test_gsub_keys + assert_equal true, {}.respond_to?(:"gsub_keys") + h = { + :'test-key-1' => '1', + :'test-key-2' => '2', + :'test-key-3' => '3', + } + h.gsub_keys(/test-key/, 'test') + assert_equal h['test-1'], '1' + assert_equal h['test-2'], '2' + assert_equal h['test-3'], '3' + end + +end diff --git a/server/tests/helpers/core_ext/integer_tests.rb b/server/tests/helpers/core_ext/integer_tests.rb new file mode 100644 index 0000000..2ddf09b --- /dev/null +++ b/server/tests/helpers/core_ext/integer_tests.rb @@ -0,0 +1,17 @@ +require 'minitest/autorun' + +load File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'deltacloud', 'core_ext.rb') + +class TestInteger < MiniTest::Unit::TestCase + + + def test_ordinalize + assert_equal true, 1.respond_to?(:"ordinalize") + assert_equal '1st', 1.ordinalize + assert_equal '2nd', 2.ordinalize + assert_equal '3rd', 3.ordinalize + assert_equal '6th', 6.ordinalize + assert_equal '1100th', 1100.ordinalize + end + +end diff --git a/server/tests/helpers/core_ext/string_tests.rb b/server/tests/helpers/core_ext/string_tests.rb new file mode 100644 index 0000000..89eeaa4 --- /dev/null +++ b/server/tests/helpers/core_ext/string_tests.rb @@ -0,0 +1,72 @@ +require 'minitest/autorun' + +load File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'deltacloud', 'core_ext.rb') + +class TestString < MiniTest::Unit::TestCase + + + def test_blank? + assert_equal true, ''.respond_to?(:"blank?") + assert_equal true, ''.blank? + assert_equal true, ' '.blank? + assert_equal false, 'test'.blank? + end + + def test_titlecase + assert_equal true, ''.respond_to?(:"titlecase") + assert_equal "This Is A String", 'this is a string'.titlecase + assert_equal 'This', 'this'.titlecase + end + + def test_pluralize + assert_equal true, ''.respond_to?(:"pluralize") + assert_equal 'instances', 'instance'.pluralize + assert_equal 'properties', 'property'.pluralize + assert_equal 'addresses', 'address'.pluralize + end + + def test_singularize + assert_equal true, ''.respond_to?(:"singularize") + assert_equal 'instance', 'instances'.singularize + assert_equal 'property', 'properties'.singularize + assert_equal 'address', 'addresses'.singularize + end + + def test_underscore + assert_equal true, ''.respond_to?(:"underscore") + assert_equal 'test_model', 'TestModel'.underscore + assert_equal 'test/model', 'Test::Model'.underscore + end + + def test_camelize + assert_equal true, ''.respond_to?(:"camelize") + assert_equal 'TestModel', 'test_model'.camelize + assert_equal 'testModel', 'test_model'.camelize(:lowercase_first_letter) + end + + def test_uncapitalize + assert_equal true, ''.respond_to?(:"uncapitalize") + assert_equal 'testModel', 'TestModel'.uncapitalize + assert_equal 'test', 'Test'.uncapitalize + end + + def test_upcase_first + assert_equal true, ''.respond_to?(:"upcase_first") + assert_equal 'Test', 'test'.upcase_first + assert_equal 'Test', 'Test'.upcase_first + assert_equal 'TestModel', 'testModel'.upcase_first + end + + def test_truncate + assert_equal true, ''.respond_to?(:"truncate") + assert_equal 'ThisIs...cated', 'ThisIsALogStringThatNeedsToBeTruncated'.truncate + assert_equal 'Thi...ed', 'ThisIsALogStringThatNeedsToBeTruncated'.truncate(5) + assert_equal 'T...', 'ThisIsALogStringThatNeedsToBeTruncated'.truncate(1) + assert_equal 'This', 'This'.truncate(10) + end + + def test_it_has_each + assert_equal true, ''.respond_to?(:each) + end + +end -- 1.7.10.2
