Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/workers/incident_management/process_alert_worker_spec.rb')
-rw-r--r--spec/workers/incident_management/process_alert_worker_spec.rb66
1 files changed, 27 insertions, 39 deletions
diff --git a/spec/workers/incident_management/process_alert_worker_spec.rb b/spec/workers/incident_management/process_alert_worker_spec.rb
index 0470552d933..75696d15ab8 100644
--- a/spec/workers/incident_management/process_alert_worker_spec.rb
+++ b/spec/workers/incident_management/process_alert_worker_spec.rb
@@ -2,40 +2,36 @@
require 'spec_helper'
-describe IncidentManagement::ProcessAlertWorker do
+RSpec.describe IncidentManagement::ProcessAlertWorker do
let_it_be(:project) { create(:project) }
let_it_be(:settings) { create(:project_incident_management_setting, project: project, create_issue: true) }
describe '#perform' do
- let(:alert_management_alert_id) { nil }
- let(:alert_payload) do
- {
- 'annotations' => { 'title' => 'title' },
- 'startsAt' => Time.now.rfc3339
- }
- end
-
- let(:created_issue) { Issue.last }
+ let_it_be(:started_at) { Time.now.rfc3339 }
+ let_it_be(:payload) { { 'title' => 'title', 'start_time' => started_at } }
+ let_it_be(:parsed_payload) { Gitlab::Alerting::NotificationPayloadParser.call(payload, project) }
+ let_it_be(:alert) { create(:alert_management_alert, project: project, payload: payload, started_at: started_at) }
+ let(:created_issue) { Issue.last! }
- subject { described_class.new.perform(project.id, alert_payload, alert_management_alert_id) }
+ subject { described_class.new.perform(nil, nil, alert.id) }
before do
allow(IncidentManagement::CreateIssueService)
- .to receive(:new).with(project, alert_payload)
+ .to receive(:new).with(alert.project, parsed_payload)
.and_call_original
end
it 'creates an issue' do
expect(IncidentManagement::CreateIssueService)
- .to receive(:new).with(project, alert_payload)
+ .to receive(:new).with(alert.project, parsed_payload)
expect { subject }.to change { Issue.count }.by(1)
end
- context 'with invalid project' do
- let(:invalid_project_id) { non_existing_record_id }
+ context 'with invalid alert' do
+ let(:invalid_alert_id) { non_existing_record_id }
- subject { described_class.new.perform(invalid_project_id, alert_payload) }
+ subject { described_class.new.perform(nil, nil, invalid_alert_id) }
it 'does not create issues' do
expect(IncidentManagement::CreateIssueService).not_to receive(:new)
@@ -44,16 +40,8 @@ describe IncidentManagement::ProcessAlertWorker do
end
end
- context 'when alert_management_alert_id is present' do
- let!(:alert) { create(:alert_management_alert, project: project) }
- let(:alert_management_alert_id) { alert.id }
-
+ context 'with valid alert' do
before do
- allow(AlertManagement::Alert)
- .to receive(:find_by_id)
- .with(alert_management_alert_id)
- .and_return(alert)
-
allow(Gitlab::AppLogger).to receive(:warn).and_call_original
end
@@ -69,24 +57,24 @@ describe IncidentManagement::ProcessAlertWorker do
expect(Gitlab::AppLogger).not_to have_received(:warn)
end
- end
- context 'when alert cannot be updated' do
- let(:alert) { create(:alert_management_alert, :with_validation_errors, project: project) }
+ context 'when alert cannot be updated' do
+ let_it_be(:alert) { create(:alert_management_alert, :with_validation_errors, project: project, payload: payload) }
- it 'updates AlertManagement::Alert#issue_id' do
- expect { subject }.not_to change { alert.reload.issue_id }
- end
+ it 'updates AlertManagement::Alert#issue_id' do
+ expect { subject }.not_to change { alert.reload.issue_id }
+ end
- it 'logs a warning' do
- subject
+ it 'logs a warning' do
+ subject
- expect(Gitlab::AppLogger).to have_received(:warn).with(
- message: 'Cannot link an Issue with Alert',
- issue_id: created_issue.id,
- alert_id: alert_management_alert_id,
- alert_errors: { hosts: ['hosts array is over 255 chars'] }
- )
+ expect(Gitlab::AppLogger).to have_received(:warn).with(
+ message: 'Cannot link an Issue with Alert',
+ issue_id: created_issue.id,
+ alert_id: alert.id,
+ alert_errors: { hosts: ['hosts array is over 255 chars'] }
+ )
+ end
end
end
end