diff --git a/app/models/user.rb b/app/models/user.rb index 59c7981181e..3ae37a3d6d1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -103,6 +103,7 @@ class User < ActiveRecord::Base after_save :expire_old_email_tokens after_save :index_search after_commit :trigger_user_created_event, on: :create + after_commit :trigger_user_updated_event, on: :update before_destroy do # These tables don't have primary keys, so destroying them with activerecord is tricky: @@ -1092,6 +1093,11 @@ class User < ActiveRecord::Base true end + def trigger_user_updated_event + DiscourseEvent.trigger(:user_updated, self) + true + end + end # == Schema Information diff --git a/app/services/user_updater.rb b/app/services/user_updater.rb index 758c019c2a0..8b36ce94252 100644 --- a/app/services/user_updater.rb +++ b/app/services/user_updater.rb @@ -121,7 +121,6 @@ class UserUpdater end end - DiscourseEvent.trigger(:user_updated, user) if saved saved end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 4f5524ec9d4..138835a39e9 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -90,12 +90,15 @@ describe User do user.approve(admin) end - it 'triggers a extensibility event' do + it 'triggers extensibility events' do user && admin # bypass the user_created event - event = DiscourseEvent.track_events { user.approve(admin) }.first + user_updated_event, user_approved_event = DiscourseEvent.track_events { user.approve(admin) } - expect(event[:event_name]).to eq(:user_approved) - expect(event[:params].first).to eq(user) + expect(user_updated_event[:event_name]).to eq(:user_updated) + expect(user_updated_event[:params].first).to eq(user) + + expect(user_approved_event[:event_name]).to eq(:user_approved) + expect(user_approved_event[:params].first).to eq(user) end context 'after approval' do