diff --git a/app/models/topic_tracking_state.rb b/app/models/topic_tracking_state.rb index 9a5fb66a3b5..aa65917c6ea 100644 --- a/app/models/topic_tracking_state.rb +++ b/app/models/topic_tracking_state.rb @@ -306,7 +306,7 @@ class TopicTrackingState #{tags_filter} topics.deleted_at IS NULL AND #{category_filter} - (category_users.id IS NULL OR + (category_users.notification_level IS NULL OR last_read_post_number IS NOT NULL OR category_users.notification_level <> #{CategoryUser.notification_levels[:muted]}) SQL diff --git a/spec/models/topic_tracking_state_spec.rb b/spec/models/topic_tracking_state_spec.rb index 5f67317ff10..1691547ff46 100644 --- a/spec/models/topic_tracking_state_spec.rb +++ b/spec/models/topic_tracking_state_spec.rb @@ -353,6 +353,19 @@ describe TopicTrackingState do expect(report.length).to eq(1) end + it "correctly handles category_users with null notification level" do + user = Fabricate(:user) + post + + report = TopicTrackingState.report(user) + expect(report.length).to eq(1) + + CategoryUser.create!(user_id: user.id, category_id: post.topic.category_id) + + report = TopicTrackingState.report(user) + expect(report.length).to eq(1) + end + context 'muted tags' do it "remove_muted_tags_from_latest is set to always" do SiteSetting.remove_muted_tags_from_latest = 'always'