diff --git a/app/assets/javascripts/moderator_proposals.js.coffee b/app/assets/javascripts/moderator_proposals.js.coffee new file mode 100644 index 000000000..2106b5c65 --- /dev/null +++ b/app/assets/javascripts/moderator_proposals.js.coffee @@ -0,0 +1,8 @@ +App.ModeratorProposals = + + add_class_faded: (id) -> + $("##{id}").addClass("faded") + $("#comments").addClass("faded") + + hide_moderator_actions: (id) -> + $("##{id} .js-moderator-proposals-actions:first").hide() diff --git a/app/controllers/moderation/proposals_controller.rb b/app/controllers/moderation/proposals_controller.rb new file mode 100644 index 000000000..ac051faee --- /dev/null +++ b/app/controllers/moderation/proposals_controller.rb @@ -0,0 +1,6 @@ +class Moderation::ProposalsController < Moderation::BaseController + load_and_authorize_resource + def hide + @proposal.hide + end +end diff --git a/spec/features/moderation/proposals_spec.rb b/spec/features/moderation/proposals_spec.rb new file mode 100644 index 000000000..2a0eeff8c --- /dev/null +++ b/spec/features/moderation/proposals_spec.rb @@ -0,0 +1,38 @@ +require 'rails_helper' + +feature 'Moderate proposals' do + + scenario 'Hide', :js do + citizen = create(:user) + moderator = create(:moderator) + + proposal = create(:proposal) + + login_as(moderator.user) + visit proposal_path(proposal) + + within("#proposal_#{proposal.id}") do + click_link 'Hide' + end + + expect(page).to have_css("#proposal_#{proposal.id}.faded") + + login_as(citizen) + visit proposals_path + + expect(page).to have_css('.proposal', count: 0) + end + + scenario 'Can not hide own proposal' do + moderator = create(:moderator) + proposal = create(:proposal, author: moderator.user) + + login_as(moderator.user) + visit proposal_path(proposal) + + within("#proposal_#{proposal.id}") do + expect(page).to_not have_link('Hide') + expect(page).to_not have_link('Block author') + end + end +end