From c3d7d47c3f24de2ffa90edbb66f3b42d6704946d Mon Sep 17 00:00:00 2001 From: Manuel Lucena Date: Wed, 4 Oct 2017 15:23:24 +0200 Subject: [PATCH] 20171004 - Refactored specs for polls comments On branch mlucena-poll-comments Changes to be committed: modified: app/views/comments/show.html.erb modified: spec/features/polls/polls_spec.rb --- app/views/comments/show.html.erb | 2 +- spec/features/polls/polls_spec.rb | 52 ++++++++++++++++++++++++++++--- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/app/views/comments/show.html.erb b/app/views/comments/show.html.erb index a779d1dfa..ce76633a0 100644 --- a/app/views/comments/show.html.erb +++ b/app/views/comments/show.html.erb @@ -1,7 +1,7 @@
<%= back_link_to commentable_path(@comment), - t("comments.show.return_to_commentable") + @comment.commentable.title %> + t("comments.show.return_to_commentable") + @comment.commentable.title unless @comment != "Poll" %>
diff --git a/spec/features/polls/polls_spec.rb b/spec/features/polls/polls_spec.rb index 1c18e752d..76932558b 100644 --- a/spec/features/polls/polls_spec.rb +++ b/spec/features/polls/polls_spec.rb @@ -271,23 +271,67 @@ feature 'Polls' do end end - scenario 'user can reply to comment' do + scenario 'user b can access to comments from user a' do oliver = create(:user, username: 'Oliver Atom') benji = create(:user, username: 'Benji Prince') create(:comment, commentable: poll, user: oliver) - login_as(oliver) + login_as(benji) visit poll_path(poll) expect(page).to have_content oliver.username end - scenario 'user can upvote a comment' do + scenario 'user b can reply to comments from user a', :js do + koji = create(:user, username: 'Koji Kabuto') + sayaka = create(:user, username: 'Sayaka') + comment = create(:comment, commentable: poll, user: koji) + login_as(sayaka) + visit poll_path(poll) + + click_link "Reply" + + within "#js-comment-form-comment_#{comment.id}" do + fill_in "comment-body-comment_#{comment.id}", with: 'MAZINGER!!.' + click_button 'Publish reply' + end + + within "#comment_#{comment.id}" do + expect(page).to have_content 'MAZINGER!!.' + end + + expect(page).to_not have_selector("#js-comment-form-comment_#{comment.id}", visible: true) end - scenario 'user can downvote a comment' do + scenario 'user can upvote a comment', :js do + goku = create(:user, username: 'Goku') + vegeta = create(:user, username: 'Vegeta') + comment = create(:comment, commentable: poll, user: goku) + login_as(vegeta) + visit poll_path(poll) + + within("#comment_#{comment.id}_votes") do + find('.in_favor a').click + + expect(page).to have_content "1 vote" + end + end + + scenario 'user can downvote a comment', :js do + doraemon = create(:user, username: 'Doraemon') + nobita = create(:user, username: 'Nobi Nobita') + comment = create(:comment, commentable: poll, user: doraemon) + + login_as(nobita) + visit poll_path(poll) + + within("#comment_#{comment.id}_votes") do + find('.against a').click + + expect(page).to have_content "1 vote" + end end end end