From: Tomas Sedovic tsedovic@redhat.com
--- src/spec/models/deployable_spec.rb | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/src/spec/models/deployable_spec.rb b/src/spec/models/deployable_spec.rb index af1fc9f..aec4518 100644 --- a/src/spec/models/deployable_spec.rb +++ b/src/spec/models/deployable_spec.rb @@ -22,4 +22,35 @@ describe Deployable do d.assemblies.size.should eql(1) end
+ it "should not be destroyable when it has running instances" do + deployable = Factory.create(:deployable) + deployment = Factory.create(:deployment, :deployable_id => deployable.id) + assembly = Factory.create(:assembly) + + instance = Factory.create(:instance, :deployment_id => deployment.id, :assembly_id => assembly.id, :template_id => nil) + Deployable.find(deployable).should_not be_destroyable + + instance.state = Instance::STATE_STOPPED + instance.save! + Deployable.find(deployable).should be_destroyable + end + + it "should not be destroyable when it has stopped stateful instances" do + deployable = Factory.build(:deployable) + deployment = Factory.build(:deployment, :deployable_id => deployable.id) + deployable.deployments << deployment + assembly = Factory.build(:assembly) + + instance = Factory.build(:instance, :deployment_id => deployment.id, :assembly_id => assembly.id, :template_id => nil) + instance.stub!(:restartable?).and_return(true) + deployment.instances << instance + deployable.should_not be_destroyable + + instance.state = Instance::STATE_STOPPED + deployable.should_not be_destroyable + + instance.stub!(:restartable?).and_return(false) + deployable.should be_destroyable + end + end