Merge pull request #684 from AyuntamientoMadrid/activity-improvements

Activity improvements
This commit is contained in:
Raimond Garcia
2015-11-13 03:02:26 -08:00
6 changed files with 78 additions and 2 deletions

View File

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

View File

@@ -35,4 +35,8 @@ module UsersHelper
end
end
def current_administrator?
current_user && current_user.administrator?
end
end

View File

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

View File

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

View File

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

View File

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