Skip to content
Snippets Groups Projects
Commit 091c2608 authored by Z.J. van de Weg's avatar Z.J. van de Weg
Browse files

Improve readability and add test

parent fed319b4
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -17,7 +17,7 @@ class ChatNotificationService < Service
if properties.nil?
self.properties = {}
self.notify_only_broken_pipelines = true
self.notify_only_default_branch = false
self.notify_only_default_branch = true
end
end
 
Loading
Loading
@@ -137,20 +137,17 @@ class ChatNotificationService < Service
end
 
def should_pipeline_be_notified?(data)
notify_for_branch(data) && notify_for_pipeline(data)
notify_for_ref?(data) && notify_for_pipeline?(data)
end
 
def notify_for_branch(data)
ref_type = data[:object_attributes][:tag] ? 'tag' : 'branch'
def notify_for_ref?(data)
return true if data[:object_attributes][:tag]
return true unless notify_only_default_branch
 
if ref_type == 'branch' && notify_only_default_branch
data[:object_attributes][:ref] == project.default_branch
else
true
end
data[:object_attributes][:ref] == project.default_branch
end
 
def notify_for_pipeline(data)
def notify_for_pipeline?(data)
case data[:object_attributes][:status]
when 'success'
!notify_only_broken_pipelines?
Loading
Loading
Loading
Loading
@@ -34,6 +34,7 @@ feature 'Admin updates settings', feature: true do
fill_in 'Username', with: 'test_user'
fill_in 'service_push_channel', with: '#test_channel'
page.check('Notify only broken pipelines')
page.check('Notify only default branch')
 
check_all_events
click_on 'Save'
Loading
Loading
Loading
Loading
@@ -324,5 +324,24 @@ RSpec.shared_examples 'slack or mattermost notifications' do
it_behaves_like 'call Slack/Mattermost API'
end
end
context 'only notify for the default branch' do
context 'when enabled' do
let(:pipeline) do
create(:ci_pipeline, project: project, status: 'failed', ref: 'not-the-default-branch')
end
before do
chat_service.notify_only_default_branch = true
end
it 'does not call the Slack/Mattermost API for pipeline events' do
data = Gitlab::DataBuilder::Pipeline.build(pipeline)
result = chat_service.execute(data)
expect(result).to be_falsy
end
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment