Commit 3c96d1f0e1fa1264250c0f93fbd0c26a0dbb1330
1 parent
aaeb3741
Exists in
master
and in
4 other branches
Send notification on update UserProject relation (access changed)
Showing
3 changed files
with
20 additions
and
3 deletions
Show diff stats
app/observers/users_project_observer.rb
... | ... | @@ -2,4 +2,8 @@ class UsersProjectObserver < ActiveRecord::Observer |
2 | 2 | def after_create(users_project) |
3 | 3 | Notify.project_access_granted_email(users_project.id).deliver |
4 | 4 | end |
5 | + | |
6 | + def after_update(users_project) | |
7 | + Notify.project_access_granted_email(users_project.id).deliver | |
8 | + end | |
5 | 9 | end | ... | ... |
config/application.rb
... | ... | @@ -23,7 +23,7 @@ module Gitlab |
23 | 23 | # config.plugins = [ :exception_notification, :ssl_requirement, :all ] |
24 | 24 | |
25 | 25 | # Activate observers that should always be running. |
26 | - config.active_record.observers = :mailer_observer, :activity_observer, :project_observer, :key_observer, :issue_observer, :user_observer, :system_hook_observer | |
26 | + config.active_record.observers = :mailer_observer, :activity_observer, :project_observer, :key_observer, :issue_observer, :user_observer, :system_hook_observer, :users_project_observer | |
27 | 27 | |
28 | 28 | # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. |
29 | 29 | # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. | ... | ... |
spec/observers/users_project_observer_spec.rb
... | ... | @@ -6,8 +6,8 @@ describe UsersProjectObserver do |
6 | 6 | code: "Fuu", |
7 | 7 | path: "Fuu" ) } |
8 | 8 | let(:users_project) { Factory.create(:users_project, |
9 | - project: project, | |
10 | - user: user )} | |
9 | + project: project, | |
10 | + user: user )} | |
11 | 11 | subject { UsersProjectObserver.instance } |
12 | 12 | |
13 | 13 | describe "#after_create" do |
... | ... | @@ -24,4 +24,17 @@ describe UsersProjectObserver do |
24 | 24 | subject.after_create(users_project) |
25 | 25 | end |
26 | 26 | end |
27 | + | |
28 | + describe "#after_update" do | |
29 | + it "should called when UsersProject updated" do | |
30 | + subject.should_receive(:after_update) | |
31 | + UsersProject.observers.enable :users_project_observer do | |
32 | + users_project.update_attribute(:project_access, 40) | |
33 | + end | |
34 | + end | |
35 | + it "should send email to user" do | |
36 | + Notify.should_receive(:project_access_granted_email).with(users_project.id).and_return(double(deliver: true)) | |
37 | + subject.after_update(users_project) | |
38 | + end | |
39 | + end | |
27 | 40 | end | ... | ... |