From 9e3094b232fe5343e5986f0e6a072a5194e18ada Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 17 Jun 2014 21:36:40 +0300 Subject: [PATCH] Remove UsersGroup observer --- app/models/users_group.rb | 17 +++++++++++ app/observers/users_group_observer.rb | 9 ------ config/application.rb | 1 - spec/models/users_group_spec.rb | 28 ++++++++++++++++++ spec/observers/users_group_observer_spec.rb | 32 --------------------- 5 files changed, 45 insertions(+), 42 deletions(-) delete mode 100644 app/observers/users_group_observer.rb delete mode 100644 spec/observers/users_group_observer_spec.rb diff --git a/app/models/users_group.rb b/app/models/users_group.rb index 5f8b832d51e..242c8abb3ca 100644 --- a/app/models/users_group.rb +++ b/app/models/users_group.rb @@ -33,6 +33,9 @@ class UsersGroup < ActiveRecord::Base scope :with_group, ->(group) { where(group_id: group.id) } scope :with_user, ->(user) { where(user_id: user.id) } + after_create :notify_create + after_update :notify_update + validates :group_access, inclusion: { in: UsersGroup.group_access_roles.values }, presence: true validates :user_id, presence: true validates :group_id, presence: true @@ -43,4 +46,18 @@ class UsersGroup < ActiveRecord::Base def access_field group_access end + + def notify_create + notification_service.new_group_member(self) + end + + def notify_update + if group_access_changed? + notification_service.update_group_member(self) + end + end + + def notification_service + NotificationService.new + end end diff --git a/app/observers/users_group_observer.rb b/app/observers/users_group_observer.rb deleted file mode 100644 index 42a05b5e177..00000000000 --- a/app/observers/users_group_observer.rb +++ /dev/null @@ -1,9 +0,0 @@ -class UsersGroupObserver < BaseObserver - def after_create(membership) - notification.new_group_member(membership) - end - - def after_update(membership) - notification.update_group_member(membership) if membership.group_access_changed? - end -end diff --git a/config/application.rb b/config/application.rb index 43fcb4bcf7e..1283c8b78ef 100644 --- a/config/application.rb +++ b/config/application.rb @@ -23,7 +23,6 @@ module Gitlab :project_observer, :system_hook_observer, :user_observer, - :users_group_observer, :users_project_observer # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. diff --git a/spec/models/users_group_spec.rb b/spec/models/users_group_spec.rb index acecae07146..05dd97d92d4 100644 --- a/spec/models/users_group_spec.rb +++ b/spec/models/users_group_spec.rb @@ -37,4 +37,32 @@ describe UsersGroup do it { should respond_to(:user_name) } it { should respond_to(:user_email) } end + + context 'notification' do + describe "#after_create" do + it "should send email to user" do + membership = build(:users_group) + membership.stub(notification_service: double('NotificationService').as_null_object) + membership.should_receive(:notification_service) + membership.save + end + end + + describe "#after_update" do + before do + @membership = create :users_group + @membership.stub(notification_service: double('NotificationService').as_null_object) + end + + it "should send email to user" do + @membership.should_receive(:notification_service) + @membership.update_attribute(:group_access, UsersGroup::MASTER) + end + + it "does not send an email when the access level has not changed" do + @membership.should_not_receive(:notification_service) + @membership.update_attribute(:group_access, UsersGroup::OWNER) + end + end + end end diff --git a/spec/observers/users_group_observer_spec.rb b/spec/observers/users_group_observer_spec.rb deleted file mode 100644 index 2ab99c33b78..00000000000 --- a/spec/observers/users_group_observer_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -require 'spec_helper' - -describe UsersGroupObserver do - before(:each) { enable_observers } - after(:each) { disable_observers } - - subject { UsersGroupObserver.instance } - before { subject.stub(notification: double('NotificationService').as_null_object) } - - describe "#after_create" do - it "should send email to user" do - subject.should_receive(:notification) - create(:users_group) - end - end - - describe "#after_update" do - before do - @membership = create :users_group - end - - it "should send email to user" do - subject.should_receive(:notification) - @membership.update_attribute(:group_access, UsersGroup::MASTER) - end - - it "does not send an email when the access level has not changed" do - subject.should_not_receive(:notification) - @membership.update_attribute(:group_access, UsersGroup::OWNER) - end - end -end