From 1404aa8677969a03ed56e8f8350257f317f576d8 Mon Sep 17 00:00:00 2001
From: Lin Jen-Shin <godfat@godfat.org>
Date: Wed, 14 Sep 2016 19:34:24 +0800
Subject: [PATCH] Split notification integration into another branch

---
 app/models/ci/pipeline.rb                        |  9 ---------
 app/models/notification_setting.rb               |  4 +---
 .../ci/send_pipeline_notification_service.rb     | 10 ++++++++--
 app/services/notification_service.rb             | 16 ----------------
 .../send_pipeline_notification_service_spec.rb   |  2 +-
 5 files changed, 10 insertions(+), 31 deletions(-)

diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index b9c46202e5e..0b1df9f4294 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -62,10 +62,6 @@ module Ci
       after_transition do |pipeline, transition|
         pipeline.execute_hooks unless transition.loopback?
       end
-
-      after_transition any => [:success, :failed] do |pipeline, transition|
-        SendPipelineNotificationService.new(pipeline).execute
-      end
     end
 
     # ref can't be HEAD or SHA, can only be branch/tag name
@@ -94,11 +90,6 @@ module Ci
       project.id
     end
 
-    # For now the only user who participants is the user who triggered
-    def participants(current_user = nil)
-      [user]
-    end
-
     def valid_commit_sha
       if self.sha == Gitlab::Git::BLANK_SHA
         self.errors.add(:sha, " cant be 00000000 (branch removal)")
diff --git a/app/models/notification_setting.rb b/app/models/notification_setting.rb
index 43fc218de2b..121b598b8f3 100644
--- a/app/models/notification_setting.rb
+++ b/app/models/notification_setting.rb
@@ -32,9 +32,7 @@ class NotificationSetting < ActiveRecord::Base
     :reopen_merge_request,
     :close_merge_request,
     :reassign_merge_request,
-    :merge_merge_request,
-    :failed_pipeline,
-    :success_pipeline
+    :merge_merge_request
   ]
 
   store :events, accessors: EMAIL_EVENTS, coder: JSON
diff --git a/app/services/ci/send_pipeline_notification_service.rb b/app/services/ci/send_pipeline_notification_service.rb
index d330fa1a73c..db462fe0291 100644
--- a/app/services/ci/send_pipeline_notification_service.rb
+++ b/app/services/ci/send_pipeline_notification_service.rb
@@ -6,8 +6,14 @@ module Ci
       @pipeline = new_pipeline
     end
 
-    def execute(recipients = nil)
-      notification_service.pipeline_finished(pipeline, recipients)
+    def execute(recipients)
+      email_template = "pipeline_#{pipeline.status}_email"
+
+      return unless Notify.respond_to?(email_template)
+
+      recipients.each do |to|
+        Notify.public_send(email_template, pipeline, to).deliver_later
+      end
     end
   end
 end
diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb
index 9ce06b69e9d..0479a41b6a5 100644
--- a/app/services/notification_service.rb
+++ b/app/services/notification_service.rb
@@ -311,22 +311,6 @@ class NotificationService
     mailer.project_was_not_exported_email(current_user, project, errors).deliver_later
   end
 
-  def pipeline_finished(pipeline, recipients = nil)
-    email_template = "pipeline_#{pipeline.status}_email"
-
-    return unless mailer.respond_to?(email_template)
-
-    recipients ||= build_recipients(
-      pipeline,
-      pipeline.project,
-      nil, # The acting user, who won't be added to recipients
-      action: pipeline.status)
-
-    recipients.each do |to|
-      mailer.public_send(email_template, pipeline, to.email).deliver_later
-    end
-  end
-
   protected
 
   # Get project/group users with CUSTOM notification level
diff --git a/spec/services/ci/send_pipeline_notification_service_spec.rb b/spec/services/ci/send_pipeline_notification_service_spec.rb
index ba588ed8ef5..cb53ba8b051 100644
--- a/spec/services/ci/send_pipeline_notification_service_spec.rb
+++ b/spec/services/ci/send_pipeline_notification_service_spec.rb
@@ -9,7 +9,7 @@ describe Ci::SendPipelineNotificationService, services: true do
     shared_examples 'sending emails' do
       it 'sends an email to pipeline user' do
         perform_enqueued_jobs do
-          subject.execute
+          subject.execute([user.email])
         end
 
         email = ActionMailer::Base.deliveries.last
-- 
GitLab