Merge branch 'master' into dashboard
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
require 'rails_helper'
|
||||
require "rails_helper"
|
||||
|
||||
feature 'Users' do
|
||||
feature "Users" do
|
||||
|
||||
feature 'Show (public page)' do
|
||||
feature "Show (public page)" do
|
||||
|
||||
background do
|
||||
@user = create(:user)
|
||||
@@ -14,23 +14,23 @@ feature 'Users' do
|
||||
visit user_path(@user)
|
||||
end
|
||||
|
||||
scenario 'shows user public activity' do
|
||||
expect(page).to have_content('1 Debate')
|
||||
expect(page).to have_content('2 Proposals')
|
||||
expect(page).to have_content('3 Investments')
|
||||
expect(page).to have_content('4 Comments')
|
||||
scenario "shows user public activity" do
|
||||
expect(page).to have_content("1 Debate")
|
||||
expect(page).to have_content("2 Proposals")
|
||||
expect(page).to have_content("3 Investments")
|
||||
expect(page).to have_content("4 Comments")
|
||||
end
|
||||
|
||||
scenario 'shows only items where user has activity' do
|
||||
scenario "shows only items where user has activity" do
|
||||
@user.proposals.destroy_all
|
||||
|
||||
expect(page).not_to have_content('0 Proposals')
|
||||
expect(page).to have_content('1 Debate')
|
||||
expect(page).to have_content('3 Investments')
|
||||
expect(page).to have_content('4 Comments')
|
||||
expect(page).not_to have_content("0 Proposals")
|
||||
expect(page).to have_content("1 Debate")
|
||||
expect(page).to have_content("3 Investments")
|
||||
expect(page).to have_content("4 Comments")
|
||||
end
|
||||
|
||||
scenario 'default filter is proposals' do
|
||||
scenario "default filter is proposals" do
|
||||
@user.proposals.each do |proposal|
|
||||
expect(page).to have_content(proposal.title)
|
||||
end
|
||||
@@ -44,14 +44,14 @@ feature 'Users' do
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'shows debates by default if user has no proposals' do
|
||||
scenario "shows debates by default if user has no proposals" do
|
||||
@user.proposals.destroy_all
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content(@user.debates.first.title)
|
||||
end
|
||||
|
||||
scenario 'shows investments by default if user has no proposals nor debates' do
|
||||
scenario "shows investments by default if user has no proposals nor debates" do
|
||||
@user.proposals.destroy_all
|
||||
@user.debates.destroy_all
|
||||
visit user_path(@user)
|
||||
@@ -59,7 +59,7 @@ feature 'Users' do
|
||||
expect(page).to have_content(@user.budget_investments.first.title)
|
||||
end
|
||||
|
||||
scenario 'shows comments by default if user has no proposals nor debates nor investments' do
|
||||
scenario "shows comments by default if user has no proposals nor debates nor investments" do
|
||||
@user.proposals.destroy_all
|
||||
@user.debates.destroy_all
|
||||
@user.budget_investments.destroy_all
|
||||
@@ -70,8 +70,8 @@ feature 'Users' do
|
||||
end
|
||||
end
|
||||
|
||||
scenario 'filters' do
|
||||
click_link '1 Debate'
|
||||
scenario "filters" do
|
||||
click_link "1 Debate"
|
||||
|
||||
@user.debates.each do |debate|
|
||||
expect(page).to have_content(debate.title)
|
||||
@@ -85,7 +85,7 @@ feature 'Users' do
|
||||
expect(page).not_to have_content(comment.body)
|
||||
end
|
||||
|
||||
click_link '4 Comments'
|
||||
click_link "4 Comments"
|
||||
|
||||
@user.comments.each do |comment|
|
||||
expect(page).to have_content(comment.body)
|
||||
@@ -99,7 +99,7 @@ feature 'Users' do
|
||||
expect(page).not_to have_content(debate.title)
|
||||
end
|
||||
|
||||
click_link '2 Proposals'
|
||||
click_link "2 Proposals"
|
||||
|
||||
@user.proposals.each do |proposal|
|
||||
expect(page).to have_content(proposal.title)
|
||||
@@ -116,7 +116,7 @@ feature 'Users' do
|
||||
|
||||
scenario "Show alert when user wants to delete a budget investment", :js do
|
||||
user = create(:user, :level_two)
|
||||
budget = create(:budget, phase: 'accepting')
|
||||
budget = create(:budget, phase: "accepting")
|
||||
budget_investment = create(:budget_investment, author_id: user.id, budget: budget)
|
||||
|
||||
login_as(user)
|
||||
@@ -125,106 +125,106 @@ feature 'Users' do
|
||||
expect(page).to have_link budget_investment.title
|
||||
|
||||
within("#budget_investment_#{budget_investment.id}") do
|
||||
dismiss_confirm { click_link 'Delete' }
|
||||
dismiss_confirm { click_link "Delete" }
|
||||
end
|
||||
expect(page).to have_link budget_investment.title
|
||||
|
||||
within("#budget_investment_#{budget_investment.id}") do
|
||||
accept_confirm { click_link 'Delete' }
|
||||
accept_confirm { click_link "Delete" }
|
||||
end
|
||||
expect(page).not_to have_link budget_investment.title
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
feature 'Public activity' do
|
||||
feature "Public activity" do
|
||||
background do
|
||||
@user = create(:user)
|
||||
end
|
||||
|
||||
scenario 'visible by default' do
|
||||
scenario "visible by default" do
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content(@user.username)
|
||||
expect(page).not_to have_content('activity list private')
|
||||
expect(page).not_to have_content("activity list private")
|
||||
end
|
||||
|
||||
scenario 'user can hide public page' do
|
||||
scenario "user can hide public page" do
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_activity'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_activity"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
visit user_path(@user)
|
||||
expect(page).to have_content('activity list private')
|
||||
expect(page).to have_content("activity list private")
|
||||
end
|
||||
|
||||
scenario 'is always visible for the owner' do
|
||||
scenario "is always visible for the owner" do
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_activity'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_activity"
|
||||
click_button "Save changes"
|
||||
|
||||
visit user_path(@user)
|
||||
expect(page).not_to have_content('activity list private')
|
||||
expect(page).not_to have_content("activity list private")
|
||||
end
|
||||
|
||||
scenario 'is always visible for admins' do
|
||||
scenario "is always visible for admins" do
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_activity'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_activity"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
login_as(create(:administrator).user)
|
||||
visit user_path(@user)
|
||||
expect(page).not_to have_content('activity list private')
|
||||
expect(page).not_to have_content("activity list private")
|
||||
end
|
||||
|
||||
scenario 'is always visible for moderators' do
|
||||
scenario "is always visible for moderators" do
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_activity'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_activity"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
login_as(create(:moderator).user)
|
||||
visit user_path(@user)
|
||||
expect(page).not_to have_content('activity list private')
|
||||
expect(page).not_to have_content("activity list private")
|
||||
end
|
||||
|
||||
feature 'User email' do
|
||||
feature "User email" do
|
||||
|
||||
background do
|
||||
@user = create(:user)
|
||||
end
|
||||
|
||||
scenario 'is not shown if no user logged in' do
|
||||
scenario "is not shown if no user logged in" do
|
||||
visit user_path(@user)
|
||||
expect(page).not_to have_content(@user.email)
|
||||
end
|
||||
|
||||
scenario 'is not shown if logged in user is a regular user' do
|
||||
scenario "is not shown if logged in user is a regular user" do
|
||||
login_as(create(:user))
|
||||
visit user_path(@user)
|
||||
expect(page).not_to have_content(@user.email)
|
||||
end
|
||||
|
||||
scenario 'is not shown if logged in user is moderator' do
|
||||
scenario "is not shown if logged in user is moderator" do
|
||||
login_as(create(:moderator).user)
|
||||
visit user_path(@user)
|
||||
expect(page).not_to have_content(@user.email)
|
||||
end
|
||||
|
||||
scenario 'is shown if logged in user is admin' do
|
||||
scenario "is shown if logged in user is admin" do
|
||||
login_as(create(:administrator).user)
|
||||
visit user_path(@user)
|
||||
expect(page).to have_content(@user.email)
|
||||
@@ -234,20 +234,20 @@ feature 'Users' do
|
||||
|
||||
end
|
||||
|
||||
feature 'Public interests' do
|
||||
feature "Public interests" do
|
||||
background do
|
||||
@user = create(:user)
|
||||
end
|
||||
|
||||
scenario 'Display interests' do
|
||||
scenario "Display interests" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
check 'account_public_interests'
|
||||
click_button 'Save changes'
|
||||
check "account_public_interests"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
@@ -255,7 +255,7 @@ feature 'Users' do
|
||||
expect(page).to have_content("Sport")
|
||||
end
|
||||
|
||||
scenario 'Not display interests when proposal has been destroyed' do
|
||||
scenario "Not display interests when proposal has been destroyed" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
proposal.destroy
|
||||
@@ -263,8 +263,8 @@ feature 'Users' do
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
check 'account_public_interests'
|
||||
click_button 'Save changes'
|
||||
check "account_public_interests"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
@@ -272,103 +272,103 @@ feature 'Users' do
|
||||
expect(page).not_to have_content("Sport")
|
||||
end
|
||||
|
||||
scenario 'No visible by default' do
|
||||
scenario "No visible by default" do
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content(@user.username)
|
||||
expect(page).not_to have_css('#public_interests')
|
||||
expect(page).not_to have_css("#public_interests")
|
||||
end
|
||||
|
||||
scenario 'User can display public page' do
|
||||
scenario "User can display public page" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
check 'account_public_interests'
|
||||
click_button 'Save changes'
|
||||
check "account_public_interests"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
visit user_path(@user, filter: 'follows', page: '1')
|
||||
visit user_path(@user, filter: "follows", page: "1")
|
||||
|
||||
expect(page).to have_css('#public_interests')
|
||||
expect(page).to have_css("#public_interests")
|
||||
end
|
||||
|
||||
scenario 'Is always visible for the owner' do
|
||||
scenario "Is always visible for the owner" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_interests'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_interests"
|
||||
click_button "Save changes"
|
||||
|
||||
visit user_path(@user, filter: 'follows', page: '1')
|
||||
expect(page).to have_css('#public_interests')
|
||||
visit user_path(@user, filter: "follows", page: "1")
|
||||
expect(page).to have_css("#public_interests")
|
||||
end
|
||||
|
||||
scenario 'Is always visible for admins' do
|
||||
scenario "Is always visible for admins" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_interests'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_interests"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
login_as(create(:administrator).user)
|
||||
visit user_path(@user, filter: 'follows', page: '1')
|
||||
expect(page).to have_css('#public_interests')
|
||||
visit user_path(@user, filter: "follows", page: "1")
|
||||
expect(page).to have_css("#public_interests")
|
||||
end
|
||||
|
||||
scenario 'Is always visible for moderators' do
|
||||
scenario "Is always visible for moderators" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
login_as(@user)
|
||||
visit account_path
|
||||
|
||||
uncheck 'account_public_interests'
|
||||
click_button 'Save changes'
|
||||
uncheck "account_public_interests"
|
||||
click_button "Save changes"
|
||||
|
||||
logout
|
||||
|
||||
login_as(create(:moderator).user)
|
||||
visit user_path(@user, filter: 'follows', page: '1')
|
||||
expect(page).to have_css('#public_interests')
|
||||
visit user_path(@user, filter: "follows", page: "1")
|
||||
expect(page).to have_css("#public_interests")
|
||||
end
|
||||
|
||||
scenario 'Should display generic interests title' do
|
||||
scenario "Should display generic interests title" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
@user.update(public_interests: true)
|
||||
visit user_path(@user, filter: 'follows', page: '1')
|
||||
visit user_path(@user, filter: "follows", page: "1")
|
||||
|
||||
expect(page).to have_content("Tags of elements this user follows")
|
||||
end
|
||||
|
||||
scenario 'Should display custom interests title when user is visiting own user page' do
|
||||
scenario "Should display custom interests title when user is visiting own user page" do
|
||||
proposal = create(:proposal, tag_list: "Sport")
|
||||
create(:follow, :followed_proposal, followable: proposal, user: @user)
|
||||
|
||||
@user.update(public_interests: true)
|
||||
login_as(@user)
|
||||
visit user_path(@user, filter: 'follows', page: '1')
|
||||
visit user_path(@user, filter: "follows", page: "1")
|
||||
|
||||
expect(page).to have_content("Tags of elements you follow")
|
||||
end
|
||||
end
|
||||
|
||||
feature 'Special comments' do
|
||||
feature "Special comments" do
|
||||
|
||||
scenario 'comments posted as moderator are not visible in user activity' do
|
||||
scenario "comments posted as moderator are not visible in user activity" do
|
||||
moderator = create(:administrator).user
|
||||
comment = create(:comment, user: moderator)
|
||||
moderator_comment = create(:comment, user: moderator, moderator_id: moderator.id)
|
||||
@@ -379,7 +379,7 @@ feature 'Users' do
|
||||
expect(page).not_to have_content(moderator_comment.body)
|
||||
end
|
||||
|
||||
scenario 'comments posted as admin are not visible in user activity' do
|
||||
scenario "comments posted as admin are not visible in user activity" do
|
||||
admin = create(:administrator).user
|
||||
comment = create(:comment, user: admin)
|
||||
admin_comment = create(:comment, user: admin, administrator_id: admin.id)
|
||||
@@ -389,7 +389,7 @@ feature 'Users' do
|
||||
expect(page).not_to have_content(admin_comment.body)
|
||||
end
|
||||
|
||||
scenario 'valuation comments are not visible in user activity' do
|
||||
scenario "valuation comments are not visible in user activity" do
|
||||
admin = create(:administrator).user
|
||||
comment = create(:comment, user: admin)
|
||||
investment = create(:budget_investment)
|
||||
@@ -400,29 +400,26 @@ feature 'Users' do
|
||||
expect(page).not_to have_content(valuation_comment.body)
|
||||
end
|
||||
|
||||
scenario 'shows only comments from active features' do
|
||||
scenario "shows only comments from active features" do
|
||||
user = create(:user)
|
||||
1.times {create(:comment, user: user, commentable: create(:debate))}
|
||||
2.times {create(:comment, user: user, commentable: create(:budget_investment))}
|
||||
4.times {create(:comment, user: user, commentable: create(:proposal))}
|
||||
|
||||
visit user_path(user)
|
||||
expect(page).to have_content('7 Comments')
|
||||
expect(page).to have_content("7 Comments")
|
||||
|
||||
Setting['feature.debates'] = nil
|
||||
Setting["process.debates"] = nil
|
||||
visit user_path(user)
|
||||
expect(page).to have_content('6 Comments')
|
||||
expect(page).to have_content("6 Comments")
|
||||
|
||||
Setting['feature.budgets'] = nil
|
||||
Setting["process.budgets"] = nil
|
||||
visit user_path(user)
|
||||
expect(page).to have_content('4 Comments')
|
||||
|
||||
Setting['feature.debates'] = true
|
||||
Setting['feature.budgets'] = true
|
||||
expect(page).to have_content("4 Comments")
|
||||
end
|
||||
end
|
||||
|
||||
feature 'Following (public page)' do
|
||||
feature "Following (public page)" do
|
||||
|
||||
before do
|
||||
@user = create(:user)
|
||||
@@ -431,10 +428,10 @@ feature 'Users' do
|
||||
scenario "Do not display follows' tab when user is not following any followables" do
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).not_to have_content('0 Following')
|
||||
expect(page).not_to have_content("0 Following")
|
||||
end
|
||||
|
||||
scenario 'Active following tab by default when follows filters selected', :js do
|
||||
scenario "Active following tab by default when follows filters selected", :js do
|
||||
proposal = create(:proposal, author: @user)
|
||||
create(:follow, followable: proposal, user: @user)
|
||||
|
||||
@@ -453,101 +450,101 @@ feature 'Users' do
|
||||
hidden_proposal.hide
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content('1 Following')
|
||||
expect(page).to have_content("1 Following")
|
||||
end
|
||||
|
||||
describe 'Proposals' do
|
||||
describe "Proposals" do
|
||||
|
||||
scenario 'Display following tab when user is following one proposal at least' do
|
||||
scenario "Display following tab when user is following one proposal at least" do
|
||||
proposal = create(:proposal)
|
||||
create(:follow, followable: proposal, user: @user)
|
||||
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content('1 Following')
|
||||
expect(page).to have_content("1 Following")
|
||||
end
|
||||
|
||||
scenario 'Display proposal tab when user is following one proposal at least' do
|
||||
scenario "Display proposal tab when user is following one proposal at least" do
|
||||
proposal = create(:proposal)
|
||||
create(:follow, followable: proposal, user: @user)
|
||||
|
||||
visit user_path(@user, filter: "follows")
|
||||
|
||||
expect(page).to have_link('Citizen proposals', href: "#citizen_proposals")
|
||||
expect(page).to have_link("Citizen proposals", href: "#citizen_proposals")
|
||||
end
|
||||
|
||||
scenario "Do not display proposals' tab when user is not following any proposal" do
|
||||
visit user_path(@user, filter: "follows")
|
||||
|
||||
expect(page).not_to have_link('Citizen proposals', href: "#citizen_proposals")
|
||||
expect(page).not_to have_link("Citizen proposals", href: "#citizen_proposals")
|
||||
end
|
||||
|
||||
scenario 'Display proposals with link to proposal' do
|
||||
scenario "Display proposals with link to proposal" do
|
||||
proposal = create(:proposal, author: @user)
|
||||
create(:follow, followable: proposal, user: @user)
|
||||
login_as @user
|
||||
|
||||
visit user_path(@user, filter: "follows")
|
||||
click_link 'Citizen proposals'
|
||||
click_link "Citizen proposals"
|
||||
|
||||
expect(page).to have_content proposal.title
|
||||
end
|
||||
|
||||
scenario 'Retired proposals do not have a link to the dashboard', js: true do
|
||||
scenario "Retired proposals do not have a link to the dashboard", js: true do
|
||||
proposal = create(:proposal, :retired, author: @user)
|
||||
login_as @user
|
||||
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content proposal.title
|
||||
expect(page).not_to have_link 'Dashboard'
|
||||
expect(page).to have_content('Dashboard not available for retired proposals')
|
||||
expect(page).not_to have_link "Dashboard"
|
||||
expect(page).to have_content("Dashboard not available for retired proposals")
|
||||
end
|
||||
|
||||
scenario 'Published proposals have a link to the dashboard' do
|
||||
scenario "Published proposals have a link to the dashboard" do
|
||||
proposal = create(:proposal, :published, author: @user)
|
||||
login_as @user
|
||||
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content proposal.title
|
||||
expect(page).to have_link 'Dashboard'
|
||||
expect(page).to have_link "Dashboard"
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Budget Investments' do
|
||||
describe "Budget Investments" do
|
||||
|
||||
scenario 'Display following tab when user is following one budget investment at least' do
|
||||
scenario "Display following tab when user is following one budget investment at least" do
|
||||
budget_investment = create(:budget_investment)
|
||||
create(:follow, followable: budget_investment, user: @user)
|
||||
|
||||
visit user_path(@user)
|
||||
|
||||
expect(page).to have_content('1 Following')
|
||||
expect(page).to have_content("1 Following")
|
||||
end
|
||||
|
||||
scenario 'Display budget investment tab when user is following one budget investment at least' do
|
||||
scenario "Display budget investment tab when user is following one budget investment at least" do
|
||||
budget_investment = create(:budget_investment)
|
||||
create(:follow, followable: budget_investment, user: @user)
|
||||
|
||||
visit user_path(@user, filter: "follows")
|
||||
|
||||
expect(page).to have_link('Investments', href: "#investments")
|
||||
expect(page).to have_link("Investments", href: "#investments")
|
||||
end
|
||||
|
||||
scenario 'Not display budget investment tab when user is not following any budget investment' do
|
||||
scenario "Not display budget investment tab when user is not following any budget investment" do
|
||||
visit user_path(@user, filter: "follows")
|
||||
|
||||
expect(page).not_to have_link('Investments', href: "#investments")
|
||||
expect(page).not_to have_link("Investments", href: "#investments")
|
||||
end
|
||||
|
||||
scenario 'Display budget investment with link to budget investment' do
|
||||
scenario "Display budget investment with link to budget investment" do
|
||||
user = create(:user, :level_two)
|
||||
budget_investment = create(:budget_investment, author: user)
|
||||
create(:follow, followable: budget_investment, user: user)
|
||||
|
||||
visit user_path(user, filter: "follows")
|
||||
click_link 'Investments'
|
||||
click_link "Investments"
|
||||
|
||||
expect(page).to have_link budget_investment.title
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user