2015-10-11 05:41:23 -04:00
|
|
|
require 'rails_helper'
|
2013-08-19 07:14:26 -04:00
|
|
|
require_dependency 'flag_query'
|
|
|
|
|
|
|
|
describe FlagQuery do
|
|
|
|
|
|
|
|
let(:codinghorror) { Fabricate(:coding_horror) }
|
|
|
|
|
2018-05-07 15:14:18 -04:00
|
|
|
describe "flagged_topics" do
|
|
|
|
it "respects `min_flags_staff_visibility`" do
|
|
|
|
admin = Fabricate(:admin)
|
|
|
|
moderator = Fabricate(:moderator)
|
|
|
|
|
|
|
|
post = create_post
|
|
|
|
|
|
|
|
PostAction.act(moderator, post, PostActionType.types[:spam])
|
|
|
|
|
|
|
|
SiteSetting.min_flags_staff_visibility = 1
|
|
|
|
|
|
|
|
result = FlagQuery.flagged_topics
|
|
|
|
expect(result[:flagged_topics]).to be_present
|
|
|
|
ft = result[:flagged_topics].first
|
|
|
|
expect(ft.topic).to eq(post.topic)
|
|
|
|
expect(ft.flag_counts).to eq(PostActionType.types[:spam] => 1)
|
|
|
|
|
|
|
|
SiteSetting.min_flags_staff_visibility = 2
|
|
|
|
|
|
|
|
result = FlagQuery.flagged_topics
|
|
|
|
expect(result[:flagged_topics]).to be_blank
|
|
|
|
|
|
|
|
PostAction.act(admin, post, PostActionType.types[:inappropriate])
|
|
|
|
result = FlagQuery.flagged_topics
|
|
|
|
expect(result[:flagged_topics]).to be_present
|
|
|
|
ft = result[:flagged_topics].first
|
|
|
|
expect(ft.topic).to eq(post.topic)
|
|
|
|
expect(ft.flag_counts).to eq(
|
|
|
|
PostActionType.types[:spam] => 1,
|
|
|
|
PostActionType.types[:inappropriate] => 1
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2013-08-19 07:14:26 -04:00
|
|
|
describe "flagged_posts_report" do
|
2017-05-08 13:13:35 -04:00
|
|
|
it "does not return flags on system posts" do
|
|
|
|
admin = Fabricate(:admin)
|
|
|
|
post = create_post(user: Discourse.system_user)
|
|
|
|
PostAction.act(codinghorror, post, PostActionType.types[:spam])
|
2017-09-08 16:47:49 -04:00
|
|
|
posts, topics, users = FlagQuery.flagged_posts_report(admin)
|
2017-05-08 13:13:35 -04:00
|
|
|
|
|
|
|
expect(posts).to be_blank
|
|
|
|
expect(topics).to be_blank
|
|
|
|
expect(users).to be_blank
|
|
|
|
end
|
|
|
|
|
2013-08-19 07:14:26 -04:00
|
|
|
it "operates correctly" do
|
2014-02-06 22:11:52 -05:00
|
|
|
admin = Fabricate(:admin)
|
|
|
|
moderator = Fabricate(:moderator)
|
|
|
|
|
2013-08-19 07:14:26 -04:00
|
|
|
post = create_post
|
|
|
|
post2 = create_post
|
|
|
|
|
|
|
|
user2 = Fabricate(:user)
|
|
|
|
user3 = Fabricate(:user)
|
|
|
|
|
|
|
|
PostAction.act(codinghorror, post, PostActionType.types[:spam])
|
|
|
|
PostAction.act(user2, post, PostActionType.types[:spam])
|
2017-08-14 09:16:47 -04:00
|
|
|
mod_message = PostAction.act(user3, post, PostActionType.types[:notify_moderators], message: "this is a :one::zero:")
|
2013-08-19 07:14:26 -04:00
|
|
|
|
|
|
|
PostAction.act(codinghorror, post2, PostActionType.types[:spam])
|
|
|
|
PostAction.act(user2, post2, PostActionType.types[:spam])
|
|
|
|
|
2017-09-08 16:47:49 -04:00
|
|
|
posts, topics, users = FlagQuery.flagged_posts_report(admin)
|
2017-08-14 09:16:47 -04:00
|
|
|
|
2015-01-09 11:34:37 -05:00
|
|
|
expect(posts.count).to eq(2)
|
2013-08-19 07:14:26 -04:00
|
|
|
first = posts.first
|
|
|
|
|
2015-01-09 11:34:37 -05:00
|
|
|
expect(users.count).to eq(5)
|
|
|
|
expect(first[:post_actions].count).to eq(2)
|
2013-08-19 07:14:26 -04:00
|
|
|
|
2015-01-09 11:34:37 -05:00
|
|
|
expect(topics.count).to eq(2)
|
2014-07-28 13:17:37 -04:00
|
|
|
|
2013-08-19 07:14:26 -04:00
|
|
|
second = posts[1]
|
|
|
|
|
2015-01-09 11:34:37 -05:00
|
|
|
expect(second[:post_actions].count).to eq(3)
|
|
|
|
expect(second[:post_actions].first[:permalink]).to eq(mod_message.related_post.topic.relative_url)
|
2017-08-14 09:16:47 -04:00
|
|
|
expect(second[:post_actions].first[:conversation][:response][:excerpt]).to match("<img src=")
|
2013-08-19 07:14:26 -04:00
|
|
|
|
2017-09-08 16:47:49 -04:00
|
|
|
posts, users = FlagQuery.flagged_posts_report(admin, offset: 1)
|
2015-01-09 11:34:37 -05:00
|
|
|
expect(posts.count).to eq(1)
|
2013-08-19 07:14:26 -04:00
|
|
|
|
2017-09-08 16:47:49 -04:00
|
|
|
# Try by topic
|
|
|
|
posts = FlagQuery.flagged_posts_report(admin, topic_id: post.topic_id)
|
|
|
|
expect(posts).to be_present
|
|
|
|
posts = FlagQuery.flagged_posts_report(admin, topic_id: -1)
|
2017-09-12 13:04:53 -04:00
|
|
|
expect(posts[0]).to be_blank
|
2017-09-08 16:47:49 -04:00
|
|
|
|
2018-01-17 13:03:14 -05:00
|
|
|
# Try by user
|
|
|
|
posts = FlagQuery.flagged_posts_report(admin, user_id: post.user_id)
|
|
|
|
expect(posts).to be_present
|
|
|
|
posts = FlagQuery.flagged_posts_report(admin, user_id: -1000)
|
|
|
|
expect(posts[0]).to be_blank
|
|
|
|
|
2014-02-06 22:11:52 -05:00
|
|
|
# chuck post in category a mod can not see and make sure its missing
|
|
|
|
category = Fabricate(:category)
|
2017-07-27 21:20:09 -04:00
|
|
|
category.set_permissions(admins: :full)
|
2014-02-06 22:11:52 -05:00
|
|
|
category.save
|
|
|
|
post2.topic.category_id = category.id
|
|
|
|
post2.topic.save
|
|
|
|
|
2017-09-08 16:47:49 -04:00
|
|
|
posts, users = FlagQuery.flagged_posts_report(moderator)
|
2014-02-06 22:11:52 -05:00
|
|
|
|
2015-01-09 11:34:37 -05:00
|
|
|
expect(posts.count).to eq(1)
|
2018-05-07 15:14:18 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
it "respects `min_flags_staff_visibility`" do
|
|
|
|
admin = Fabricate(:admin)
|
|
|
|
moderator = Fabricate(:moderator)
|
|
|
|
|
|
|
|
post = create_post
|
|
|
|
|
|
|
|
PostAction.act(moderator, post, PostActionType.types[:spam])
|
2017-09-08 16:47:49 -04:00
|
|
|
|
2018-05-07 15:14:18 -04:00
|
|
|
SiteSetting.min_flags_staff_visibility = 2
|
|
|
|
posts, topics, users = FlagQuery.flagged_posts_report(admin)
|
|
|
|
expect(posts).to be_blank
|
|
|
|
expect(topics).to be_blank
|
|
|
|
expect(users).to be_blank
|
|
|
|
|
|
|
|
PostAction.act(admin, post, PostActionType.types[:inappropriate])
|
|
|
|
posts, topics, users = FlagQuery.flagged_posts_report(admin)
|
|
|
|
expect(posts).to be_present
|
|
|
|
expect(topics).to be_present
|
|
|
|
expect(users).to be_present
|
2013-08-19 07:14:26 -04:00
|
|
|
end
|
2017-09-08 16:47:49 -04:00
|
|
|
|
2013-08-19 07:14:26 -04:00
|
|
|
end
|
|
|
|
end
|