diff --git a/Gemfile b/Gemfile
index b0724fadf5ba13676f7331bb4ae125955b19b5d5..5105e550c496c79938b0500455257c56ec7450b7 100644
--- a/Gemfile
+++ b/Gemfile
@@ -117,6 +117,7 @@ group :test do
   gem 'email_spec'
   gem 'resque_spec'
   gem "webmock"
+  gem 'test_after_commit'
 end
 
 group :production do
diff --git a/Gemfile.lock b/Gemfile.lock
index 7ec37f59dfc5ab6a5f66b226f4435b30dbc2c90f..da6c068b23f8b03d4fff39c305fa4ac0e6875d77 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -341,6 +341,7 @@ GEM
       tilt (~> 1.1, != 1.3.0)
     sqlite3 (1.3.6)
     stamp (0.1.6)
+    test_after_commit (0.0.1)
     therubyracer (0.10.1)
       libv8 (~> 3.3.10)
     thin (1.3.1)
@@ -431,6 +432,7 @@ DEPENDENCIES
   six
   sqlite3
   stamp
+  test_after_commit
   therubyracer
   thin
   uglifier (= 1.0.3)
diff --git a/app/observers/users_project_observer.rb b/app/observers/users_project_observer.rb
index e2fa1676661a455f5e3f03357b846dbb0bba3601..728607f03ad087ad4fa9b79fee2bb6c06d251ba3 100644
--- a/app/observers/users_project_observer.rb
+++ b/app/observers/users_project_observer.rb
@@ -1,12 +1,4 @@
 class UsersProjectObserver < ActiveRecord::Observer
-  #def after_create(users_project)
-    #Notify.project_access_granted_email(users_project.id).deliver
-  #end
-
-  #def after_update(users_project)
-    #Notify.project_access_granted_email(users_project.id).deliver
-  #end
-
   def after_commit(users_project)
     Notify.project_access_granted_email(users_project.id).deliver
   end
diff --git a/spec/observers/users_project_observer_spec.rb b/spec/observers/users_project_observer_spec.rb
index 68fbcc4f8c6619e77a39f8eb4778ed11c4734a70..5bc4c877c1541098e53a1c53dcaca64e38da24e6 100644
--- a/spec/observers/users_project_observer_spec.rb
+++ b/spec/observers/users_project_observer_spec.rb
@@ -10,9 +10,9 @@ describe UsersProjectObserver do
                                         user: user )}
   subject { UsersProjectObserver.instance }
 
-  describe "#after_create" do
+  describe "#after_commit" do
     it "should called when UsersProject created" do
-      subject.should_receive(:after_commit)
+      subject.should_receive(:after_commit).once
       UsersProject.observers.enable :users_project_observer do
         Factory.create(:users_project, 
                        project: project, 
@@ -23,11 +23,8 @@ describe UsersProjectObserver do
       Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
       subject.after_commit(users_project)
     end
-  end
-
-  describe "#after_update" do
     it "should called when UsersProject updated" do
-      subject.should_receive(:after_commit)
+      subject.should_receive(:after_commit).once
       UsersProject.observers.enable :users_project_observer do
         users_project.update_attribute(:project_access, 40)
       end
@@ -36,5 +33,11 @@ describe UsersProjectObserver do
       Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
       subject.after_commit(users_project)
     end
+    it "should not called after UsersProject destroyed" do
+      subject.should_not_receive(:after_commit)
+      UsersProject.observers.enable :users_project_observer do
+        users_project.destroy
+      end
+    end
   end
 end