From 8bfc62fb8b02bde7da97958deb8aeda63581bfce Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Wed, 15 Jan 2014 14:38:50 +0200
Subject: [PATCH] Convert TestHookContext into TestHookService. Added tests

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/contexts/test_hook_context.rb            |  7 -------
 app/controllers/projects/hooks_controller.rb | 11 ++++++++---
 app/services/test_hook_service.rb            |  6 ++++++
 spec/services/test_hook_service_spec.rb      | 14 ++++++++++++++
 4 files changed, 28 insertions(+), 10 deletions(-)
 delete mode 100644 app/contexts/test_hook_context.rb
 create mode 100644 app/services/test_hook_service.rb
 create mode 100644 spec/services/test_hook_service_spec.rb

diff --git a/app/contexts/test_hook_context.rb b/app/contexts/test_hook_context.rb
deleted file mode 100644
index 63eda6c7d06..00000000000
--- a/app/contexts/test_hook_context.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class TestHookContext < BaseContext
-  def execute
-    hook = project.hooks.find(params[:id])
-    data = GitPushService.new.sample_data(project, current_user)
-    hook.execute(data)
-  end
-end
diff --git a/app/controllers/projects/hooks_controller.rb b/app/controllers/projects/hooks_controller.rb
index 314d87df034..a863b318324 100644
--- a/app/controllers/projects/hooks_controller.rb
+++ b/app/controllers/projects/hooks_controller.rb
@@ -24,15 +24,20 @@ class Projects::HooksController < Projects::ApplicationController
   end
 
   def test
-    TestHookContext.new(project, current_user, params).execute
+    TestHookService.new.execute(hook, current_user)
 
     redirect_to :back
   end
 
   def destroy
-    @hook = @project.hooks.find(params[:id])
-    @hook.destroy
+    hook.destroy
 
     redirect_to project_hooks_path(@project)
   end
+
+  private
+
+  def hook
+    @hook ||= @project.hooks.find(params[:id])
+  end
 end
diff --git a/app/services/test_hook_service.rb b/app/services/test_hook_service.rb
new file mode 100644
index 00000000000..17d86a7a274
--- /dev/null
+++ b/app/services/test_hook_service.rb
@@ -0,0 +1,6 @@
+class TestHookService
+  def execute(hook, current_user)
+    data = GitPushService.new.sample_data(hook.project, current_user)
+    hook.execute(data)
+  end
+end
diff --git a/spec/services/test_hook_service_spec.rb b/spec/services/test_hook_service_spec.rb
new file mode 100644
index 00000000000..fbe9066096d
--- /dev/null
+++ b/spec/services/test_hook_service_spec.rb
@@ -0,0 +1,14 @@
+require 'spec_helper'
+
+describe TestHookService do
+  let (:user)    { create :user }
+  let (:project) { create :project_with_code }
+  let (:hook)    { create :project_hook, project: project }
+
+  describe :execute do
+    it "should execute successfully" do
+      stub_request(:post, hook.url).to_return(status: 200)
+      TestHookService.new.execute(hook, user).should be_true
+    end
+  end
+end
-- 
GitLab