From 05f0ebba3a2c8ddf39e436f412dc2ab5bf1353b2 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 18 Jan 2023 19:00:14 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-8-stable-ee --- .../environments/stop_stale_service_spec.rb | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 spec/services/environments/stop_stale_service_spec.rb (limited to 'spec/services/environments/stop_stale_service_spec.rb') diff --git a/spec/services/environments/stop_stale_service_spec.rb b/spec/services/environments/stop_stale_service_spec.rb new file mode 100644 index 00000000000..46d770c30cc --- /dev/null +++ b/spec/services/environments/stop_stale_service_spec.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Environments::StopStaleService, + :clean_gitlab_redis_shared_state, + :sidekiq_inline, + feature_category: :continuous_delivery do + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user) } + + let(:params) { { after: nil } } + let(:service) { described_class.new(project, user, params) } + + describe '#execute' do + subject { service.execute } + + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user) } + let_it_be(:stale_environment) { create(:environment, project: project, updated_at: 2.weeks.ago) } + let_it_be(:stale_environment2) { create(:environment, project: project, updated_at: 2.weeks.ago) } + let_it_be(:recent_environment) { create(:environment, project: project, updated_at: Date.today) } + + let_it_be(:params) { { before: 1.week.ago } } + + before do + allow(service).to receive(:can?).with(user, :stop_environment, project).and_return(true) + end + + it 'only stops stale environments' do + spy_service = Environments::AutoStopWorker.new + + allow(Environments::AutoStopWorker).to receive(:new) { spy_service } + + expect(spy_service).to receive(:perform).with(stale_environment.id).and_call_original + expect(spy_service).to receive(:perform).with(stale_environment2.id).and_call_original + expect(spy_service).not_to receive(:perform).with(recent_environment.id) + + expect(Environment).to receive(:deployed_and_updated_before).with(project.id, params[:before]).and_call_original + expect(Environment).to receive(:without_protected).with(project).and_call_original + + expect(subject.success?).to be_truthy + + expect(stale_environment.reload).to be_stopped + expect(stale_environment2.reload).to be_stopped + expect(recent_environment.reload).to be_available + end + end +end -- cgit v1.2.1