diff --git a/app/mailers/user_notifications.rb b/app/mailers/user_notifications.rb index 6f2345137..517294278 100644 --- a/app/mailers/user_notifications.rb +++ b/app/mailers/user_notifications.rb @@ -186,11 +186,14 @@ class UserNotifications < ActionMailer::Base end def self.get_context_posts(post, topic_user) + allowed_post_types = [Post.types[:regular]] + allowed_post_types << Post.types[:whisper] if topic_user.try(:user).try(:staff?) + context_posts = Post.where(topic_id: post.topic_id) .where("post_number < ?", post.post_number) .where(user_deleted: false) .where(hidden: false) - .where(post_type: Topic.visible_post_types) + .where(post_type: allowed_post_types) .order('created_at desc') .limit(SiteSetting.email_posts_context) diff --git a/spec/mailers/user_notifications_spec.rb b/spec/mailers/user_notifications_spec.rb index 393484954..947dd9a46 100644 --- a/spec/mailers/user_notifications_spec.rb +++ b/spec/mailers/user_notifications_spec.rb @@ -6,21 +6,20 @@ describe UserNotifications do describe "#get_context_posts" do it "does not include hidden/deleted/user_deleted posts in context" do - post = create_post - reply1 = create_post(topic: post.topic) - reply2 = create_post(topic: post.topic) - reply3 = create_post(topic: post.topic) - reply4 = create_post(topic: post.topic) + post1 = create_post + post2 = Fabricate(:post, topic: post1.topic, deleted_at: 1.day.ago) + post3 = Fabricate(:post, topic: post1.topic, user_deleted: true) + post4 = Fabricate(:post, topic: post1.topic, hidden: true) + post5 = Fabricate(:post, topic: post1.topic, post_type: Post.types[:moderator_action]) + post6 = Fabricate(:post, topic: post1.topic, post_type: Post.types[:small_action]) + post7 = Fabricate(:post, topic: post1.topic, post_type: Post.types[:whisper]) + last = Fabricate(:post, topic: post1.topic) - reply1.trash! - - reply2.user_deleted = true - reply2.save - - reply3.hidden = true - reply3.save - - expect(UserNotifications.get_context_posts(reply4, nil).count).to eq(1) + # default is only post #1 + expect(UserNotifications.get_context_posts(last, nil).count).to eq(1) + # staff members can also see the whisper + tu = TopicUser.new(topic: post1.topic, user: build(:moderator)) + expect(UserNotifications.get_context_posts(last, tu).count).to eq(2) end end