From 519b70ea4692834638e4b95c92b81a2160621681 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Fri, 4 Aug 2017 18:12:10 +0200 Subject: [PATCH] FIX: always trigger the ':user_updated' event We don't always use the UserUpdated class to update a user's record --- app/models/user.rb | 6 ++++++ app/services/user_updater.rb | 1 - spec/models/user_spec.rb | 11 +++++++---- 3 files changed, 13 insertions(+), 5 deletions(-) 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