diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 9e14af620481c0d91850f9abdd93029b55ccd364..2dcc19bed07ca49fa86a05a7bf98bc24e7a2d52a 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -98,8 +98,7 @@ class ProjectsController < ApplicationController
   def destroy
     return access_denied! unless can?(current_user, :remove_project, project)
 
-    project.team.truncate
-    project.destroy
+    ::Projects::DestroyService.new(@project, current_user, {}).execute
 
     respond_to do |format|
       format.html { redirect_to root_path }
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
index 9f05f39007672a427b97f819bb2c456a2f442f84..7e1d753b021d9cdded104c658f7b5d4d0b5abf61 100644
--- a/app/services/projects/destroy_service.rb
+++ b/app/services/projects/destroy_service.rb
@@ -1,8 +1,9 @@
 module Projects
-  class UpdateService < BaseService
-    def execute(role = :default)
+  class DestroyService < BaseService
+    def execute
       return false unless can?(current_user, :remove_project, project)
 
+      project.team.truncate
       project.repository.expire_cache unless project.empty_repo?
 
       if project.destroy
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb
index f415e750dd578807e26635920ec39b573a61597f..1fdd959da9dc6720d4e56fb5dce9776877906467 100644
--- a/spec/models/event_spec.rb
+++ b/spec/models/event_spec.rb
@@ -65,26 +65,4 @@ describe Event do
     it { @event.branch_name.should == "master" }
     it { @event.author.should == @user }
   end
-
-  describe 'Team events' do
-    let(:user_project) { double.as_null_object }
-    let(:observer) { UsersProjectObserver.instance }
-
-    before {
-      Event.should_receive :create
-      observer.stub(notification: double.as_null_object)
-    }
-
-    describe "Joined project team" do
-      it "should create event" do
-        observer.after_create user_project
-      end
-    end
-
-    describe "Left project team" do
-      it "should create event" do
-        observer.after_destroy user_project
-      end
-    end
-  end
 end
diff --git a/spec/models/system_hook_spec.rb b/spec/models/system_hook_spec.rb
index 51aaccf22673bd289220c849234c0e1ec2162bc0..2b98acdeb6c332c6690b7aa2f5d8a736f60457b3 100644
--- a/spec/models/system_hook_spec.rb
+++ b/spec/models/system_hook_spec.rb
@@ -25,13 +25,14 @@ describe SystemHook do
     end
 
     it "project_create hook" do
-      project = create(:project)
+      Projects::CreateService.new(create(:user), name: 'empty').execute
       WebMock.should have_requested(:post, @system_hook.url).with(body: /project_create/).once
     end
 
     it "project_destroy hook" do
-      project = create(:project)
-      project.destroy
+      user = create(:user)
+      project = create(:empty_project, namespace: user.namespace)
+      Projects::DestroyService.new(project, user, {}).execute
       WebMock.should have_requested(:post, @system_hook.url).with(body: /project_destroy/).once
     end
 
diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb
index 3dac0539031c1cfd6ad5f4c8d585007b750b8a80..74c23418a288865a6ee306ac8a1a956a4eb6adf9 100644
--- a/spec/services/projects/create_service_spec.rb
+++ b/spec/services/projects/create_service_spec.rb
@@ -63,11 +63,8 @@ describe Projects::CreateService do
         @settings.stub(:merge_requests) { true }
         @settings.stub(:wiki) { true }
         @settings.stub(:snippets) { true }
-        stub_const("Settings", Class.new)
-        @restrictions = double("restrictions")
-        @restrictions.stub(:restricted_visibility_levels) { [] }
-        Settings.stub_chain(:gitlab).and_return(@restrictions)
-        Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
+        Gitlab.config.gitlab.stub(restricted_visibility_levels: [])
+        Gitlab.config.gitlab.stub(:default_projects_features).and_return(@settings)
       end
 
       context 'should be public when setting is public' do
@@ -106,11 +103,9 @@ describe Projects::CreateService do
         @settings.stub(:wiki) { true }
         @settings.stub(:snippets) { true }
         @settings.stub(:visibility_level) { Gitlab::VisibilityLevel::PRIVATE }
-        stub_const("Settings", Class.new)
-        @restrictions = double("restrictions")
-        @restrictions.stub(:restricted_visibility_levels) { [ Gitlab::VisibilityLevel::PUBLIC ] }
-        Settings.stub_chain(:gitlab).and_return(@restrictions)
-        Settings.stub_chain(:gitlab, :default_projects_features).and_return(@settings)
+        @restrictions = [ Gitlab::VisibilityLevel::PUBLIC ]
+        Gitlab.config.gitlab.stub(restricted_visibility_levels: @restrictions)
+        Gitlab.config.gitlab.stub(:default_projects_features).and_return(@settings)
       end
 
       context 'should be private when option is public' do
@@ -155,4 +150,3 @@ describe Projects::CreateService do
     Projects::CreateService.new(user, opts).execute
   end
 end
-