diff --git a/app/models/category_user.rb b/app/models/category_user.rb index 7591e8cd37b..1cb6f502b3e 100644 --- a/app/models/category_user.rb +++ b/app/models/category_user.rb @@ -49,7 +49,7 @@ class CategoryUser < ActiveRecord::Base def self.set_notification_level_for_category(user, level, category_id) record = CategoryUser.where(user: user, category_id: category_id).first - return if record && record.notification_level = level + return if record && record.notification_level == level if record.present? record.notification_level = level diff --git a/spec/models/category_user_spec.rb b/spec/models/category_user_spec.rb index 3386cc35cba..ab3acbff02b 100644 --- a/spec/models/category_user_spec.rb +++ b/spec/models/category_user_spec.rb @@ -45,6 +45,26 @@ describe CategoryUser do expect(TopicUser.get(topic, user).notification_level).to eq(regular) end + it 'allows updating notification level' do + category = Fabricate(:category) + user = Fabricate(:user) + + CategoryUser.set_notification_level_for_category(user, + NotificationLevels.all[:watching_first_post], + category.id) + + expect(CategoryUser.where(user_id: user.id, + category_id: category.id, + notification_level: NotificationLevels.all[:watching_first_post]).exists?).to eq(true) + + CategoryUser.set_notification_level_for_category(user, + NotificationLevels.all[:regular], + category.id) + + expect(CategoryUser.where(user_id: user.id, + category_id: category.id, + notification_level: NotificationLevels.all[:regular]).exists?).to eq(true) + end context 'integration' do before do