Commit 03d33e497dcbb6979a6cfca726df697b8bbb68fa
1 parent
9a98d064
Exists in
master
and in
29 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; |