require 'rails_helper' feature 'Users' do feature 'Show (public page)' do background do @user = create(:user) 1.times {create(:debate, author: @user)} 2.times {create(:proposal, author: @user)} 3.times {create(:comment, user: @user)} 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 Comments') end scenario 'default filter is proposals' do @user.proposals.each do |proposal| expect(page).to have_content(proposal.title) end @user.debates.each do |debate| expect(page).to_not have_content(debate.title) end @user.comments.each do |comment| expect(page).to_not have_content(comment.body) end end scenario 'filters' do click_link '1 Debate' @user.debates.each do |debate| expect(page).to have_content(debate.title) end @user.proposals.each do |proposal| expect(page).to_not have_content(proposal.title) end @user.comments.each do |comment| expect(page).to_not have_content(comment.body) end click_link '3 Comments' @user.comments.each do |comment| expect(page).to have_content(comment.body) end @user.proposals.each do |proposal| expect(page).to_not have_content(proposal.title) end @user.debates.each do |debate| expect(page).to_not have_content(debate.title) end end end feature 'Public activity' do background do @user = create(:user) end scenario 'visible by default' do visit user_path(@user) expect(page).to have_content(@user.username) expect(page).to_not have_content('activity list private') end scenario 'user can hide public page' do login_as(@user) visit account_path uncheck 'account_public_activity' click_button 'Save changes' logout visit user_path(@user) expect(page).to have_content('activity list private') end scenario 'is always visible for the owner' do login_as(@user) visit account_path uncheck 'account_public_activity' click_button 'Save changes' visit user_path(@user) expect(page).to_not have_content('activity list private') end scenario 'is always visible for admins' do login_as(@user) visit account_path uncheck 'account_public_activity' click_button 'Save changes' logout login_as(create(:administrator).user) visit user_path(@user) expect(page).to_not have_content('activity list private') end scenario 'is always visible for moderators' do login_as(@user) visit account_path uncheck 'account_public_activity' click_button 'Save changes' logout login_as(create(:moderator).user) visit user_path(@user) expect(page).to_not have_content('activity list private') end end end