summaryrefslogtreecommitdiff
path: root/spec/services/issues/close_service_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/issues/close_service_spec.rb')
-rw-r--r--spec/services/issues/close_service_spec.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/services/issues/close_service_spec.rb b/spec/services/issues/close_service_spec.rb
index 6678d831775..7ca7d3be99c 100644
--- a/spec/services/issues/close_service_spec.rb
+++ b/spec/services/issues/close_service_spec.rb
@@ -252,6 +252,41 @@ RSpec.describe Issues::CloseService do
expect(todo.reload).to be_done
end
+ context 'when there is an associated Alert Management Alert' do
+ context 'when alert can be resolved' do
+ let!(:alert) { create(:alert_management_alert, issue: issue, project: project) }
+
+ it 'resolves an alert and sends a system note' do
+ expect_next_instance_of(SystemNotes::AlertManagementService) do |notes_service|
+ expect(notes_service).to receive(:closed_alert_issue).with(issue)
+ end
+
+ close_issue
+
+ expect(alert.reload.resolved?).to eq(true)
+ end
+ end
+
+ context 'when alert cannot be resolved' do
+ let!(:alert) { create(:alert_management_alert, :with_validation_errors, issue: issue, project: project) }
+
+ before do
+ allow(Gitlab::AppLogger).to receive(:warn).and_call_original
+ end
+
+ it 'writes a warning into the log' do
+ close_issue
+
+ expect(Gitlab::AppLogger).to have_received(:warn).with(
+ message: 'Cannot resolve an associated Alert Management alert',
+ issue_id: issue.id,
+ alert_id: alert.id,
+ alert_errors: { hosts: ['hosts array is over 255 chars'] }
+ )
+ end
+ end
+ end
+
it 'deletes milestone issue counters cache' do
issue.update(milestone: create(:milestone, project: project))