2019-04-30 08:27:42 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
require "unread"
|
|
|
|
|
2022-07-28 10:27:38 +08:00
|
|
|
RSpec.describe Unread do
|
2022-06-30 08:18:12 +08:00
|
|
|
let(:whisperers_group) { Fabricate(:group) }
|
2022-10-25 15:29:09 +08:00
|
|
|
let(:user) { Fabricate(:user, groups: [whisperers_group]) }
|
2022-06-30 08:18:12 +08:00
|
|
|
let(:topic) do
|
2022-10-25 15:29:09 +08:00
|
|
|
Fabricate(:topic, posts_count: 13, highest_staff_post_number: 15, highest_post_number: 13)
|
2016-12-02 14:03:31 +08:00
|
|
|
end
|
|
|
|
|
2022-10-25 15:29:09 +08:00
|
|
|
let(:topic_user) do
|
|
|
|
Fabricate(
|
|
|
|
:topic_user,
|
|
|
|
notification_level: TopicUser.notification_levels[:tracking],
|
|
|
|
topic_id: topic.id,
|
|
|
|
user_id: user.id,
|
|
|
|
)
|
2016-12-02 14:03:31 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def unread
|
|
|
|
Unread.new(topic, topic_user, Guardian.new(user))
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "staff counts" do
|
2021-05-21 09:43:47 +08:00
|
|
|
it "should correctly return based on staff post number" do
|
2022-12-17 00:42:51 +08:00
|
|
|
SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}"
|
|
|
|
user.grant_admin!
|
2016-12-02 14:03:31 +08:00
|
|
|
|
|
|
|
topic_user.last_read_post_number = 13
|
|
|
|
|
2021-07-05 14:17:31 +08:00
|
|
|
expect(unread.unread_posts).to eq(2)
|
2016-12-02 14:03:31 +08:00
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
describe "unread_posts" do
|
2021-07-05 14:17:31 +08:00
|
|
|
it "should have 0 unread posts if the user has read all posts" do
|
2016-12-02 14:03:31 +08:00
|
|
|
topic_user.last_read_post_number = 13
|
|
|
|
expect(unread.unread_posts).to eq(0)
|
2013-02-26 00:42:20 +08:00
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2021-07-05 14:17:31 +08:00
|
|
|
it "returns the right unread posts for a user" do
|
|
|
|
topic_user.last_read_post_number = 10
|
|
|
|
expect(unread.unread_posts).to eq(3)
|
2013-02-26 00:42:20 +08:00
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2021-07-05 14:17:31 +08:00
|
|
|
it "returns the right unread posts for a staff user" do
|
2022-12-17 00:42:51 +08:00
|
|
|
SiteSetting.whispers_allowed_groups = "#{Group::AUTO_GROUPS[:staff]}"
|
|
|
|
user.grant_admin!
|
2021-07-05 14:17:31 +08:00
|
|
|
topic_user.last_read_post_number = 10
|
|
|
|
expect(unread.unread_posts).to eq(5)
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
2022-06-30 08:18:12 +08:00
|
|
|
it "returns the right unread posts for a whisperer user" do
|
|
|
|
SiteSetting.whispers_allowed_groups = "#{whisperers_group.id}"
|
|
|
|
topic_user.last_read_post_number = 10
|
|
|
|
expect(unread.unread_posts).to eq(5)
|
|
|
|
end
|
|
|
|
|
2021-07-05 14:17:31 +08:00
|
|
|
it "should have 0 unread posts if the user has read more posts than exist (deleted)" do
|
|
|
|
topic_user.last_read_post_number = 14
|
|
|
|
expect(unread.unread_posts).to eq(0)
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
2013-02-26 00:42:20 +08:00
|
|
|
|
2021-07-05 14:17:31 +08:00
|
|
|
it "has 0 unread posts if the user has read 10 posts but is not tracking" do
|
|
|
|
topic_user.last_read_post_number = 10
|
2016-12-02 14:03:31 +08:00
|
|
|
topic_user.notification_level = TopicUser.notification_levels[:regular]
|
2021-07-05 14:17:31 +08:00
|
|
|
expect(unread.unread_posts).to eq(0)
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
|
2022-10-25 15:29:09 +08:00
|
|
|
it "has 0 unread posts if the user has not seen the topic" do
|
2021-07-05 14:17:31 +08:00
|
|
|
topic_user.last_read_post_number = nil
|
|
|
|
expect(unread.unread_posts).to eq(0)
|
2013-02-26 00:42:20 +08:00
|
|
|
end
|
2013-02-06 03:16:51 +08:00
|
|
|
end
|
|
|
|
end
|