spec/system/admin/hidden_content_search_spec.rb
require "rails_helper"
describe "Hidden content search", :admin do
scenario "finds matching records" do
create(:budget_investment, :hidden, title: "New football field")
create(:budget_investment, :hidden, title: "New basketball field")
create(:budget_investment, :hidden, title: "New sports center")
visit admin_hidden_budget_investments_path
fill_in "search", with: "field"
click_button "Search"
expect(page).not_to have_content "New sports center"
expect(page).to have_content "New football field"
expect(page).to have_content "New basketball field"
end
scenario "returns no results if no records match the term" do
create(:comment, :hidden, body: "I like this feature")
visit admin_hidden_comments_path
fill_in "search", with: "love"
click_button "Search"
expect(page).to have_content "There are no hidden comments"
expect(page).not_to have_content "I like this feature"
expect(page).not_to have_content "I hate this feature"
end
scenario "returns all records when the search term is empty" do
create(:debate, :hidden, title: "Can we make it better?")
create(:debate, :hidden, title: "Can we make it worse?")
visit admin_hidden_debates_path(search: "worse")
expect(page).not_to have_content "Can we make it better?"
expect(page).to have_content "Can we make it worse?"
fill_in "search", with: " "
click_button "Search"
expect(page).to have_content "Can we make it better?"
expect(page).to have_content "Can we make it worse?"
expect(page).not_to have_content "There are no hidden debates"
end
scenario "keeps search parameters after restoring a record" do
create(:proposal_notification, :hidden, title: "Someone is telling you something")
create(:proposal_notification, :hidden, title: "Someone else says whatever")
create(:proposal_notification, :hidden, title: "Nobody is saying anything")
visit admin_hidden_proposal_notifications_path(search: "Someone")
expect(page).to have_content "Someone is telling you something"
expect(page).to have_content "Someone else says whatever"
expect(page).not_to have_content "Nobody is saying anything"
within "tr", text: "Someone is telling you something" do
accept_confirm("Are you sure? Restore") { click_button "Restore" }
end
expect(page).not_to have_content "Someone is telling you something"
expect(page).to have_content "Someone else says whatever"
expect(page).not_to have_content "Nobody is saying anything"
end
scenario "keeps search parameters after confirming moderation" do
create(:proposal, :hidden, title: "Reduce the incoming traffic")
create(:proposal, :hidden, title: "Reduce pollution")
create(:proposal, :hidden, title: "Increment pollution")
visit admin_hidden_proposals_path(search: "Reduce")
expect(page).to have_content "Reduce the incoming traffic"
expect(page).to have_content "Reduce pollution"
expect(page).not_to have_content "Increment pollution"
within("tr", text: "Reduce the incoming traffic") { click_button "Confirm moderation" }
expect(page).not_to have_content "Reduce the incoming traffic"
expect(page).to have_content "Reduce pollution"
expect(page).not_to have_content "Increment pollution"
end
scenario "keeps search parameters while browsing through filters" do
create(:user, :hidden, username: "person1")
create(:user, :hidden, username: "alien1")
create(:user, :hidden, :with_confirmed_hide, username: "person2")
create(:user, :hidden, :with_confirmed_hide, username: "alien2")
visit admin_hidden_users_path(search: "person")
expect(page).to have_content "person1"
expect(page).not_to have_content "person2"
expect(page).not_to have_content "alien1"
expect(page).not_to have_content "alien2"
click_link "Confirmed"
expect(page).not_to have_content "person1"
expect(page).to have_content "person2"
expect(page).not_to have_content "alien1"
expect(page).not_to have_content "alien2"
end
scenario "keeps filter parameters after searching" do
create(:user, :hidden, :with_confirmed_hide, username: "person1")
create(:user, :hidden, :with_confirmed_hide, username: "alien1")
create(:user, :hidden, username: "person2")
create(:user, :hidden, username: "alien2")
visit admin_hidden_users_path(filter: "with_confirmed_hide")
fill_in "search", with: "alien"
click_button "Search"
expect(page).not_to have_content "person1"
expect(page).to have_content "alien1"
expect(page).not_to have_content "person2"
expect(page).not_to have_content "alien2"
expect(page).to have_content "Confirmed"
expect(page).not_to have_link "Confirmed"
end
end