diff options
Diffstat (limited to 'spec/services/clusters/destroy_service_spec.rb')
-rw-r--r-- | spec/services/clusters/destroy_service_spec.rb | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/spec/services/clusters/destroy_service_spec.rb b/spec/services/clusters/destroy_service_spec.rb new file mode 100644 index 00000000000..c0fcc971500 --- /dev/null +++ b/spec/services/clusters/destroy_service_spec.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Clusters::DestroyService do + describe '#execute' do + subject { described_class.new(cluster.user, params).execute(cluster) } + + let!(:cluster) { create(:cluster, :project, :provided_by_user) } + + context 'when correct params' do + shared_examples 'only removes cluster' do + it 'does not start cleanup' do + expect(cluster).not_to receive(:start_cleanup) + subject + end + + it 'destroys the cluster' do + subject + expect { cluster.reload }.to raise_error ActiveRecord::RecordNotFound + end + end + + context 'when params are empty' do + let(:params) { {} } + + it_behaves_like 'only removes cluster' + end + + context 'when cleanup param is false' do + let(:params) { { cleanup: 'false' } } + + it_behaves_like 'only removes cluster' + end + + context 'when cleanup param is true' do + let(:params) { { cleanup: 'true' } } + + before do + allow(Clusters::Cleanup::AppWorker).to receive(:perform_async) + end + + it 'does not destroy cluster' do + subject + expect(Clusters::Cluster.where(id: cluster.id).exists?).not_to be_falsey + end + + it 'transition cluster#cleanup_status from cleanup_not_started to uninstalling_applications' do + expect { subject }.to change { cluster.cleanup_status_name } + .from(:cleanup_not_started) + .to(:cleanup_uninstalling_applications) + end + end + end + end +end |