Merge pull request #684 from AyuntamientoMadrid/activity-improvements
Activity improvements
This commit is contained in:
@@ -47,7 +47,7 @@ class UsersController < ApplicationController
|
||||
end
|
||||
|
||||
def load_comments
|
||||
@comments = Comment.where(user_id: @user.id).includes(:commentable).order(created_at: :desc).page(params[:page])
|
||||
@comments = Comment.not_as_admin_or_moderator.where(user_id: @user.id).includes(:commentable).order(created_at: :desc).page(params[:page])
|
||||
end
|
||||
|
||||
def valid_access?
|
||||
|
||||
@@ -35,4 +35,8 @@ module UsersHelper
|
||||
end
|
||||
end
|
||||
|
||||
def current_administrator?
|
||||
current_user && current_user.administrator?
|
||||
end
|
||||
|
||||
end
|
||||
@@ -21,6 +21,7 @@ class Comment < ActiveRecord::Base
|
||||
|
||||
scope :for_render, -> { with_hidden.includes(user: :organization) }
|
||||
scope :with_visible_author, -> { joins(:user).where("users.hidden_at IS NULL") }
|
||||
scope :not_as_admin_or_moderator, -> { where("administrator_id IS NULL").where("moderator_id IS NULL")}
|
||||
scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) }
|
||||
|
||||
scope :sort_by_most_voted , -> { order(confidence_score: :desc, created_at: :desc) }
|
||||
|
||||
@@ -2,7 +2,13 @@
|
||||
<div class="activity row">
|
||||
<div class="small-12 column">
|
||||
|
||||
<h2><%= avatar_image(@user, seed: @user.id, size: 60) %> <%= @user.name %></h2>
|
||||
<h2>
|
||||
<%= avatar_image(@user, seed: @user.id, size: 60) %>
|
||||
<%= @user.name %>
|
||||
<% if current_administrator? %>
|
||||
<small><%= @user.email %></small>
|
||||
<% end %>
|
||||
</h2>
|
||||
|
||||
<% if @user.public_activity || @authorized_current_user %>
|
||||
<dl class="sub-nav">
|
||||
|
||||
@@ -167,6 +167,60 @@ feature 'Users' do
|
||||
visit user_path(@user)
|
||||
expect(page).to_not have_content('activity list private')
|
||||
end
|
||||
|
||||
feature 'User email' do
|
||||
|
||||
background do
|
||||
@user = create(:user)
|
||||
end
|
||||
|
||||
scenario 'is not shown if no user logged in' do
|
||||
visit user_path(@user)
|
||||
expect(page).to_not have_content(@user.email)
|
||||
end
|
||||
|
||||
scenario 'is not shown if logged in user is a regular user' do
|
||||
login_as(create(:user))
|
||||
visit user_path(@user)
|
||||
expect(page).to_not have_content(@user.email)
|
||||
end
|
||||
|
||||
scenario 'is not shown if logged in user is moderator' do
|
||||
login_as(create(:moderator).user)
|
||||
visit user_path(@user)
|
||||
expect(page).to_not have_content(@user.email)
|
||||
end
|
||||
|
||||
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)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
feature 'Special comments' 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)
|
||||
|
||||
visit user_path(moderator)
|
||||
expect(page).to have_content(comment.body)
|
||||
expect(page).to_not have_content(moderator_comment.body)
|
||||
end
|
||||
|
||||
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)
|
||||
|
||||
visit user_path(admin)
|
||||
expect(page).to have_content(comment.body)
|
||||
expect(page).to_not have_content(admin_comment.body)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -117,4 +117,15 @@ describe Comment do
|
||||
expect(comment.author_id).to eq(comment.user.id)
|
||||
end
|
||||
end
|
||||
|
||||
describe "not_as_admin_or_moderator" do
|
||||
it "returns only comments posted as regular user" do
|
||||
comment1 = create(:comment)
|
||||
create(:comment, administrator_id: create(:administrator).id)
|
||||
create(:comment, moderator_id: create(:moderator).id)
|
||||
|
||||
expect(Comment.not_as_admin_or_moderator.size).to eq(1)
|
||||
expect(Comment.not_as_admin_or_moderator.first).to eq(comment1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user