forked from openSUSE/open-build-service
-
Notifications
You must be signed in to change notification settings - Fork 0
/
decisions_spec.rb
142 lines (115 loc) · 5.05 KB
/
decisions_spec.rb
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
require 'browser_helper'
RSpec.describe 'Decisions', :js, :vcr do
before do
Flipper.enable(:content_moderation)
end
let(:reporter) { create(:confirmed_user, login: 'foo') }
let(:moderator) { create(:moderator, login: 'baz') }
def fill_decisions_modal(reportable)
within("#reports-modal-#{reportable.class.to_s.downcase}-#{reportable.id}") do
fill_in id: 'decision_reason', with: 'Reason for reporting is correct.'
select('favored', from: 'decision[type]')
click_button('Submit')
end
end
describe 'project' do
let(:project) { create(:project, name: 'against_the_rules') }
let!(:report_for_project) { create(:report, reportable: project, reason: 'This project does not follow the rules!', user: reporter) }
before do
login(moderator)
visit project_show_path(project)
end
it 'creates the decision for a moderator' do
expect(page).to have_text('This project has 1 report .')
click_link('1 report')
fill_decisions_modal(project)
expect(page).to have_text('Decision created successfully')
expect(Decision.count).to eq(1)
end
end
describe 'package' do
let(:project) { create(:project, name: 'factory') }
let(:package) { create(:package_with_maintainer, project: project, name: 'against_the_rules') }
let!(:report_for_package) { create(:report, reportable: package, reason: 'This package does not follow the rules!', user: reporter) }
before do
login(moderator)
visit package_show_path(project, package)
end
it 'creates the decision for a moderator' do
expect(page).to have_text('This package has 1 report .')
click_link('1 report')
fill_decisions_modal(package)
expect(page).to have_text('Decision created successfully')
expect(Decision.count).to eq(1)
end
end
describe 'user' do
let(:spammer) { create(:confirmed_user, login: 'spammer') }
let!(:report_for_user) { create(:report, reportable: spammer, reason: 'User produces spam comments!', user: reporter) }
before do
login(moderator)
visit user_path(spammer)
end
it 'creates the decision for a moderator' do
expect(page).to have_text('This user has 1 report .')
within('.basic-info') { click_link('1 report') }
fill_decisions_modal(spammer)
expect(page).to have_text('Decision created successfully')
expect(Decision.count).to eq(1)
end
end
describe 'comment on request' do
let(:user) { create(:confirmed_user, login: 'jane_doe') }
let(:spammer) { create(:confirmed_user, login: 'trouble_maker') }
let(:project) { create(:project, name: 'some_random_project') }
let(:bs_request) { create(:delete_bs_request, target_project: project, description: 'Delete this project!', creator: user) }
let(:comment_on_request) { create(:comment, commentable: bs_request, user: spammer) }
let!(:report_for_comment) { create(:report, reportable: comment_on_request, reason: 'This is spam!', user: reporter) }
before do
login moderator
visit request_show_path(bs_request)
end
it 'creates the decision for a moderator' do
expect(page).to have_text('This comment has 1 report .')
within("#comment-#{comment_on_request.id}-body") { click_link('1 report') }
fill_decisions_modal(comment_on_request)
expect(page).to have_text('Decision created successfully')
expect(Decision.count).to eq(1)
end
end
describe 'comment on project' do
let(:spammer) { create(:confirmed_user, login: 'trouble_maker') }
let(:project) { create(:project, name: 'factory') }
let(:comment_on_project) { create(:comment_project, commentable: project, user: spammer) }
let!(:report_for_comment) { create(:report, reportable: comment_on_project, reason: 'This is spam!', user: reporter) }
before do
login(moderator)
visit project_show_path(project)
end
it 'creates the decision for a moderator' do
expect(page).to have_text('This comment has 1 report .')
within('#comments-list') { click_link('1 report') }
fill_decisions_modal(comment_on_project)
expect(page).to have_text('Decision created successfully')
expect(Decision.count).to eq(1)
end
end
describe 'comment on package' do
let(:spammer) { create(:confirmed_user, login: 'trouble_maker') }
let(:project) { create(:project, name: 'factory') }
let(:package) { create(:package, name: 'hello', project: project) }
let(:comment_on_package) { create(:comment_package, commentable: package, user: spammer) }
let!(:report_for_comment) { create(:report, reportable: comment_on_package, reason: 'This is spam!', user: reporter) }
before do
login(moderator)
visit package_show_path(project, package)
end
it 'creates the decision for a moderator' do
expect(page).to have_text('This comment has 1 report .')
within('#comments-list') { click_link('1 report') }
fill_decisions_modal(comment_on_package)
expect(page).to have_text('Decision created successfully')
expect(Decision.count).to eq(1)
end
end
end