OSDN Git Service

Merge 'master' branch
authorAlex Denisov <1101.debian@gmail.com>
Mon, 10 Sep 2012 06:19:15 +0000 (09:19 +0300)
committerAlex Denisov <1101.debian@gmail.com>
Mon, 10 Sep 2012 06:19:15 +0000 (09:19 +0300)
1  2 
Gemfile
Gemfile.lock
app/observers/users_project_observer.rb
spec/observers/users_project_observer_spec.rb

diff --cc Gemfile
Simple merge
diff --cc Gemfile.lock
Simple merge
@@@ -1,6 -1,24 +1,22 @@@
  class UsersProjectObserver < ActiveRecord::Observer
 -  def after_create(users_project)
 +  def after_commit(users_project)
 +    return if users_project.destroyed?
      Notify.project_access_granted_email(users_project.id).deliver
 -  def after_update(users_project)
 -    Notify.project_access_granted_email(users_project.id).deliver
 -  end
 -
 +  end
++  def after_create(users_project)
+     Event.create(
+       project_id: users_project.project.id,
+       action: Event::Joined,
+       author_id: users_project.user.id
+     )
+   end
 -
+   def after_destroy(users_project)
+     Event.create(
+       project_id: users_project.project.id, 
+       action: Event::Left, 
+       author_id: users_project.user.id
+     )
+   end
  end
@@@ -21,23 -21,47 +21,53 @@@ describe UsersProjectObserver d
      end
      it "should send email to user" do
        Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
 -      subject.after_create(users_project)
 +      subject.after_commit(users_project)
      end
+     it "should create new event" do
+       Event.should_receive(:create).with(
+         project_id: users_project.project.id, 
+         action: Event::Joined, 
+         author_id: users_project.user.id
+       )
+       subject.after_create(users_project)
+     end
+   end
+   describe "#after_update" do
      it "should called when UsersProject updated" do
 -      subject.should_receive(:after_update)
 +      subject.should_receive(:after_commit).once
        UsersProject.observers.enable :users_project_observer do
          users_project.update_attribute(:project_access, 40)
        end
      end
      it "should send email to user" do
        Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true))
 -      subject.after_update(users_project)
 +      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
+   describe "#after_destroy" do
+     it "should called when UsersProject destroyed" do
+       subject.should_receive(:after_destroy)
+       UsersProject.observers.enable :users_project_observer do
+         UsersProject.bulk_delete(
+           users_project.project,
+           [users_project.user.id]
+         )
+       end
+     end
+     it "should create new event" do
+       Event.should_receive(:create).with(
+         project_id: users_project.project.id, 
+         action: Event::Left, 
+         author_id: users_project.user.id
+       )
+       subject.after_destroy(users_project)
+     end
+   end
  end