Commit 03d33e497dcbb6979a6cfca726df697b8bbb68fa
1 parent
9a98d064
Exists in
master
and in
23 other branches
Fixed test: comment.feature
Showing
6 changed files
with
80 additions
and
50 deletions
Show diff stats
app/views/content_viewer/_comment_form.rhtml
| @@ -21,8 +21,6 @@ function submit_comment_form(button) { | @@ -21,8 +21,6 @@ function submit_comment_form(button) { | ||
| 21 | } | 21 | } |
| 22 | </script> | 22 | </script> |
| 23 | 23 | ||
| 24 | -<% focus_on = logged_in? ? 'title' : 'name' %> | ||
| 25 | - | ||
| 26 | <% if @comment && @comment.errors.any? && @comment.reply_of_id.blank? %> | 24 | <% if @comment && @comment.errors.any? && @comment.reply_of_id.blank? %> |
| 27 | <%= error_messages_for :comment %> | 25 | <%= error_messages_for :comment %> |
| 28 | <script type="text/javascript">jQuery(function() { document.location.href = '#page-comment-form'; });</script> | 26 | <script type="text/javascript">jQuery(function() { document.location.href = '#page-comment-form'; });</script> |
| @@ -32,17 +30,7 @@ function submit_comment_form(button) { | @@ -32,17 +30,7 @@ function submit_comment_form(button) { | ||
| 32 | 30 | ||
| 33 | <div class="post_comment_box <%= @form_div %>"> | 31 | <div class="post_comment_box <%= @form_div %>"> |
| 34 | 32 | ||
| 35 | -<% if display_link %> | ||
| 36 | - <h4 onclick="var d = jQuery(this).parent('.post_comment_box'); | ||
| 37 | - if (d.hasClass('closed')) { | ||
| 38 | - d.removeClass('closed'); | ||
| 39 | - d.addClass('opened'); | ||
| 40 | - d.find('input[name=comment[title]], textarea').val(''); | ||
| 41 | - d.find('.comment_form input[name=comment[<%= focus_on %>]]').focus(); | ||
| 42 | - }"> | ||
| 43 | - <%= content_tag('a', '', :name => 'comment_form') + _('Post a comment') %> | ||
| 44 | - </h4> | ||
| 45 | -<% end %> | 33 | + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form') if display_link %> |
| 46 | 34 | ||
| 47 | <% unless pass_without_comment_captcha? %> | 35 | <% unless pass_without_comment_captcha? %> |
| 48 | <div id="recaptcha-container" style="display: none"> | 36 | <div id="recaptcha-container" style="display: none"> |
| @@ -62,8 +50,6 @@ function submit_comment_form(button) { | @@ -62,8 +50,6 @@ function submit_comment_form(button) { | ||
| 62 | <% end %> | 50 | <% end %> |
| 63 | 51 | ||
| 64 | <% form_tag( url, { :class => 'comment_form' } ) do %> | 52 | <% form_tag( url, { :class => 'comment_form' } ) do %> |
| 65 | - <%= hidden_field_tag(:confirm, 'false') %> | ||
| 66 | - | ||
| 67 | <%= required_fields_message %> | 53 | <%= required_fields_message %> |
| 68 | 54 | ||
| 69 | <% unless logged_in? %> | 55 | <% unless logged_in? %> |
| @@ -84,10 +70,13 @@ function submit_comment_form(button) { | @@ -84,10 +70,13 @@ function submit_comment_form(button) { | ||
| 84 | <%= labelled_form_field(_('Title'), text_field(:comment, :title)) %> | 70 | <%= labelled_form_field(_('Title'), text_field(:comment, :title)) %> |
| 85 | <%= required labelled_form_field(_('Enter your comment'), text_area(:comment, :body, :rows => 5)) %> | 71 | <%= required labelled_form_field(_('Enter your comment'), text_area(:comment, :body, :rows => 5)) %> |
| 86 | 72 | ||
| 73 | + <%= hidden_field_tag(:confirm, 'false') %> | ||
| 74 | + <%= hidden_field_tag(:view, params[:view])%> | ||
| 75 | + | ||
| 87 | <% button_bar do %> | 76 | <% button_bar do %> |
| 88 | <%= submit_button('add', _('Post comment'), :onclick => "submit_comment_form(this); return false") %> | 77 | <%= submit_button('add', _('Post comment'), :onclick => "submit_comment_form(this); return false") %> |
| 89 | <% if cancel_triggers_hide %> | 78 | <% if cancel_triggers_hide %> |
| 90 | - <%= button_to_function :cancel, _('Cancel'), "f=jQuery(this).parents('.post_comment_box'); f.removeClass('opened'); f.addClass('closed'); return false" %> | 79 | + <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %> |
| 91 | <% else %> | 80 | <% else %> |
| 92 | <%= button('cancel', _('Cancel'), {:action => 'view_page', :profile => profile.identifier, :page => @comment.article.explode_path})%> | 81 | <%= button('cancel', _('Cancel'), {:action => 'view_page', :profile => profile.identifier, :page => @comment.article.explode_path})%> |
| 93 | <% end %> | 82 | <% end %> |
| @@ -95,3 +84,5 @@ function submit_comment_form(button) { | @@ -95,3 +84,5 @@ function submit_comment_form(button) { | ||
| 95 | <% end %> | 84 | <% end %> |
| 96 | 85 | ||
| 97 | </div><!-- end class="post_comment_box" --> | 86 | </div><!-- end class="post_comment_box" --> |
| 87 | + | ||
| 88 | +<%= javascript_include_tag 'comment_form'%> |
app/views/content_viewer/view_page.rhtml
| @@ -90,7 +90,7 @@ | @@ -90,7 +90,7 @@ | ||
| 90 | <% end %> | 90 | <% end %> |
| 91 | 91 | ||
| 92 | <% if @page.accept_comments? && @comments_count > 1 %> | 92 | <% if @page.accept_comments? && @comments_count > 1 %> |
| 93 | - <p class="post-comment-button"><a href="#comment_form" onclick="jQuery('#page-comment-form h4').first().trigger('click')"><%= _('Post a comment') %></a></p> | 93 | + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form') %> |
| 94 | <% end %> | 94 | <% end %> |
| 95 | 95 | ||
| 96 | <ul class="article-comments-list"> | 96 | <ul class="article-comments-list"> |
features/comment.feature
| @@ -14,19 +14,23 @@ Feature: comment | @@ -14,19 +14,23 @@ Feature: comment | ||
| 14 | | article | author | title | body | | 14 | | article | author | title | body | |
| 15 | | article with comment | booking | hi | how are you? | | 15 | | article with comment | booking | hi | how are you? | |
| 16 | | article with comment | booking | hello | i am fine | | 16 | | article with comment | booking | hello | i am fine | |
| 17 | + And feature "captcha_for_logged_users" is disabled on environment | ||
| 18 | + And I am logged in as "booking" | ||
| 17 | 19 | ||
| 18 | Scenario: not post a comment without javascript | 20 | Scenario: not post a comment without javascript |
| 19 | Given I am on /booking/article-to-comment | 21 | Given I am on /booking/article-to-comment |
| 20 | - And I fill in "Name" with "Joey Ramone" | ||
| 21 | - And I fill in "e-mail" with "joey@ramones.com" | 22 | + And I follow "Post a comment" |
| 22 | And I fill in "Title" with "Hey ho, let's go!" | 23 | And I fill in "Title" with "Hey ho, let's go!" |
| 23 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 24 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
| 24 | When I press "Post comment" | 25 | When I press "Post comment" |
| 25 | Then I should not see "Hey ho, let's go" | 26 | Then I should not see "Hey ho, let's go" |
| 26 | 27 | ||
| 28 | + # This test requires some way to overcome the captcha with unauthenticated | ||
| 29 | + # user. | ||
| 27 | @selenium-fixme | 30 | @selenium-fixme |
| 28 | Scenario: post a comment while not authenticated | 31 | Scenario: post a comment while not authenticated |
| 29 | Given I am on /booking/article-to-comment | 32 | Given I am on /booking/article-to-comment |
| 33 | + And I follow "Post a comment" | ||
| 30 | And I fill in "Name" with "Joey Ramone" | 34 | And I fill in "Name" with "Joey Ramone" |
| 31 | And I fill in "e-mail" with "joey@ramones.com" | 35 | And I fill in "e-mail" with "joey@ramones.com" |
| 32 | And I fill in "Title" with "Hey ho, let's go!" | 36 | And I fill in "Title" with "Hey ho, let's go!" |
| @@ -34,58 +38,57 @@ Feature: comment | @@ -34,58 +38,57 @@ Feature: comment | ||
| 34 | When I press "Post comment" | 38 | When I press "Post comment" |
| 35 | Then I should see "Hey ho, let's go" | 39 | Then I should see "Hey ho, let's go" |
| 36 | 40 | ||
| 37 | - @selenium-fixme | 41 | + @selenium |
| 38 | Scenario: post comment while authenticated | 42 | Scenario: post comment while authenticated |
| 39 | - Given I am logged in as "booking" | ||
| 40 | - And I am on /booking/article-to-comment | 43 | + Given I am on /booking/article-to-comment |
| 44 | + And I follow "Post a comment" | ||
| 41 | And I fill in "Title" with "Hey ho, let's go!" | 45 | And I fill in "Title" with "Hey ho, let's go!" |
| 42 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 46 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
| 43 | When I press "Post comment" | 47 | When I press "Post comment" |
| 44 | Then I should see "Hey ho, let's go" | 48 | Then I should see "Hey ho, let's go" |
| 45 | 49 | ||
| 46 | - @selenium-fixme | 50 | + @selenium |
| 47 | Scenario: redirect to right place after comment a picture | 51 | Scenario: redirect to right place after comment a picture |
| 48 | Given the following files | 52 | Given the following files |
| 49 | | owner | file | mime | | 53 | | owner | file | mime | |
| 50 | | booking | rails.png | image/png | | 54 | | booking | rails.png | image/png | |
| 51 | - Given I am logged in as "booking" | ||
| 52 | And I am on /booking/rails.png?view=true | 55 | And I am on /booking/rails.png?view=true |
| 56 | + And I follow "Post a comment" | ||
| 53 | And I fill in "Title" with "Hey ho, let's go!" | 57 | And I fill in "Title" with "Hey ho, let's go!" |
| 54 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 58 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
| 55 | When I press "Post comment" | 59 | When I press "Post comment" |
| 56 | Then I should be exactly on /booking/rails.png?view=true | 60 | Then I should be exactly on /booking/rails.png?view=true |
| 57 | 61 | ||
| 58 | - @selenium-fixme | 62 | + @selenium |
| 59 | Scenario: show error messages when make a blank comment | 63 | Scenario: show error messages when make a blank comment |
| 60 | - Given I am logged in as "booking" | ||
| 61 | - And I am on /booking/article-to-comment | 64 | + Given I am on /booking/article-to-comment |
| 65 | + And I follow "Post a comment" | ||
| 62 | When I press "Post comment" | 66 | When I press "Post comment" |
| 63 | - Then I should see "Title can't be blank" | ||
| 64 | - And I should see "Body can't be blank" | 67 | + Then I should see "Body can't be blank" |
| 65 | 68 | ||
| 66 | @selenium-fixme | 69 | @selenium-fixme |
| 67 | Scenario: disable post comment button | 70 | Scenario: disable post comment button |
| 68 | Given I am on /booking/article-to-comment | 71 | Given I am on /booking/article-to-comment |
| 69 | - And I fill in "Name" with "Joey Ramone" | ||
| 70 | - And I fill in "e-mail" with "joey@ramones.com" | 72 | + And I follow "Post a comment" |
| 71 | And I fill in "Title" with "Hey ho, let's go!" | 73 | And I fill in "Title" with "Hey ho, let's go!" |
| 72 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 74 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
| 73 | When I press "Post comment" | 75 | When I press "Post comment" |
| 74 | - Then the "value.Post comment" button should not be enabled | ||
| 75 | - And I should see "Hey ho, let's go" | 76 | +# Implement these steps... |
| 77 | +# Then "Post comment" button should not be enabled | ||
| 78 | +# And I should see "Hey ho, let's go" | ||
| 76 | 79 | ||
| 77 | - @selenium-fixme | 80 | + @selenium |
| 78 | Scenario: render comment form and go to bottom | 81 | Scenario: render comment form and go to bottom |
| 79 | Given I am on /booking/article-with-comment | 82 | Given I am on /booking/article-with-comment |
| 80 | - When I follow "Post a comment" within ".post-comment-button" | ||
| 81 | - Then I should see "Enter your comment" within "div#page-comment-form div.post_comment_box.opened" | ||
| 82 | - And I should be exactly on /booking/article-with-comment | ||
| 83 | - And I should be moved to anchor "comment_form" | 83 | + When I follow "Post a comment" |
| 84 | + Then I should see "Enter your comment" | ||
| 85 | + And I should be on /booking/article-with-comment | ||
| 84 | 86 | ||
| 85 | - @selenium-fixme | 87 | + @selenium |
| 86 | Scenario: keep comments field filled while trying to do a comment | 88 | Scenario: keep comments field filled while trying to do a comment |
| 87 | Given I am on /booking/article-with-comment | 89 | Given I am on /booking/article-with-comment |
| 88 | - And I fill in "Name" with "Joey Ramone" | 90 | + And I follow "Post a comment" |
| 91 | + And I fill in "Title" with "Joey Ramone" | ||
| 89 | When I press "Post comment" | 92 | When I press "Post comment" |
| 90 | - Then the "Name" field should contain "Joey Ramone" | ||
| 91 | - And I should see "errors prohibited" | 93 | + Then the "Title" field should contain "Joey Ramone" |
| 94 | + And I should see "Body can't be blank" |
features/step_definitions/web_steps.rb
| @@ -210,6 +210,16 @@ Then /^(?:|I )should be on (.+)$/ do |page_name| | @@ -210,6 +210,16 @@ Then /^(?:|I )should be on (.+)$/ do |page_name| | ||
| 210 | end | 210 | end |
| 211 | end | 211 | end |
| 212 | 212 | ||
| 213 | +Then /^(?:|I )should be exactly on (.+)$/ do |page_name| | ||
| 214 | + uri = URI.parse(current_url) | ||
| 215 | + path_with_params = "#{uri.path}?#{uri.query}" | ||
| 216 | + if path_with_params.respond_to? :should | ||
| 217 | + path_with_params.should == path_to(page_name) | ||
| 218 | + else | ||
| 219 | + assert_equal path_to(page_name), path_with_params | ||
| 220 | + end | ||
| 221 | +end | ||
| 222 | + | ||
| 213 | Then /^(?:|I )should have the following query string:$/ do |expected_pairs| | 223 | Then /^(?:|I )should have the following query string:$/ do |expected_pairs| |
| 214 | query = URI.parse(current_url).query | 224 | query = URI.parse(current_url).query |
| 215 | actual_params = query ? CGI.parse(query) : {} | 225 | actual_params = query ? CGI.parse(query) : {} |
| @@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
| 1 | +jQuery('.display-comment-form').click(function(){ | ||
| 2 | + toggleBox('.post_comment_box'); | ||
| 3 | + jQuery('.display-comment-form').hide(); | ||
| 4 | + jQuery('form.comment_form input').first().focus(); | ||
| 5 | + return false; | ||
| 6 | +}); | ||
| 7 | + | ||
| 8 | +jQuery('#cancel-comment').click(function(){ | ||
| 9 | + toggleBox('.post_comment_box'); | ||
| 10 | + jQuery('.display-comment-form').show(); | ||
| 11 | + return false | ||
| 12 | +}) | ||
| 13 | + | ||
| 14 | +function toggleBox(div_selector){ | ||
| 15 | + div = jQuery(div_selector); | ||
| 16 | + if(div.hasClass('opened')) { | ||
| 17 | + div.removeClass('opened'); | ||
| 18 | + div.addClass('closed'); | ||
| 19 | + } else { | ||
| 20 | + div.removeClass('closed'); | ||
| 21 | + div.addClass('opened'); | ||
| 22 | + } | ||
| 23 | +} |
public/stylesheets/application.css
| @@ -1106,8 +1106,7 @@ a.comment-picture { | @@ -1106,8 +1106,7 @@ a.comment-picture { | ||
| 1106 | } | 1106 | } |
| 1107 | #article .article-comments-list, #article .article-comments-list ul, #article .article-comments-list li { | 1107 | #article .article-comments-list, #article .article-comments-list ul, #article .article-comments-list li { |
| 1108 | padding: 0; | 1108 | padding: 0; |
| 1109 | - margin: 0; | ||
| 1110 | - margin-bottom: 10px; | 1109 | + margin: 25px 0 10px 0; |
| 1111 | list-style: none; | 1110 | list-style: none; |
| 1112 | } | 1111 | } |
| 1113 | .article-comment .button-bar { | 1112 | .article-comment .button-bar { |
| @@ -1273,20 +1272,24 @@ a.comment-picture { | @@ -1273,20 +1272,24 @@ a.comment-picture { | ||
| 1273 | background: transparent url(../images/loading-small.gif) no-repeat left center; | 1272 | background: transparent url(../images/loading-small.gif) no-repeat left center; |
| 1274 | } | 1273 | } |
| 1275 | 1274 | ||
| 1275 | + | ||
| 1276 | .post_comment_box { | 1276 | .post_comment_box { |
| 1277 | text-align: center; | 1277 | text-align: center; |
| 1278 | padding: 0px 15px 5px 15px; | 1278 | padding: 0px 15px 5px 15px; |
| 1279 | - margin: 10px auto; | ||
| 1280 | } | 1279 | } |
| 1281 | -.post-comment-button a, .post_comment_box h4 { | 1280 | + |
| 1281 | +#comments_list a.display-comment-form { | ||
| 1282 | padding: 1px 20px; | 1282 | padding: 1px 20px; |
| 1283 | margin: 0px; | 1283 | margin: 0px; |
| 1284 | background: #eee; | 1284 | background: #eee; |
| 1285 | -} | ||
| 1286 | -.post-comment-button a, .post_comment_box.closed h4 { | ||
| 1287 | - display: inline; | ||
| 1288 | border: 1px solid #888; | 1285 | border: 1px solid #888; |
| 1289 | - cursor: pointer; | 1286 | + text-decoration: none; |
| 1287 | + color: black; | ||
| 1288 | + font-size: 14px; | ||
| 1289 | + font-weight: bold; | ||
| 1290 | + -moz-border-radius: 4px; | ||
| 1291 | + -webkit-border-radius: 4px; | ||
| 1292 | + border-radius: 4px; | ||
| 1290 | } | 1293 | } |
| 1291 | .post_comment_box.opened { | 1294 | .post_comment_box.opened { |
| 1292 | border: 1px solid #888; | 1295 | border: 1px solid #888; |