adds specs for moderation [#136]
This commit is contained in:
@@ -13,6 +13,10 @@ FactoryGirl.define do
|
||||
description 'Debate description'
|
||||
terms_of_service '1'
|
||||
association :author, factory: :user
|
||||
|
||||
trait :hidden do
|
||||
hidden_at Time.now
|
||||
end
|
||||
end
|
||||
|
||||
factory :vote do
|
||||
@@ -25,6 +29,10 @@ FactoryGirl.define do
|
||||
association :commentable, factory: :debate
|
||||
user
|
||||
body 'Comment body'
|
||||
|
||||
trait :hidden do
|
||||
hidden_at Time.now
|
||||
end
|
||||
end
|
||||
|
||||
factory :administrator do
|
||||
|
||||
28
spec/features/admin/comments_spec.rb
Normal file
28
spec/features/admin/comments_spec.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
require 'rails_helper'
|
||||
|
||||
feature 'Admin comments' do
|
||||
|
||||
scenario 'Restore', :js do
|
||||
citizen = create(:user)
|
||||
admin = create(:administrator)
|
||||
|
||||
debate = create(:debate)
|
||||
comment = create(:comment, :hidden, commentable: debate, body: 'Not really SPAM')
|
||||
|
||||
login_as(admin.user)
|
||||
visit admin_comments_path
|
||||
|
||||
within("#comment_#{comment.id}") do
|
||||
first(:link, "Restore").click
|
||||
end
|
||||
|
||||
expect(page).to have_content 'The comment has been restored'
|
||||
|
||||
login_as(citizen)
|
||||
visit debate_path(debate)
|
||||
|
||||
expect(page).to have_css('.comment', count: 1)
|
||||
expect(page).to have_content('Not really SPAM')
|
||||
end
|
||||
|
||||
end
|
||||
23
spec/features/admin/debates_spec.rb
Normal file
23
spec/features/admin/debates_spec.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
require 'rails_helper'
|
||||
|
||||
feature 'Admin debates' do
|
||||
|
||||
scenario 'Restore', :js do
|
||||
citizen = create(:user)
|
||||
admin = create(:administrator)
|
||||
|
||||
debate = create(:debate, :hidden)
|
||||
|
||||
login_as(admin.user)
|
||||
visit admin_debate_path(debate)
|
||||
|
||||
click_link 'Restore'
|
||||
|
||||
expect(page).to have_content 'The debate has been restored'
|
||||
|
||||
login_as(citizen)
|
||||
visit debates_path
|
||||
|
||||
expect(page).to have_css('.debate', count: 1)
|
||||
end
|
||||
end
|
||||
@@ -77,7 +77,7 @@ feature 'Comments' do
|
||||
click_button 'Publish reply'
|
||||
end
|
||||
|
||||
within("#comment-#{comment.id}") do
|
||||
within "#comment_#{comment.id}" do
|
||||
expect(page).to have_content 'It will be done next week.'
|
||||
end
|
||||
|
||||
|
||||
72
spec/features/moderation/comments_spec.rb
Normal file
72
spec/features/moderation/comments_spec.rb
Normal file
@@ -0,0 +1,72 @@
|
||||
require 'rails_helper'
|
||||
|
||||
feature 'Moderate Comments' do
|
||||
|
||||
scenario 'Hide', :js do
|
||||
citizen = create(:user)
|
||||
moderator = create(:moderator)
|
||||
|
||||
debate = create(:debate)
|
||||
comment = create(:comment, commentable: debate, body: 'SPAM')
|
||||
|
||||
login_as(moderator.user)
|
||||
visit debate_path(debate)
|
||||
|
||||
within("#comment_#{comment.id}") do
|
||||
click_link 'Hide'
|
||||
expect(page).to have_css('.comment .faded')
|
||||
end
|
||||
|
||||
login_as(citizen)
|
||||
visit debate_path(debate)
|
||||
|
||||
expect(page).to have_css('.comment', count: 1)
|
||||
expect(page).to have_content('This comment has been deleted')
|
||||
expect(page).to_not have_content('SPAM')
|
||||
end
|
||||
|
||||
scenario 'Children visible', :js do
|
||||
citizen = create(:user)
|
||||
moderator = create(:moderator)
|
||||
|
||||
debate = create(:debate)
|
||||
comment = create(:comment, commentable: debate, body: 'SPAM')
|
||||
reply = create(:comment, commentable: debate, body: 'Acceptable reply', parent_id: comment.id)
|
||||
|
||||
login_as(moderator.user)
|
||||
visit debate_path(debate)
|
||||
|
||||
within("#comment_#{comment.id}") do
|
||||
first(:link, "Hide").click
|
||||
expect(page).to have_css('.comment .faded')
|
||||
end
|
||||
|
||||
login_as(citizen)
|
||||
visit debate_path(debate)
|
||||
|
||||
expect(page).to have_css('.comment', count: 2)
|
||||
expect(page).to have_content('This comment has been deleted')
|
||||
expect(page).to_not have_content('SPAM')
|
||||
|
||||
expect(page).to have_content('Acceptable reply')
|
||||
end
|
||||
|
||||
scenario 'Moderator actions' do
|
||||
citizen = create(:user)
|
||||
moderator = create(:moderator)
|
||||
|
||||
debate = create(:debate)
|
||||
comment = create(:comment, commentable: debate)
|
||||
|
||||
login_as(moderator.user)
|
||||
visit debate_path(debate)
|
||||
|
||||
expect(page).to have_css("#moderator-comment-actions")
|
||||
|
||||
login_as(citizen)
|
||||
visit debate_path(debate)
|
||||
|
||||
expect(page).to_not have_css("#moderator-comment-actions")
|
||||
end
|
||||
|
||||
end
|
||||
24
spec/features/moderation/debates_spec.rb
Normal file
24
spec/features/moderation/debates_spec.rb
Normal file
@@ -0,0 +1,24 @@
|
||||
require 'rails_helper'
|
||||
|
||||
feature 'Moderate debates' do
|
||||
|
||||
scenario 'Hide', :js do
|
||||
citizen = create(:user)
|
||||
moderator = create(:moderator)
|
||||
|
||||
debate = create(:debate)
|
||||
|
||||
login_as(moderator.user)
|
||||
visit debate_path(debate)
|
||||
|
||||
within("#debate_#{debate.id}") do
|
||||
click_link 'Hide'
|
||||
end
|
||||
|
||||
login_as(citizen)
|
||||
visit debates_path
|
||||
|
||||
expect(page).to have_css('.debate', count: 0)
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user