Skip to content
Extraits de code Groupes Projets
report_controller_spec.rb 5,86 ko
Newer Older
  • Learn to ignore specific revisions
  • Lukas Matt's avatar
    Lukas Matt a validé
    #   Copyright (c) 2010-2011, Diaspora Inc.  This file is
    #   licensed under the Affero General Public License version 3 or later.  See
    #   the COPYRIGHT file.
    
    
    describe ReportController, type: :controller do
    
      before do
        sign_in alice
    
        @message = alice.post(:status_message, text: "hey", to: alice.aspects.first.id)
    
        @comment = alice.comment!(@message, "flying pigs, everywhere")
      end
    
    
      describe "#index" do
        context "admin not signed in" do
          it "is behind redirect_unless_admin" do
    
            get :index
    
            expect(response).to redirect_to stream_path
    
          before do
            Role.add_admin(alice.person)
          end
    
          it "succeeds and renders index" do
    
            get :index
    
            expect(response).to render_template("index")
    
          before do
            Role.add_moderator(alice.person)
          end
    
          it "succeeds and renders index" do
    
            expect(response).to render_template("index")
    
        let(:comment_hash) {
    
          {text:    "facebook, is that you?",
           item_id: "#{@post.id}"}
    
        context "report offensive post" do
          it "succeeds" do
    
            put :create, report: {item_id: @message.id, item_type: "Post", text: "offensive content"}
    
            expect(response.status).to eq(200)
    
            expect(Report.exists?(item_id: @message.id, item_type: "Post")).to be true
    
        context "report offensive comment" do
          it "succeeds" do
    
            put :create, report: {item_id: @comment.id, item_type: "Comment", text: "offensive content"}
    
            expect(response.status).to eq(200)
    
            expect(Report.exists?(item_id: @comment.id, item_type: "Comment")).to be true
    
      describe "#update" do
        context "mark post report as user" do
          it "is behind redirect_unless_admin_or_moderator" do
            put :update, id: @message.id, type: "post"
    
            expect(response).to redirect_to stream_path
    
            expect(Report.where(reviewed: false, item_id: @message.id, item_type: "Post")).to be_truthy
    
        context "mark comment report as user" do
    
          it "is behind redirect_unless_admin_or_moderator" do
    
            put :update, id: @comment.id, type: "comment"
    
            expect(response).to redirect_to stream_path
    
            expect(Report.where(reviewed: false, item_id: @comment.id, item_type: "Comment")).to be_truthy
    
        context "mark post report as admin" do
    
          before do
            Role.add_admin(alice.person)
          end
    
          it "succeeds" do
            put :update, id: @message.id, type: "post"
    
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
    
        context "mark comment report as admin" do
    
          before do
            Role.add_admin(alice.person)
          end
    
          it "succeeds" do
            put :update, id: @comment.id, type: "comment"
    
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
    
    
        context "mark post report as moderator" do
          before do
            Role.add_moderator(alice.person)
          end
    
          it "succeeds" do
            put :update, id: @message.id, type: "post"
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
    
        context "mark comment report as moderator" do
          before do
            Role.add_moderator(alice.person)
          end
          it "succeeds" do
            put :update, id: @comment.id, type: "comment"
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
    
      describe "#destroy" do
        context "destroy post as user" do
    
          it "is behind redirect_unless_admin_or_moderator" do
    
            delete :destroy, id: @message.id, type: "post"
    
            expect(response).to redirect_to stream_path
    
            expect(Report.where(reviewed: false, item_id: @message.id, item_type: "Post")).to be_truthy
    
        context "destroy comment as user" do
    
          it "is behind redirect_unless_admin_or_moderator" do
    
            delete :destroy, id: @comment.id, type: "comment"
    
            expect(response).to redirect_to stream_path
    
            expect(Report.where(reviewed: false, item_id: @comment.id, item_type: "Comment")).to be_truthy
    
        context "destroy post as admin" do
    
          before do
            Role.add_admin(alice.person)
          end
    
          it "succeeds" do
            delete :destroy, id: @message.id, type: "post"
    
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
    
        context "destroy comment as admin" do
    
          before do
            Role.add_admin(alice.person)
          end
    
          it "succeeds" do
            delete :destroy, id: @comment.id, type: "comment"
    
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy
    
    
        context "destroy post as moderator" do
          before do
            Role.add_moderator(alice.person)
          end
          it "succeeds" do
            delete :destroy, id: @message.id, type: "post"
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @message.id, item_type: "Post")).to be_truthy
    
          end
        end
        context "destroy comment as moderator" do
          before do
            Role.add_moderator(alice.person)
          end
          it "succeeds" do
            delete :destroy, id: @comment.id, type: "comment"
            expect(response.status).to eq(302)
    
            expect(Report.where(reviewed: true, item_id: @comment.id, item_type: "Comment")).to be_truthy