summaryrefslogtreecommitdiff
path: root/spec/services/clusters/cleanup/app_service_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/clusters/cleanup/app_service_spec.rb')
-rw-r--r--spec/services/clusters/cleanup/app_service_spec.rb118
1 files changed, 0 insertions, 118 deletions
diff --git a/spec/services/clusters/cleanup/app_service_spec.rb b/spec/services/clusters/cleanup/app_service_spec.rb
deleted file mode 100644
index ea1194d2100..00000000000
--- a/spec/services/clusters/cleanup/app_service_spec.rb
+++ /dev/null
@@ -1,118 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Clusters::Cleanup::AppService do
- describe '#execute' do
- let!(:cluster) { create(:cluster, :project, :cleanup_uninstalling_applications, provider_type: :gcp) }
- let(:service) { described_class.new(cluster) }
- let(:logger) { service.send(:logger) }
- let(:log_meta) do
- {
- service: described_class.name,
- cluster_id: cluster.id,
- execution_count: 0
- }
- end
-
- subject { service.execute }
-
- shared_examples 'does not reschedule itself' do
- it 'does not reschedule itself' do
- expect(Clusters::Cleanup::AppWorker).not_to receive(:perform_in)
- end
- end
-
- context 'when cluster has no applications available or transitioning applications' do
- it_behaves_like 'does not reschedule itself'
-
- it 'transitions cluster to cleanup_removing_project_namespaces' do
- expect { subject }
- .to change { cluster.reload.cleanup_status_name }
- .from(:cleanup_uninstalling_applications)
- .to(:cleanup_removing_project_namespaces)
- end
-
- it 'schedules Clusters::Cleanup::ProjectNamespaceWorker' do
- expect(Clusters::Cleanup::ProjectNamespaceWorker).to receive(:perform_async).with(cluster.id)
- subject
- end
-
- it 'logs all events' do
- expect(logger).to receive(:info)
- .with(log_meta.merge(event: :schedule_remove_project_namespaces))
-
- subject
- end
- end
-
- context 'when cluster has uninstallable applications' do
- shared_examples 'reschedules itself' do
- it 'reschedules itself' do
- expect(Clusters::Cleanup::AppWorker)
- .to receive(:perform_in)
- .with(1.minute, cluster.id, 1)
-
- subject
- end
- end
-
- context 'has applications with dependencies' do
- let!(:helm) { create(:clusters_applications_helm, :installed, cluster: cluster) }
- let!(:ingress) { create(:clusters_applications_ingress, :installed, cluster: cluster) }
- let!(:cert_manager) { create(:clusters_applications_cert_manager, :installed, cluster: cluster) }
- let!(:jupyter) { create(:clusters_applications_jupyter, :installed, cluster: cluster) }
-
- it_behaves_like 'reschedules itself'
-
- it 'only uninstalls apps that are not dependencies for other installed apps' do
- expect(Clusters::Applications::UninstallWorker)
- .to receive(:perform_async).with(helm.name, helm.id)
- .and_call_original
-
- expect(Clusters::Applications::UninstallWorker)
- .not_to receive(:perform_async).with(ingress.name, ingress.id)
-
- expect(Clusters::Applications::UninstallWorker)
- .to receive(:perform_async).with(cert_manager.name, cert_manager.id)
- .and_call_original
-
- expect(Clusters::Applications::UninstallWorker)
- .to receive(:perform_async).with(jupyter.name, jupyter.id)
- .and_call_original
-
- subject
- end
-
- it 'logs application uninstalls and next execution' do
- expect(logger).to receive(:info)
- .with(log_meta.merge(event: :uninstalling_app, application: kind_of(String))).exactly(3).times
- expect(logger).to receive(:info)
- .with(log_meta.merge(event: :scheduling_execution, next_execution: 1))
-
- subject
- end
-
- context 'cluster is not cleanup_uninstalling_applications' do
- let!(:cluster) { create(:cluster, :project, provider_type: :gcp) }
-
- it_behaves_like 'does not reschedule itself'
- end
- end
-
- context 'when applications are still uninstalling/scheduled/depending on others' do
- let!(:helm) { create(:clusters_applications_helm, :installed, cluster: cluster) }
- let!(:ingress) { create(:clusters_applications_ingress, :scheduled, cluster: cluster) }
- let!(:runner) { create(:clusters_applications_runner, :uninstalling, cluster: cluster) }
-
- it_behaves_like 'reschedules itself'
-
- it 'does not call the uninstallation service' do
- expect(Clusters::Applications::UninstallWorker).not_to receive(:new)
-
- subject
- end
- end
- end
- end
-end