adds specs for moderation [#136]
This commit is contained in:
@@ -13,6 +13,10 @@ FactoryGirl.define do
|
|||||||
description 'Debate description'
|
description 'Debate description'
|
||||||
terms_of_service '1'
|
terms_of_service '1'
|
||||||
association :author, factory: :user
|
association :author, factory: :user
|
||||||
|
|
||||||
|
trait :hidden do
|
||||||
|
hidden_at Time.now
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
factory :vote do
|
factory :vote do
|
||||||
@@ -25,6 +29,10 @@ FactoryGirl.define do
|
|||||||
association :commentable, factory: :debate
|
association :commentable, factory: :debate
|
||||||
user
|
user
|
||||||
body 'Comment body'
|
body 'Comment body'
|
||||||
|
|
||||||
|
trait :hidden do
|
||||||
|
hidden_at Time.now
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
factory :administrator do
|
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'
|
click_button 'Publish reply'
|
||||||
end
|
end
|
||||||
|
|
||||||
within("#comment-#{comment.id}") do
|
within "#comment_#{comment.id}" do
|
||||||
expect(page).to have_content 'It will be done next week.'
|
expect(page).to have_content 'It will be done next week.'
|
||||||
end
|
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