Commit b621535285b8d00974c9bd172687c196d133a41f
Committed by
Daniela Feitosa
1 parent
ce1d83e9
Exists in
master
and in
28 other branches
Show "post a comment" top button only if there is more than one comment
(ActionItem1771)
Showing
4 changed files
with
37 additions
and
10 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
| ... | ... | @@ -100,6 +100,7 @@ class ContentViewerController < ApplicationController |
| 100 | 100 | end |
| 101 | 101 | |
| 102 | 102 | @comments = @page.comments(true).as_thread |
| 103 | + @comments_count = @page.comments.count | |
| 103 | 104 | if params[:slideshow] |
| 104 | 105 | render :action => 'slideshow', :layout => 'slideshow' |
| 105 | 106 | end | ... | ... |
app/views/content_viewer/view_page.rhtml
| ... | ... | @@ -125,7 +125,7 @@ |
| 125 | 125 | <h3 <%= 'class="no-comments-yet"' if @comments.size == 0 %>> |
| 126 | 126 | <%= number_of_comments(@page) %> |
| 127 | 127 | </h3> |
| 128 | - <% if @comments.size > 0 %> | |
| 128 | + <% if @comments_count > 1 %> | |
| 129 | 129 | <p class="post-comment-button"><a href="#comment_form" onclick="jQuery('#page-comment-form h4').first().trigger('click')"><%= _('Post a comment') %></a></p> |
| 130 | 130 | <% end %> |
| 131 | 131 | <ul class="article-comments-list"> | ... | ... |
features/comment.feature
| ... | ... | @@ -7,8 +7,13 @@ Feature: comment |
| 7 | 7 | | login | |
| 8 | 8 | | booking | |
| 9 | 9 | And the following articles |
| 10 | - | owner | name | | |
| 11 | - | booking | article to comment | | |
| 10 | + | owner | name | | |
| 11 | + | booking | article to comment | | |
| 12 | + | booking | article with comment | | |
| 13 | + And the following comments | |
| 14 | + | article | author | title | body | | |
| 15 | + | article with comment | booking | hi | how are you? | | |
| 16 | + | article with comment | booking | hello | i am fine | | |
| 12 | 17 | |
| 13 | 18 | Scenario: not post a comment without javascript |
| 14 | 19 | Given I am on /booking/article-to-comment |
| ... | ... | @@ -71,11 +76,8 @@ Feature: comment |
| 71 | 76 | |
| 72 | 77 | @selenium |
| 73 | 78 | Scenario: render comment form and go to bottom |
| 74 | - Given the following comment | |
| 75 | - | article | author | title | body | | |
| 76 | - | article to comment | booking | hi | how are you? | | |
| 77 | - Given I am on /booking/article-to-comment | |
| 79 | + Given I am on /booking/article-with-comment | |
| 78 | 80 | When I follow "Post a comment" within ".post-comment-button" |
| 79 | 81 | Then I should see "Enter your comment" within "div#page-comment-form div.post_comment_box.opened" |
| 80 | - And I should be exactly on /booking/article-to-comment | |
| 82 | + And I should be exactly on /booking/article-with-comment | |
| 81 | 83 | And I should be moved to anchor "comment_form" | ... | ... |
test/functional/content_viewer_controller_test.rb
| ... | ... | @@ -1324,14 +1324,14 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
| 1324 | 1324 | assert_tag :a, :attributes => { :href => "http://" + url}, :content => url.scan(/.{4}/).join('​') |
| 1325 | 1325 | end |
| 1326 | 1326 | |
| 1327 | - should 'show a post comment button on top if there are comments' do | |
| 1327 | + should 'not show a post comment button on top if there is only one comment' do | |
| 1328 | 1328 | profile = create_user('testuser').person |
| 1329 | 1329 | article = profile.articles.build(:name => 'test') |
| 1330 | 1330 | article.save! |
| 1331 | 1331 | comment = article.comments.build(:author => profile, :title => 'hi', :body => 'hello') |
| 1332 | 1332 | comment.save! |
| 1333 | 1333 | get :view_page, :profile => 'testuser', :page => [ 'test' ] |
| 1334 | - assert_tag :tag => 'p', :attributes => { :class => 'post-comment-button' } | |
| 1334 | + assert_no_tag :tag => 'p', :attributes => { :class => 'post-comment-button' } | |
| 1335 | 1335 | end |
| 1336 | 1336 | |
| 1337 | 1337 | should 'not show a post comment button on top if there are no comments' do |
| ... | ... | @@ -1342,4 +1342,28 @@ class ContentViewerControllerTest < Test::Unit::TestCase |
| 1342 | 1342 | assert_no_tag :tag => 'p', :attributes => { :class => 'post-comment-button' } |
| 1343 | 1343 | end |
| 1344 | 1344 | |
| 1345 | + should 'show a post comment button on top if there are at least two comments' do | |
| 1346 | + profile = create_user('testuser').person | |
| 1347 | + article = profile.articles.build(:name => 'test') | |
| 1348 | + article.save! | |
| 1349 | + comment1 = article.comments.build(:author => profile, :title => 'hi', :body => 'hello') | |
| 1350 | + comment1.save! | |
| 1351 | + comment2 = article.comments.build(:author => profile, :title => 'hi', :body => 'hello', :reply_of_id => comment1.id) | |
| 1352 | + comment2.save! | |
| 1353 | + get :view_page, :profile => 'testuser', :page => [ 'test' ] | |
| 1354 | + assert_tag :tag => 'p', :attributes => { :class => 'post-comment-button' } | |
| 1355 | + end | |
| 1356 | + | |
| 1357 | + should 'store number of comments' do | |
| 1358 | + profile = create_user('testuser').person | |
| 1359 | + article = profile.articles.build(:name => 'test') | |
| 1360 | + article.save! | |
| 1361 | + comment1 = article.comments.build(:author => profile, :title => 'hi', :body => 'hello') | |
| 1362 | + comment1.save! | |
| 1363 | + comment2 = article.comments.build(:author => profile, :title => 'hi', :body => 'hello', :reply_of_id => comment1.id) | |
| 1364 | + comment2.save! | |
| 1365 | + get :view_page, :profile => 'testuser', :page => [ 'test' ] | |
| 1366 | + assert_equal 2, assigns(:comments_count) | |
| 1367 | + end | |
| 1368 | + | |
| 1345 | 1369 | end | ... | ... |