summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-06-17 12:37:16 +0200
committerJohan Sørensen <johan@johansorensen.com>2009-06-17 12:37:28 +0200
commitb627ba65903e0eeef590a20021f6e317f2bd42a7 (patch)
treec271632f3a77af299a37c0d2ae1c532360145af5
parent173323acd6fc9fbbcd618a3e1ec06e6f24f56148 (diff)
downloadgitorious-mainline-outdated-origin/web-hooks.zip
gitorious-mainline-outdated-origin/web-hooks.tar.gz
gitorious-mainline-outdated-origin/web-hooks.tar.bz2
Be able to delete a repository hookorigin/web-hooks
-rw-r--r--app/controllers/hooks_controller.rb11
-rw-r--r--app/helpers/breadcrumbs_helper.rb2
-rw-r--r--test/functional/hooks_controller_test.rb40
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