Merge pull request #3844 from consul/hidden_tests
Split comments and debates admin tests
This commit is contained in:
@@ -6,133 +6,12 @@ describe "Admin comments" do
|
||||
login_as(admin.user)
|
||||
end
|
||||
|
||||
scenario "Do not show comments from blocked users" do
|
||||
comment = create(:comment, :hidden, body: "SPAM from SPAMMER")
|
||||
proposal = create(:proposal, author: comment.author)
|
||||
create(:comment, commentable: proposal, user: comment.author, body: "Good Proposal!")
|
||||
scenario "Index" do
|
||||
create(:comment, body: "Everything is awesome")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
expect(page).to have_content("SPAM from SPAMMER")
|
||||
expect(page).not_to have_content("Good Proposal!")
|
||||
visit admin_root_path
|
||||
within("#side_menu") { click_link "Comments" }
|
||||
|
||||
visit proposal_path(proposal)
|
||||
within("#proposal_#{proposal.id}") do
|
||||
click_link "Hide author"
|
||||
end
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
expect(page).not_to have_content("SPAM from SPAMMER")
|
||||
expect(page).not_to have_content("Good Proposal!")
|
||||
end
|
||||
|
||||
scenario "Visit items with hidden comments" do
|
||||
debate = create(:debate, title: "Debate with spam comment")
|
||||
proposal = create(:proposal, title: "Proposal with spam comment")
|
||||
create(:comment, :hidden, commentable: debate, body: "This is SPAM comment on debate")
|
||||
create(:comment, :hidden, commentable: proposal, body: "This is SPAM comment on proposal")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
expect(page).to have_content("Debate with spam comment")
|
||||
expect(page).to have_content("Proposal with spam comment")
|
||||
expect(page).to have_content("This is SPAM comment on debate")
|
||||
expect(page).to have_content("This is SPAM comment on proposal")
|
||||
|
||||
click_link "Debate with spam comment"
|
||||
expect(page).to have_content("Debate with spam comment")
|
||||
expect(page).not_to have_content("This is SPAM comment on debate")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
click_link "Proposal with spam comment"
|
||||
expect(page).to have_content("Proposal with spam comment")
|
||||
expect(page).not_to have_content("This is SPAM comment on proposal")
|
||||
end
|
||||
|
||||
scenario "Don't show link on hidden items" do
|
||||
debate = create(:debate, :hidden, title: "Hidden debate title")
|
||||
proposal = create(:proposal, :hidden, title: "Hidden proposal title")
|
||||
create(:comment, :hidden, commentable: debate, body: "This is SPAM comment on debate")
|
||||
create(:comment, :hidden, commentable: proposal, body: "This is SPAM comment on proposal")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
expect(page).to have_content("(Hidden proposal: Hidden proposal title)")
|
||||
expect(page).to have_content("(Hidden debate: Hidden debate title)")
|
||||
|
||||
expect(page).not_to have_link("This is SPAM comment on debate")
|
||||
expect(page).not_to have_link("This is SPAM comment on proposal")
|
||||
end
|
||||
|
||||
scenario "Restore" do
|
||||
comment = create(:comment, :hidden, body: "Not really SPAM")
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
click_link "Restore"
|
||||
|
||||
expect(page).not_to have_content(comment.body)
|
||||
|
||||
expect(comment.reload).not_to be_hidden
|
||||
expect(comment).to be_ignored_flag
|
||||
end
|
||||
|
||||
scenario "Confirm hide" do
|
||||
comment = create(:comment, :hidden, body: "SPAM")
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
click_link "Confirm moderation"
|
||||
|
||||
expect(page).not_to have_content(comment.body)
|
||||
click_link("Confirmed")
|
||||
expect(page).to have_content(comment.body)
|
||||
|
||||
expect(comment.reload).to be_confirmed_hide
|
||||
end
|
||||
|
||||
scenario "Current filter is properly highlighted" do
|
||||
visit admin_hidden_comments_path
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "Pending")
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "all")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).not_to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "with_confirmed_hide")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).not_to have_link("Confirmed")
|
||||
end
|
||||
|
||||
scenario "Filtering comments" do
|
||||
create(:comment, :hidden, body: "Unconfirmed comment")
|
||||
create(:comment, :hidden, :with_confirmed_hide, body: "Confirmed comment")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "all")
|
||||
expect(page).to have_content("Unconfirmed comment")
|
||||
expect(page).to have_content("Confirmed comment")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "with_confirmed_hide")
|
||||
expect(page).not_to have_content("Unconfirmed comment")
|
||||
expect(page).to have_content("Confirmed comment")
|
||||
end
|
||||
|
||||
scenario "Action links remember the pagination setting and the filter" do
|
||||
per_page = Kaminari.config.default_per_page
|
||||
(per_page + 2).times { create(:comment, :hidden, :with_confirmed_hide) }
|
||||
|
||||
visit admin_hidden_comments_path(filter: "with_confirmed_hide", page: 2)
|
||||
|
||||
click_on("Restore", match: :first, exact: true)
|
||||
|
||||
expect(current_url).to include("filter=with_confirmed_hide")
|
||||
expect(current_url).to include("page=2")
|
||||
expect(page).to have_content "Everything is awesome"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe "Admin debates" do
|
||||
scenario "Disabled with a feature flag" do
|
||||
Setting["process.debates"] = nil
|
||||
admin = create(:administrator)
|
||||
login_as(admin.user)
|
||||
|
||||
expect { visit admin_hidden_debates_path }.to raise_exception(FeatureFlags::FeatureDisabled)
|
||||
end
|
||||
|
||||
before do
|
||||
admin = create(:administrator)
|
||||
login_as(admin.user)
|
||||
end
|
||||
|
||||
scenario "Index" do
|
||||
create(:debate, title: "Best beaches")
|
||||
|
||||
visit admin_root_path
|
||||
within("#side_menu") { click_link "Debates" }
|
||||
|
||||
expect(page).to have_content "Best beaches"
|
||||
end
|
||||
|
||||
scenario "Show debate" do
|
||||
debate = create(:debate)
|
||||
visit admin_debate_path(debate)
|
||||
@@ -21,80 +22,4 @@ describe "Admin debates" do
|
||||
expect(page).to have_content(debate.title)
|
||||
expect(page).to have_content(debate.description)
|
||||
end
|
||||
|
||||
scenario "Restore" do
|
||||
debate = create(:debate, :hidden)
|
||||
visit admin_hidden_debates_path
|
||||
|
||||
click_link "Restore"
|
||||
|
||||
expect(page).not_to have_content(debate.title)
|
||||
|
||||
expect(debate.reload).not_to be_hidden
|
||||
expect(debate).to be_ignored_flag
|
||||
end
|
||||
|
||||
scenario "Confirm hide" do
|
||||
debate = create(:debate, :hidden)
|
||||
visit admin_hidden_debates_path
|
||||
|
||||
click_link "Confirm moderation"
|
||||
|
||||
expect(page).not_to have_content(debate.title)
|
||||
click_link("Confirmed")
|
||||
expect(page).to have_content(debate.title)
|
||||
|
||||
expect(debate.reload).to be_confirmed_hide
|
||||
end
|
||||
|
||||
scenario "Current filter is properly highlighted" do
|
||||
visit admin_hidden_debates_path
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "Pending")
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "all")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).not_to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "with_confirmed_hide")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).not_to have_link("Confirmed")
|
||||
end
|
||||
|
||||
scenario "Filtering debates" do
|
||||
create(:debate, :hidden, title: "Unconfirmed debate")
|
||||
create(:debate, :hidden, :with_confirmed_hide, title: "Confirmed debate")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "pending")
|
||||
expect(page).to have_content("Unconfirmed debate")
|
||||
expect(page).not_to have_content("Confirmed debate")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "all")
|
||||
expect(page).to have_content("Unconfirmed debate")
|
||||
expect(page).to have_content("Confirmed debate")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "with_confirmed_hide")
|
||||
expect(page).not_to have_content("Unconfirmed debate")
|
||||
expect(page).to have_content("Confirmed debate")
|
||||
end
|
||||
|
||||
scenario "Action links remember the pagination setting and the filter" do
|
||||
per_page = Kaminari.config.default_per_page
|
||||
(per_page + 2).times { create(:debate, :hidden, :with_confirmed_hide) }
|
||||
|
||||
visit admin_hidden_debates_path(filter: "with_confirmed_hide", page: 2)
|
||||
|
||||
click_on("Restore", match: :first, exact: true)
|
||||
|
||||
expect(current_url).to include("filter=with_confirmed_hide")
|
||||
expect(current_url).to include("page=2")
|
||||
end
|
||||
end
|
||||
|
||||
138
spec/features/admin/hidden_comments_spec.rb
Normal file
138
spec/features/admin/hidden_comments_spec.rb
Normal file
@@ -0,0 +1,138 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe "Admin hidden comments" do
|
||||
before do
|
||||
admin = create(:administrator)
|
||||
login_as(admin.user)
|
||||
end
|
||||
|
||||
scenario "Do not show comments from blocked users" do
|
||||
comment = create(:comment, :hidden, body: "SPAM from SPAMMER")
|
||||
proposal = create(:proposal, author: comment.author)
|
||||
create(:comment, commentable: proposal, user: comment.author, body: "Good Proposal!")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
expect(page).to have_content("SPAM from SPAMMER")
|
||||
expect(page).not_to have_content("Good Proposal!")
|
||||
|
||||
visit proposal_path(proposal)
|
||||
within("#proposal_#{proposal.id}") do
|
||||
click_link "Hide author"
|
||||
end
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
expect(page).not_to have_content("SPAM from SPAMMER")
|
||||
expect(page).not_to have_content("Good Proposal!")
|
||||
end
|
||||
|
||||
scenario "Visit items with hidden comments" do
|
||||
debate = create(:debate, title: "Debate with spam comment")
|
||||
proposal = create(:proposal, title: "Proposal with spam comment")
|
||||
create(:comment, :hidden, commentable: debate, body: "This is SPAM comment on debate")
|
||||
create(:comment, :hidden, commentable: proposal, body: "This is SPAM comment on proposal")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
expect(page).to have_content("Debate with spam comment")
|
||||
expect(page).to have_content("Proposal with spam comment")
|
||||
expect(page).to have_content("This is SPAM comment on debate")
|
||||
expect(page).to have_content("This is SPAM comment on proposal")
|
||||
|
||||
click_link "Debate with spam comment"
|
||||
expect(page).to have_content("Debate with spam comment")
|
||||
expect(page).not_to have_content("This is SPAM comment on debate")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
click_link "Proposal with spam comment"
|
||||
expect(page).to have_content("Proposal with spam comment")
|
||||
expect(page).not_to have_content("This is SPAM comment on proposal")
|
||||
end
|
||||
|
||||
scenario "Don't show link on hidden items" do
|
||||
debate = create(:debate, :hidden, title: "Hidden debate title")
|
||||
proposal = create(:proposal, :hidden, title: "Hidden proposal title")
|
||||
create(:comment, :hidden, commentable: debate, body: "This is SPAM comment on debate")
|
||||
create(:comment, :hidden, commentable: proposal, body: "This is SPAM comment on proposal")
|
||||
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
expect(page).to have_content("(Hidden proposal: Hidden proposal title)")
|
||||
expect(page).to have_content("(Hidden debate: Hidden debate title)")
|
||||
|
||||
expect(page).not_to have_link("This is SPAM comment on debate")
|
||||
expect(page).not_to have_link("This is SPAM comment on proposal")
|
||||
end
|
||||
|
||||
scenario "Restore" do
|
||||
comment = create(:comment, :hidden, body: "Not really SPAM")
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
click_link "Restore"
|
||||
|
||||
expect(page).not_to have_content(comment.body)
|
||||
|
||||
expect(comment.reload).not_to be_hidden
|
||||
expect(comment).to be_ignored_flag
|
||||
end
|
||||
|
||||
scenario "Confirm hide" do
|
||||
comment = create(:comment, :hidden, body: "SPAM")
|
||||
visit admin_hidden_comments_path
|
||||
|
||||
click_link "Confirm moderation"
|
||||
|
||||
expect(page).not_to have_content(comment.body)
|
||||
click_link("Confirmed")
|
||||
expect(page).to have_content(comment.body)
|
||||
|
||||
expect(comment.reload).to be_confirmed_hide
|
||||
end
|
||||
|
||||
scenario "Current filter is properly highlighted" do
|
||||
visit admin_hidden_comments_path
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "Pending")
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "all")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).not_to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "with_confirmed_hide")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).not_to have_link("Confirmed")
|
||||
end
|
||||
|
||||
scenario "Filtering comments" do
|
||||
create(:comment, :hidden, body: "Unconfirmed comment")
|
||||
create(:comment, :hidden, :with_confirmed_hide, body: "Confirmed comment")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "all")
|
||||
expect(page).to have_content("Unconfirmed comment")
|
||||
expect(page).to have_content("Confirmed comment")
|
||||
|
||||
visit admin_hidden_comments_path(filter: "with_confirmed_hide")
|
||||
expect(page).not_to have_content("Unconfirmed comment")
|
||||
expect(page).to have_content("Confirmed comment")
|
||||
end
|
||||
|
||||
scenario "Action links remember the pagination setting and the filter" do
|
||||
per_page = Kaminari.config.default_per_page
|
||||
(per_page + 2).times { create(:comment, :hidden, :with_confirmed_hide) }
|
||||
|
||||
visit admin_hidden_comments_path(filter: "with_confirmed_hide", page: 2)
|
||||
|
||||
click_on("Restore", match: :first, exact: true)
|
||||
|
||||
expect(current_url).to include("filter=with_confirmed_hide")
|
||||
expect(current_url).to include("page=2")
|
||||
end
|
||||
end
|
||||
90
spec/features/admin/hidden_debates_spec.rb
Normal file
90
spec/features/admin/hidden_debates_spec.rb
Normal file
@@ -0,0 +1,90 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe "Admin hidden debates" do
|
||||
before do
|
||||
admin = create(:administrator)
|
||||
login_as(admin.user)
|
||||
end
|
||||
|
||||
scenario "Disabled with a feature flag" do
|
||||
Setting["process.debates"] = nil
|
||||
|
||||
expect { visit admin_hidden_debates_path }.to raise_exception(FeatureFlags::FeatureDisabled)
|
||||
end
|
||||
|
||||
scenario "Restore" do
|
||||
debate = create(:debate, :hidden)
|
||||
visit admin_hidden_debates_path
|
||||
|
||||
click_link "Restore"
|
||||
|
||||
expect(page).not_to have_content(debate.title)
|
||||
|
||||
expect(debate.reload).not_to be_hidden
|
||||
expect(debate).to be_ignored_flag
|
||||
end
|
||||
|
||||
scenario "Confirm hide" do
|
||||
debate = create(:debate, :hidden)
|
||||
visit admin_hidden_debates_path
|
||||
|
||||
click_link "Confirm moderation"
|
||||
|
||||
expect(page).not_to have_content(debate.title)
|
||||
click_link("Confirmed")
|
||||
expect(page).to have_content(debate.title)
|
||||
|
||||
expect(debate.reload).to be_confirmed_hide
|
||||
end
|
||||
|
||||
scenario "Current filter is properly highlighted" do
|
||||
visit admin_hidden_debates_path
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "Pending")
|
||||
expect(page).not_to have_link("Pending")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "all")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).not_to have_link("All")
|
||||
expect(page).to have_link("Confirmed")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "with_confirmed_hide")
|
||||
expect(page).to have_link("All")
|
||||
expect(page).to have_link("Pending")
|
||||
expect(page).not_to have_link("Confirmed")
|
||||
end
|
||||
|
||||
scenario "Filtering debates" do
|
||||
create(:debate, :hidden, title: "Unconfirmed debate")
|
||||
create(:debate, :hidden, :with_confirmed_hide, title: "Confirmed debate")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "pending")
|
||||
expect(page).to have_content("Unconfirmed debate")
|
||||
expect(page).not_to have_content("Confirmed debate")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "all")
|
||||
expect(page).to have_content("Unconfirmed debate")
|
||||
expect(page).to have_content("Confirmed debate")
|
||||
|
||||
visit admin_hidden_debates_path(filter: "with_confirmed_hide")
|
||||
expect(page).not_to have_content("Unconfirmed debate")
|
||||
expect(page).to have_content("Confirmed debate")
|
||||
end
|
||||
|
||||
scenario "Action links remember the pagination setting and the filter" do
|
||||
per_page = Kaminari.config.default_per_page
|
||||
(per_page + 2).times { create(:debate, :hidden, :with_confirmed_hide) }
|
||||
|
||||
visit admin_hidden_debates_path(filter: "with_confirmed_hide", page: 2)
|
||||
|
||||
click_on("Restore", match: :first, exact: true)
|
||||
|
||||
expect(current_url).to include("filter=with_confirmed_hide")
|
||||
expect(current_url).to include("page=2")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user