discourse/spec/models/category_user_spec.rb

59 lines
2.2 KiB
Ruby

# encoding: utf-8
require 'spec_helper'
require_dependency 'post_creator'
describe CategoryUser do
it 'allows batch set' do
user = Fabricate(:user)
category1 = Fabricate(:category)
category2 = Fabricate(:category)
watching = CategoryUser.where(user_id: user.id, notification_level: CategoryUser.notification_levels[:watching])
CategoryUser.batch_set(user, :watching, [category1.id, category2.id])
watching.pluck(:category_id).sort.should == [category1.id, category2.id]
CategoryUser.batch_set(user, :watching, [])
watching.count.should == 0
CategoryUser.batch_set(user, :watching, [category2.id])
watching.count.should == 1
end
context 'integration' do
before do
ActiveRecord::Base.observers.enable :all
end
it 'should operate correctly' do
watched_category = Fabricate(:category)
muted_category = Fabricate(:category)
tracked_category = Fabricate(:category)
user = Fabricate(:user)
CategoryUser.create!(user: user, category: watched_category, notification_level: CategoryUser.notification_levels[:watching])
CategoryUser.create!(user: user, category: muted_category, notification_level: CategoryUser.notification_levels[:muted])
CategoryUser.create!(user: user, category: tracked_category, notification_level: CategoryUser.notification_levels[:tracking])
watched_post = create_post(category: watched_category)
muted_post = create_post(category: muted_category)
tracked_post = create_post(category: tracked_category)
Notification.where(user_id: user.id, topic_id: watched_post.topic_id).count.should == 1
Notification.where(user_id: user.id, topic_id: tracked_post.topic_id).count.should == 0
tu = TopicUser.get(tracked_post.topic, user)
tu.notification_level.should == TopicUser.notification_levels[:tracking]
tu.notifications_reason_id.should == TopicUser.notification_reasons[:auto_track_category]
tu = TopicUser.get(muted_post.topic, user)
tu.notification_level.should == TopicUser.notification_levels[:muted]
tu.notifications_reason_id.should == TopicUser.notification_reasons[:auto_mute_category]
end
end
end