spec/tasks/default_spec.rb in mina-1.2.4 vs spec/tasks/default_spec.rb in mina-1.2.5

- old
+ new

@@ -1,36 +1,108 @@ +# frozen_string_literal: true + require 'spec_helper' RSpec.describe 'default', type: :rake do + before do + load_default_config + end + + describe 'environment' do + it 'outputs a deprecation warning' do + expect { invoke_all }.to output(output_file('environment')).to_stdout + end + end + describe 'ssh_keyscan_repo' do it 'scans ssh' do Mina::Configuration.instance.set(:repository, 'git@github.com/exapmle') expect { invoke_all }.to output(output_file('ssh_keyscan_repo')).to_stdout end end + describe 'ssh_keyscan_domain' do + let(:task_name) { 'ssh_keyscan_domain' } + + context "when domain isn't set" do + before do + Mina::Configuration.instance.remove(:domain) + end + + it 'exits with an error message' do + expect do + invoke_all + end.to raise_error(SystemExit) + .and output(/domain must be defined!/).to_stdout + end + end + + context "when port isn't set" do + before do + Mina::Configuration.instance.remove(:port) + end + + it 'exits with an error message' do + expect do + invoke_all + end.to raise_error(SystemExit) + .and output(/port must be defined!/).to_stdout + end + end + + context 'when conditions are met' do + it 'scans ssh' do + expect do + invoke_all + end.to output(output_file('ssh_keyscan_domain')).to_stdout + end + end + end + describe 'run' do it 'runs command' do - subject.invoke('ls -al') + task.invoke('ls -al') expect { run_commands.invoke }.to output(output_file('run')).to_stdout end it 'exits if no command given' do - expect { subject.invoke }.to raise_error(SystemExit) + expect { task.invoke }.to raise_error(SystemExit) + .and output(/You need to provide a command/).to_stdout end end describe 'ssh' do - it 'runs ssh' do - expect_any_instance_of(Kernel).to receive(:exec) - subject.invoke + it 'opens an SSH connection when :deploy_to exists' do + expect do + invoke_all + end.to change { Mina::Configuration.instance.fetch(:execution_mode) }.to(:exec) + .and output(output_file('ssh')).to_stdout end + + it "exits with an error message when :deploy_to isn't set" do + Mina::Configuration.instance.remove(:deploy_to) + + expect do + invoke_all + end.to raise_error(SystemExit) + .and output(/deploy_to must be defined!/).to_stdout + end end describe 'debug_configuration_variables' do - it 'prints configrtion variables' do + before do Mina::Configuration.instance.set(:debug_configuration_variables, true) - expect { invoke_all }.to output(/------- Printing current config variables -------/).to_stdout + ENV['keep_releases'] = '1234' + end + + after do Mina::Configuration.instance.remove(:debug_configuration_variables) + ENV.delete('keep_releases') + end + + it 'prints configuration variables' do + expect do + invoke_all + end.to output(output_file('debug_configuration_variables')).to_stdout end end end