spec/models/target_image_spec.rb in tim-0.1.2 vs spec/models/target_image_spec.rb in tim-0.2.0

- old
+ new

@@ -1,23 +1,26 @@ require 'spec_helper' module Tim describe TargetImage do + before (:each) do + Tim::TargetImage.any_instance.stub(:imported?).and_return(false) + end #TODO FIX: A bug in RSpec V2.1 means that any_instance propogates across context therefore we are stubbing each #target_image. This bug is fixed in RSpec V2.6 describe "Model relationships" do it 'should have one images version' do - target_image = TargetImage.new + target_image = FactoryGirl.build(:target_image) target_image.stub(:create_factory_target_image).and_return(true) - target_image.image_version = ImageVersion.new + target_image.image_version = FactoryGirl.build(:image_version_with_full_tree) target_image.save! TargetImage.find(target_image).image_version.should == target_image.image_version end it 'should have many provider images' do - target_image = TargetImage.new + target_image = FactoryGirl.build(:target_image_with_full_tree) target_image.stub(:create_factory_target_image).and_return(true) ProviderImage.any_instance.stub(:create_factory_provider_image).and_return(true) 2.times do target_image.provider_images << ProviderImage.new end @@ -26,11 +29,11 @@ end end describe "Dummy model relationships" do it "should have one provider type" do - target_image = TargetImage.new + target_image = FactoryGirl.build(:target_image_with_full_tree) target_image.stub(:create_factory_target_image).and_return(true) target_image.provider_type = ProviderType.new target_image.save! TargetImage.find(target_image).provider_type.should == target_image.provider_type end @@ -65,11 +68,78 @@ ti.factory_id.should == "4cc3b024-5fe7-4b0b-934b-c5d463b990b0" ti.status.should == "NEW" ti.status_detail.should == "Building" ti.progress.should == "0" + ti.image_version.factory_base_image_id.should == '2cc3b024-5fe7-4b0b-934b-c5d463b990b0' end + it "should not make a request to factory if the base image is imported" do + Tim::TargetImage.any_instance.stub(:imported?).and_return(true) + ti = FactoryGirl.build(:target_image_import) + ti.should_not_receive(:create_factory_target_image) + ti.save + end + + it "should not make a request to factory if the target image is build method is SNAPSHOT" do + ti = FactoryGirl.build(:target_image_import, :build_method => "SNAPSHOT") + ti.should_not_receive(:create_factory_target_image) + ti.save + end + + it "should send base image id to factory if it is set on image version" do + image_version = FactoryGirl.build(:image_version_with_full_tree, + :factory_base_image_id => "1234") + target_image = FactoryGirl.build(:target_image, + :image_version => image_version) + target_image.stub(:populate_factory_fields) + mock_target_image = double("factory_target_image") + Tim::ImageFactory::TargetImage.stub(:new).and_return(mock_target_image) + mock_target_image.should_receive(:parameters=) + mock_target_image.should_receive(:base_image_id=) + mock_target_image.should_receive(:save!) + target_image.save + end + + it "should send template to factory if factory base image id is not set on image version" do + image_version = FactoryGirl.build(:image_version_with_full_tree) + target_image = FactoryGirl.build(:target_image, + :image_version => image_version) + target_image.stub(:populate_factory_fields) + mock_target_image = double("factory_target_image") + Tim::ImageFactory::TargetImage.stub(:new).and_return(mock_target_image) + mock_target_image.should_receive(:parameters=) + mock_target_image.should_receive(:template=) + mock_target_image.should_receive(:save!) + target_image.save + end + + it "should raise ImagefactoryConnectionRefused exception when it can"\ + " not connect to Imagefactory" do + expect { + Tim::ImageFactory::TargetImage.stub(:new).and_raise(Errno::ECONNREFUSED) + target_image = TargetImage.new + target_image.send(:create_factory_target_image) + }.to raise_error(Tim::Error::ImagefactoryConnectionRefused) + end + + it "should set default factory data when importing" do + target_image = FactoryGirl.build(:target_image_with_full_tree) + target_image.stub(:imported?).and_return(true) + target_image.save! + target_image.progress.should == "COMPLETE" + target_image.status.should == "COMPLETE" + target_image.status_detail.should == "Imported Image" + end + + it "should set default factory data when creating snapshot" do + target_image = FactoryGirl.build(:target_image_with_full_tree) + target_image.stub(:snapshot?).and_return(true) + target_image.save! + target_image.progress.should == "COMPLETE" + target_image.status.should == "COMPLETE" + target_image.status_detail.should == "Snapshot Image" + end end end end end