From b7086bad4a1b47e905e3337d039b41a4eabdd84a Mon Sep 17 00:00:00 2001 From: rgarcia Date: Sat, 18 Jul 2015 17:39:12 +0200 Subject: [PATCH] adds comments feature specs [#7] --- spec/factories.rb | 11 +++++ spec/features/comments_spec.rb | 73 ++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 spec/features/comments_spec.rb diff --git a/spec/factories.rb b/spec/factories.rb index 58f320ea7..ca031705d 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -4,4 +4,15 @@ FactoryGirl.define do description 'Debate description' terms_of_service '1' end + + factory :comment do + commentable + user + body 'Comment body' + end + + factory :commentable do + debate + end + end \ No newline at end of file diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb new file mode 100644 index 000000000..c4b0e163b --- /dev/null +++ b/spec/features/comments_spec.rb @@ -0,0 +1,73 @@ +require 'rails_helper' +include ActionView::Helpers::DateHelper + +feature 'Comments' do + + scenario 'Index' do + debate = create(:debate) + 3.times { create(:comment, commentable: debate) } + + visit debate_path(debate) + + expect(page).to have_css('.comment', count: 3) + + comment = Comment.first + within first('.comment') do + expect(page).to have_content comment.user.name + expect(page).to have_content time_ago_in_words(comment.created_at) + expect(page).to have_content comment.body + end + end + + scenario 'Create' do + user = create(:user) + debate = create(:debate) + + login_as(user) + visit debate_path(debate) + + fill_in 'comment_body', with: '¿Has pensado en esto...?' + click_button 'Publicar comentario' + + expect(page).to have_content 'Comentario guardado' + + within "#comments" do + expect(page).to have_content '¿Has pensado en esto...?' + end + end + + scenario 'Reply' do + citizen = create(:user, first_name: 'Ana') + manuela = create(:user, first_name: 'Manuela') + debate = create(:debate) + comment = create(:comment, commentable: debate, user: citizen) + + visit debate_path(debate) + login_as(manuela) + + within "#comment-#{comment.id}" do + fill_in 'comment_body', with: 'La semana que viene está hecho.' + click_button 'Publicar comentario' + end + + expect(page).to have_content 'Comentario guardado' + within "#comment-#{comment.id}" do + expect(page).to have_content 'La semana que viene está hecho.' + end + end + + scenario "N replies" do + debate = create(:debate) + parent = create(:comment, commentable: debate) + + 7.times do + create(:comment, commentable: debate). + move_to_child_of(parent) + parent = parent.children.first + end + + visit debate_path(debate) + expect(page).to have_css(".comment.comment.comment.comment.comment.comment.comment.comment") + end + +end \ No newline at end of file