diff options
-rw-r--r-- | app/controllers/hooks_controller.rb | 11 | ||||
-rw-r--r-- | app/helpers/breadcrumbs_helper.rb | 2 | ||||
-rw-r--r-- | test/functional/hooks_controller_test.rb | 40 |
3 files changed, 42 insertions, 11 deletions
diff --git a/app/controllers/hooks_controller.rb b/app/controllers/hooks_controller.rb index 8ad83c9..3644e6c 100644 --- a/app/controllers/hooks_controller.rb +++ b/app/controllers/hooks_controller.rb @@ -44,10 +44,13 @@ class HooksController < ApplicationController render "new" end end - # - # def destroy - # - # end + + def destroy + @hook = @repository.hooks.find(params[:id]) + @hook.destroy + redirect_to repo_owner_path(@repository, :project_repository_hooks_path, + @repository.project, @repository) + end protected def find_repository diff --git a/app/helpers/breadcrumbs_helper.rb b/app/helpers/breadcrumbs_helper.rb index fd94c53..be43b5a 100644 --- a/app/helpers/breadcrumbs_helper.rb +++ b/app/helpers/breadcrumbs_helper.rb @@ -91,7 +91,7 @@ module BreadcrumbsHelper when Message an_object.new_record? ? new_message_path : message_path(an_object) when Breadcrumb::EditRepository - repo_owner_path(@repository, :edit_project_repository_path, @repository.project, @repository) + repo_owner_path(@repository, [:edit, @repository.project, @repository]) else "" # Current path end diff --git a/test/functional/hooks_controller_test.rb b/test/functional/hooks_controller_test.rb index b918899..3c85742 100644 --- a/test/functional/hooks_controller_test.rb +++ b/test/functional/hooks_controller_test.rb @@ -56,12 +56,6 @@ class HooksControllerTest < ActionController::TestCase end context "new / create" do - setup do - @project = projects(:johans) - @repository = @project.repositories.mainlines.first - login_as :johan - end - should "require login" do session[:user_id] = nil get :new, :project_id => @project.to_param, :repository_id => @repository.to_param @@ -105,4 +99,38 @@ class HooksControllerTest < ActionController::TestCase assert_template "new" end end + + context "Destroy" do + setup do + @repository.hooks.create!({ + :user => users(:johan), + :url => "http://example.com" + }) + @hook = @repository.hooks.last + end + + should "require login" do + session[:user_id] = nil + delete :destroy, :project_id => @project.to_param, + :repository_id => @repository.to_param, :id => @hook.to_param + assert_redirected_to(new_sessions_path) + end + + should "require reposÃtory adminship" do + login_as :moe + delete :destroy, :project_id => @project.to_param, + :repository_id => @repository.to_param, :id => @hook.to_param + assert_match(/only repository admins are allowed/, flash[:error]) + assert_redirected_to(project_path(@project)) + end + + should "delete to the hook" do + assert_difference("@repository.hooks.count", -1) do + delete :destroy, :project_id => @project.to_param, + :repository_id => @repository.to_param, :id => @hook.to_param + assert_response :redirect + end + assert_redirected_to project_repository_hooks_path(@project, @repository) + end + end end |