spec/sprinkle/actors/capistrano_spec.rb in crafterm-sprinkle-0.2.2 vs spec/sprinkle/actors/capistrano_spec.rb in crafterm-sprinkle-0.2.3

- old
+ new

@@ -133,10 +133,55 @@ @cap.process @name, @commands, @roles unless @testing_errors end end + describe 'transferring files' do + + before do + @source = 'source' + @dest = 'dest' + @roles = %w( app ) + @name = 'name' + + @cap = create_cap do; recipes 'deploy'; end + @cap.stub!(:run).and_return + + @testing_errors = false + end + + it 'should dynamically create a capistrano task containing calling upload' do + @cap.config.should_receive(:task).and_return + end + + it 'should invoke capistrano task after creation' do + @cap.should_receive(:run).with(@name).and_return + end + + it 'should raise capistrano errors when suppressing parameter is not set' do + @testing_errors = true + + @cap.should_receive(:run).and_raise(::Capistrano::CommandError) + lambda { @cap.process @name, @commands, @roles }.should raise_error(::Capistrano::CommandError) + end + + it 'should not raise errors and instead return false when suppressing parameter is set' do + @testing_errors = true + + @cap.should_receive(:run).and_raise(::Capistrano::CommandError) + + value = nil + lambda { value = @cap.process(@name, @commands, @roles, true) }.should_not raise_error(::Capistrano::CommandError) + + value.should_not be + end + + after do + @cap.transfer @name, @source, @dest, @roles unless @testing_errors + end + end + describe 'generated task' do before do @commands = %w( op1 op2 ) @roles = %w( app ) @@ -163,8 +208,58 @@ after do @cap.process @name, @commands, @roles end + end + + describe 'generated transfer' do + before do + @source = 'source' + @dest = 'dest' + @roles = %w( app ) + @name = 'name' + + @cap = create_cap do; recipes 'deploy'; end + @cap.config.stub!(:upload).and_return + end + + it 'should call upload with the source and destination via :scp' do + @cap.config.should_receive(:upload).with(@source, @dest, :via => :scp, :recursive => true).and_return + end + + it 'should be applicable for the supplied roles' do + @cap.stub!(:run).and_return + @cap.config.should_receive(:task).with(:install_name, :roles => @roles).and_return + end + + after do + @cap.transfer @name, @source, @dest, @roles + end + end + + describe 'generated transfer when recursive is false' do + before do + @source = 'source' + @dest = 'dest' + @roles = %w( app ) + @name = 'name' + + @cap = create_cap do; recipes 'deploy'; end + @cap.config.stub!(:upload).and_return + end + + it 'should call upload with the source and destination via :scp' do + @cap.config.should_receive(:upload).with(@source, @dest, :via => :scp, :recursive => false).and_return + end + + it 'should be applicable for the supplied roles' do + @cap.stub!(:run).and_return + @cap.config.should_receive(:task).with(:install_name, :roles => @roles).and_return + end + + after do + @cap.transfer @name, @source, @dest, @roles, false + end end end