summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/observers/issue_observer.rb8
-rw-r--r--app/observers/merge_request_observer.rb21
-rw-r--r--app/services/git_push_service.rb2
-rw-r--r--spec/services/git_push_service_spec.rb33
4 files changed, 31 insertions, 33 deletions
diff --git a/app/observers/issue_observer.rb b/app/observers/issue_observer.rb
index 886d8b776fb..b150e39e239 100644
--- a/app/observers/issue_observer.rb
+++ b/app/observers/issue_observer.rb
@@ -1,14 +1,14 @@
class IssueObserver < BaseObserver
def after_create(issue)
notification.new_issue(issue, current_user)
-
issue.create_cross_references!(issue.project, current_user)
+ execute_hooks(issue)
end
def after_close(issue, transition)
notification.close_issue(issue, current_user)
-
create_note(issue)
+ execute_hooks(issue)
end
def after_reopen(issue, transition)
@@ -29,4 +29,8 @@ class IssueObserver < BaseObserver
def create_note(issue)
Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit)
end
+
+ def execute_hooks(issue)
+ issue.project.execute_hooks(issue.to_hook_data, :issue_hooks)
+ end
end
diff --git a/app/observers/merge_request_observer.rb b/app/observers/merge_request_observer.rb
index d70da514cd2..9e41f8c38a8 100644
--- a/app/observers/merge_request_observer.rb
+++ b/app/observers/merge_request_observer.rb
@@ -7,15 +7,15 @@ class MergeRequestObserver < ActivityObserver
end
notification.new_merge_request(merge_request, current_user)
-
merge_request.create_cross_references!(merge_request.project, current_user)
+ execute_hooks(merge_request)
end
def after_close(merge_request, transition)
create_event(merge_request, Event::CLOSED)
- Note.create_status_change_note(merge_request, merge_request.target_project, current_user, merge_request.state, nil)
-
notification.close_mr(merge_request, current_user)
+ create_note(merge_request)
+ execute_hooks(merge_request)
end
def after_merge(merge_request, transition)
@@ -31,11 +31,13 @@ class MergeRequestObserver < ActivityObserver
action: Event::MERGED,
author_id: merge_request.author_id_of_changes
)
+
+ execute_hooks(merge_request)
end
def after_reopen(merge_request, transition)
create_event(merge_request, Event::REOPENED)
- Note.create_status_change_note(merge_request, merge_request.target_project, current_user, merge_request.state, nil)
+ create_note(merge_request)
end
def after_update(merge_request)
@@ -53,4 +55,15 @@ class MergeRequestObserver < ActivityObserver
author_id: current_user.id
)
end
+
+ private
+
+ # Create merge request note with service comment like 'Status changed to closed'
+ def create_note(merge_request)
+ Note.create_status_change_note(merge_request, merge_request.target_project, current_user, merge_request.state, nil)
+ end
+
+ def execute_hooks(merge_request)
+ merge_request.project.execute_hooks(merge_request.to_hook_data, :merge_request_hooks)
+ end
end
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index e732b5fd1e6..e54f88e42de 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -32,7 +32,7 @@ class GitPushService
end
if push_to_branch?(ref)
- project.execute_hooks(@push_data.dup)
+ project.execute_hooks(@push_data.dup, :push_hooks)
project.execute_services(@push_data.dup)
end
diff --git a/spec/services/git_push_service_spec.rb b/spec/services/git_push_service_spec.rb
index 2870f59195a..b46022fb2da 100644
--- a/spec/services/git_push_service_spec.rb
+++ b/spec/services/git_push_service_spec.rb
@@ -74,38 +74,19 @@ describe GitPushService do
end
describe "Web Hooks" do
- context "with web hooks" do
- before do
- @project_hook = create(:project_hook)
- @project_hook_2 = create(:project_hook)
- project.hooks << [@project_hook, @project_hook_2]
-
- stub_request(:post, @project_hook.url)
- stub_request(:post, @project_hook_2.url)
- end
-
- it "executes multiple web hook" do
- @project_hook.should_receive(:async_execute).once
- @project_hook_2.should_receive(:async_execute).once
-
- service.execute(project, user, @oldrev, @newrev, @ref)
- end
- end
-
context "execute web hooks" do
- before do
- @project_hook = create(:project_hook)
- project.hooks << [@project_hook]
- stub_request(:post, @project_hook.url)
- end
-
it "when pushing a branch for the first time" do
- @project_hook.should_receive(:async_execute)
+ project.should_receive(:execute_hooks)
service.execute(project, user, @blankrev, 'newrev', 'refs/heads/master')
end
+ it "when pushing new commits to existing branch" do
+ project.should_receive(:execute_hooks)
+ service.execute(project, user, 'oldrev', 'newrev', 'refs/heads/master')
+ end
+
it "when pushing tags" do
- @project_hook.should_not_receive(:async_execute)
+ project.should_not_receive(:execute_hooks)
service.execute(project, user, 'newrev', 'newrev', 'refs/tags/v1.0.0')
end
end