Commit 88964132edaec721e256449579c032ca731781bc
1 parent
97ca4f5d
Exists in
master
and in
4 other branches
Extract observation of User to a UserObserver
Showing
5 changed files
with
37 additions
and
10 deletions
Show diff stats
app/models/mailer_observer.rb
1 | 1 | class MailerObserver < ActiveRecord::Observer |
2 | - observe :issue, :user, :note, :merge_request | |
2 | + observe :issue, :note, :merge_request | |
3 | 3 | cattr_accessor :current_user |
4 | 4 | |
5 | 5 | def after_create(model) |
6 | - new_user(model) if model.kind_of?(User) | |
7 | 6 | new_note(model) if model.kind_of?(Note) |
8 | 7 | new_merge_request(model) if model.kind_of?(MergeRequest) |
9 | 8 | end |
... | ... | @@ -14,10 +13,6 @@ class MailerObserver < ActiveRecord::Observer |
14 | 13 | |
15 | 14 | protected |
16 | 15 | |
17 | - def new_user(user) | |
18 | - Notify.new_user_email(user.id, user.password).deliver | |
19 | - end | |
20 | - | |
21 | 16 | def new_note(note) |
22 | 17 | if note.notify |
23 | 18 | # Notify whole team except author of note | ... | ... |
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 | |
26 | + config.active_record.observers = :mailer_observer, :activity_observer, :project_observer, :key_observer, :issue_observer, :user_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. | ... | ... |
... | ... | @@ -0,0 +1,26 @@ |
1 | +require 'spec_helper' | |
2 | + | |
3 | +describe UserObserver do | |
4 | + subject { UserObserver.instance } | |
5 | + | |
6 | + it 'calls #after_create when new users are created' do | |
7 | + new_user = Factory.new(:user) | |
8 | + subject.should_receive(:after_create).with(new_user) | |
9 | + | |
10 | + User.observers.enable :user_observer do | |
11 | + new_user.save | |
12 | + end | |
13 | + end | |
14 | + | |
15 | + context 'when a new user is created' do | |
16 | + let(:user) { double(:user, id: 42, password: 'P@ssword!') } | |
17 | + let(:notification) { double :notification } | |
18 | + | |
19 | + it 'sends an email' do | |
20 | + notification.should_receive(:deliver) | |
21 | + Notify.should_receive(:new_user_email).with(user.id, user.password).and_return(notification) | |
22 | + | |
23 | + subject.after_create(user) | |
24 | + end | |
25 | + end | |
26 | +end | ... | ... |
spec/requests/admin/admin_users_spec.rb
... | ... | @@ -40,14 +40,15 @@ describe "Admin::Users" do |
40 | 40 | end |
41 | 41 | |
42 | 42 | it "should call send mail" do |
43 | - User.observers.enable :mailer_observer do | |
44 | - Notify.should_receive(:new_user_email).and_return(stub(:deliver => true)) | |
43 | + Notify.should_receive(:new_user_email).and_return(stub(:deliver => true)) | |
44 | + | |
45 | + User.observers.enable :user_observer do | |
45 | 46 | click_button "Save" |
46 | 47 | end |
47 | 48 | end |
48 | 49 | |
49 | 50 | it "should send valid email to user with email & password" do |
50 | - User.observers.enable :mailer_observer do | |
51 | + User.observers.enable :user_observer do | |
51 | 52 | with_resque do |
52 | 53 | click_button "Save" |
53 | 54 | end | ... | ... |