summaryrefslogtreecommitdiff
path: root/test/controllers/reports_controller_test.rb
blob: 345045cd2f4c536d1b08b2bcb948ad516124e16a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# frozen_string_literal: true

require 'test_helper'

class ReportsControllerTest < ActionController::TestCase
  setup do
    @request.cookies['_ses'] = 'c1836832948'
  end

  test 'should get index' do
    get :index
    assert_response :success
  end

  test 'should create report when signed out' do
    @image = create(:post)

    assert_difference('Report.count') do
      post :create, params: { reportable_class: 'Post', reportable_id: @image.id, report: { reason: 'OP IS A DUCK' }, category: 'Rule #0' }

      assert_response :redirect
      assert_redirected_to reports_path
    end
  end

  test 'should create report when signed in' do
    sign_in create(:user)
    @image = create(:post)

    assert_difference('Report.count') do
      post :create, params: { reportable_class: 'Post', reportable_id: @image.id, report: { reason: 'OP IS A DUCK' }, category: 'Rule #0' }

      assert_response :redirect
      assert_redirected_to reports_path
    end
  end

  test 'should get new for all reportable models' do
    @comment = create(:comment)
    @image = @comment.image
    @post = create(:post)
    @filter = create(:user_filter)
    @user = @filter.user

    [@comment, @image, @post, @filter, @user].each do |reportable|
      get :new, params: { reportable_class: reportable.class.to_s, reportable_id: reportable.id }
      assert_response :success
    end
  end

  test 'should create reports for all reportable models' do
    @comment = create(:comment)
    @image = @comment.image
    @post = create(:post)
    @filter = create(:user_filter)
    @user = @filter.user

    [@comment, @image, @post, @filter, @user].each do |reportable|
      assert_difference('Report.count') do
        post :create, params: { reportable_class: reportable.class.to_s, reportable_id: reportable.id, report: { reason: 'OP IS A DUCK' }, category: 'Rule #0' }

        assert_response :redirect
        assert_redirected_to reports_path
      end
    end
  end
end