Merge branch 'master' into dashboard

This commit is contained in:
decabeza
2019-03-26 16:45:48 +01:00
2476 changed files with 62613 additions and 84405 deletions

View File

@@ -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