Merge pull request #644 from Serabe/feature/refactor-comment-body-classes
Refactor comment body
This commit is contained in:
@@ -17,4 +17,23 @@ module CommentsHelper
|
||||
comments.select{|c| c.parent_id == parent.id}
|
||||
end
|
||||
|
||||
def user_level_class(comment)
|
||||
if comment.as_administrator?
|
||||
"is-admin"
|
||||
elsif comment.as_moderator?
|
||||
"is-moderator"
|
||||
elsif comment.user.official?
|
||||
"level-#{comment.user.official_level}"
|
||||
else
|
||||
"" # Default no special user class
|
||||
end
|
||||
end
|
||||
|
||||
def comment_author_class(comment, author_id)
|
||||
if comment.user_id == author_id
|
||||
"is-author"
|
||||
else
|
||||
"" # Default not author class
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -62,19 +62,12 @@
|
||||
• <time><%= l comment.created_at.to_datetime, format: :datetime %></time>
|
||||
</div>
|
||||
|
||||
<% if comment.as_administrator? %>
|
||||
<div class="comment-user is-admin"><%= simple_format text_with_links comment.body %></div>
|
||||
<% elsif comment.as_moderator? %>
|
||||
<div class="comment-user is-moderator"><%= simple_format text_with_links comment.body %></div>
|
||||
<% elsif comment.user.official? && comment.user_id == @commentable.author_id %>
|
||||
<div class="comment-user level-<%= comment.user.official_level %> is-author"><%= simple_format text_with_links comment.body %></div>
|
||||
<% elsif comment.user.official? %>
|
||||
<div class="comment-user level-<%= comment.user.official_level %>"><%= simple_format text_with_links comment.body %></div>
|
||||
<% elsif comment.user_id == @commentable.author_id %>
|
||||
<div class="comment-user is-author"><%= simple_format text_with_links comment.body %></div>
|
||||
<% else %>
|
||||
<div class="comment-user"><%= simple_format text_with_links comment.body %></div>
|
||||
<% end %>
|
||||
<div class="comment-user
|
||||
<%= user_level_class comment %>
|
||||
<%= comment_author_class comment, @commentable.author_id %>">
|
||||
<%= text_with_links comment.body %>
|
||||
</div>
|
||||
|
||||
<span id="<%= dom_id(comment) %>_votes" class="comment-votes right">
|
||||
<%= render 'comments/votes', comment: comment %>
|
||||
</span>
|
||||
|
||||
62
spec/helpers/comments_helper_spec.rb
Normal file
62
spec/helpers/comments_helper_spec.rb
Normal file
@@ -0,0 +1,62 @@
|
||||
require 'rails_helper'
|
||||
|
||||
# Specs in this file have access to a helper object that includes
|
||||
# the CommentsHelper. For example:
|
||||
#
|
||||
# describe CommentsHelper do
|
||||
# describe "string concat" do
|
||||
# it "concats two strings with spaces" do
|
||||
# expect(helper.concat_strings("this","that")).to eq("this that")
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
RSpec.describe CommentsHelper, type: :helper do
|
||||
|
||||
describe '#user_level_class' do
|
||||
|
||||
def comment_double as_administrator: false, as_moderator: false, official: false
|
||||
user = double official?: official, official_level: 'Y'
|
||||
double as_administrator?: as_administrator, as_moderator?: as_moderator, user: user
|
||||
end
|
||||
|
||||
it 'returns is-admin for comment done as administrator' do
|
||||
comment = comment_double(as_administrator: true)
|
||||
|
||||
expect(helper.user_level_class(comment)).to eq('is-admin')
|
||||
end
|
||||
|
||||
it 'returns is-moderator for comment done as moderator' do
|
||||
comment = comment_double(as_moderator: true)
|
||||
|
||||
expect(helper.user_level_class(comment)).to eq('is-moderator')
|
||||
end
|
||||
|
||||
it 'returns level followed by official level if user is official' do
|
||||
comment = comment_double(official: true)
|
||||
|
||||
expect(helper.user_level_class(comment)).to eq('level-Y')
|
||||
end
|
||||
|
||||
it 'returns an empty class otherwise' do
|
||||
comment = comment_double
|
||||
|
||||
expect(helper.user_level_class(comment)).to eq('')
|
||||
end
|
||||
end
|
||||
|
||||
describe '#comment_author_class' do
|
||||
it 'returns is-author if author is the commenting user' do
|
||||
author_id = 42
|
||||
comment = double user_id: author_id
|
||||
|
||||
expect(helper.comment_author_class(comment, author_id)).to eq('is-author')
|
||||
end
|
||||
|
||||
it 'returns an empty string if commenter is not the author' do
|
||||
author_id = 42
|
||||
comment = double user_id: author_id - 1
|
||||
|
||||
expect(helper.comment_author_class(comment, author_id)).to eq('')
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user