Skip to content

Commit dde8b09

Browse files
authored
Merge pull request #2457 from mroderick/policy-tests
Add comprehensive tests for all Pundit policies
2 parents 3da4af9 + 66734f1 commit dde8b09

11 files changed

Lines changed: 628 additions & 0 deletions
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
RSpec.describe AdminPortalPolicy do
2+
subject { described_class.new(user, :admin_portal) }
3+
4+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
5+
let(:regular_member) { Fabricate(:member) }
6+
7+
describe '#index?' do
8+
context 'when user is admin' do
9+
let(:user) { admin }
10+
11+
it 'permits access' do
12+
expect(subject.index?).to be true
13+
end
14+
end
15+
16+
context 'when user is regular member' do
17+
let(:user) { regular_member }
18+
19+
it 'denies access' do
20+
expect(subject.index?).to be false
21+
end
22+
end
23+
end
24+
end
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
RSpec.describe ApplicationPolicy do
2+
subject { described_class.new(user, record) }
3+
4+
let(:record) { double('record') }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#index?' do
9+
let(:user) { admin }
10+
11+
it 'denies access by default' do
12+
expect(subject.index?).to be false
13+
end
14+
end
15+
16+
describe '#create?' do
17+
let(:user) { admin }
18+
19+
it 'denies access by default' do
20+
expect(subject.create?).to be false
21+
end
22+
end
23+
24+
describe '#new?' do
25+
let(:user) { admin }
26+
27+
it 'delegates to create?' do
28+
expect(subject.new?).to eq(subject.create?)
29+
end
30+
end
31+
32+
describe '#update?' do
33+
let(:user) { admin }
34+
35+
it 'denies access by default' do
36+
expect(subject.update?).to be false
37+
end
38+
end
39+
40+
describe '#edit?' do
41+
let(:user) { admin }
42+
43+
it 'delegates to update?' do
44+
expect(subject.edit?).to eq(subject.update?)
45+
end
46+
end
47+
48+
describe '#destroy?' do
49+
let(:user) { admin }
50+
51+
it 'denies access by default' do
52+
expect(subject.destroy?).to be false
53+
end
54+
end
55+
end
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
RSpec.describe ChapterPolicy do
2+
subject { described_class.new(user, chapter) }
3+
4+
let(:chapter) { Fabricate(:chapter) }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#index?' do
9+
context 'when user is admin' do
10+
let(:user) { admin }
11+
12+
it 'permits access' do
13+
expect(subject.index?).to be true
14+
end
15+
end
16+
17+
context 'when user is regular member' do
18+
let(:user) { regular_member }
19+
20+
it 'denies access' do
21+
expect(subject.index?).to be false
22+
end
23+
end
24+
end
25+
26+
describe '#create?' do
27+
context 'when user is admin' do
28+
let(:user) { admin }
29+
30+
it 'permits access' do
31+
expect(subject.create?).to be true
32+
end
33+
end
34+
35+
context 'when user is regular member' do
36+
let(:user) { regular_member }
37+
38+
it 'denies access' do
39+
expect(subject.create?).to be false
40+
end
41+
end
42+
end
43+
44+
describe '#show?' do
45+
context 'when user is admin' do
46+
let(:user) { admin }
47+
48+
it 'permits access' do
49+
expect(subject.show?).to be true
50+
end
51+
end
52+
53+
context 'when user is regular member' do
54+
let(:user) { regular_member }
55+
56+
it 'denies access' do
57+
expect(subject.show?).to be false
58+
end
59+
end
60+
end
61+
62+
describe '#edit?' do
63+
context 'when user is admin' do
64+
let(:user) { admin }
65+
66+
it 'permits access' do
67+
expect(subject.edit?).to be true
68+
end
69+
end
70+
71+
context 'when user is regular member' do
72+
let(:user) { regular_member }
73+
74+
it 'denies access' do
75+
expect(subject.edit?).to be false
76+
end
77+
end
78+
end
79+
80+
describe '#update?' do
81+
context 'when user is admin' do
82+
let(:user) { admin }
83+
84+
it 'permits access' do
85+
expect(subject.update?).to be true
86+
end
87+
end
88+
89+
context 'when user is regular member' do
90+
let(:user) { regular_member }
91+
92+
it 'denies access' do
93+
expect(subject.update?).to be false
94+
end
95+
end
96+
end
97+
98+
describe '#members?' do
99+
context 'when user is admin' do
100+
let(:user) { admin }
101+
102+
it 'permits access' do
103+
expect(subject.members?).to be true
104+
end
105+
end
106+
107+
context 'when user is regular member' do
108+
let(:user) { regular_member }
109+
110+
it 'denies access' do
111+
expect(subject.members?).to be false
112+
end
113+
end
114+
end
115+
end
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
RSpec.describe ContactPolicy do
2+
subject { described_class.new(user, contact) }
3+
4+
let(:contact) { Fabricate(:contact) }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#index?' do
9+
context 'when user is admin' do
10+
let(:user) { admin }
11+
12+
it 'permits access' do
13+
expect(subject.index?).to be true
14+
end
15+
end
16+
17+
context 'when user is regular member' do
18+
let(:user) { regular_member }
19+
20+
it 'denies access' do
21+
expect(subject.index?).to be false
22+
end
23+
end
24+
end
25+
end

spec/policies/event_policy_spec.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
RSpec.describe EventPolicy do
2+
subject { described_class.new(user, event) }
3+
4+
let(:event) { Fabricate(:event) }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#invite?' do
9+
context 'when user is admin' do
10+
let(:user) { admin }
11+
12+
it 'permits access' do
13+
expect(subject.invite?).to be true
14+
end
15+
end
16+
17+
context 'when user is regular member' do
18+
let(:user) { regular_member }
19+
20+
it 'denies access' do
21+
expect(subject.invite?).to be false
22+
end
23+
end
24+
end
25+
26+
describe '#show?' do
27+
context 'when user is admin' do
28+
let(:user) { admin }
29+
30+
it 'permits access' do
31+
expect(subject.show?).to be true
32+
end
33+
end
34+
35+
context 'when user is regular member' do
36+
let(:user) { regular_member }
37+
38+
it 'denies access' do
39+
expect(subject.show?).to be false
40+
end
41+
end
42+
end
43+
end

spec/policies/group_policy_spec.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
RSpec.describe GroupPolicy do
2+
subject { described_class.new(user, group) }
3+
4+
let(:group) { Fabricate(:group) }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#create?' do
9+
context 'when user is admin' do
10+
let(:user) { admin }
11+
12+
it 'permits access' do
13+
expect(subject.create?).to be true
14+
end
15+
end
16+
17+
context 'when user is regular member' do
18+
let(:user) { regular_member }
19+
20+
it 'denies access' do
21+
expect(subject.create?).to be false
22+
end
23+
end
24+
end
25+
26+
describe '#show?' do
27+
context 'when user is admin' do
28+
let(:user) { admin }
29+
30+
it 'permits access' do
31+
expect(subject.show?).to be true
32+
end
33+
end
34+
35+
context 'when user is regular member' do
36+
let(:user) { regular_member }
37+
38+
it 'denies access' do
39+
expect(subject.show?).to be false
40+
end
41+
end
42+
end
43+
end
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
RSpec.describe MemberNotePolicy do
2+
subject { described_class.new(user, member_note) }
3+
4+
let(:member_note) { Fabricate(:member_note) }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#create?' do
9+
context 'when user is admin' do
10+
let(:user) { admin }
11+
12+
it 'permits access' do
13+
expect(subject.create?).to be true
14+
end
15+
end
16+
17+
context 'when user is regular member' do
18+
let(:user) { regular_member }
19+
20+
it 'denies access' do
21+
expect(subject.create?).to be false
22+
end
23+
end
24+
end
25+
end
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
RSpec.describe OrganiserPolicy do
2+
subject { described_class.new(user, organiser) }
3+
4+
let(:organiser) { Fabricate(:member) }
5+
let(:admin) { Fabricate(:member).tap { |m| m.add_role(:admin) } }
6+
let(:regular_member) { Fabricate(:member) }
7+
8+
describe '#index?' do
9+
context 'when user is admin' do
10+
let(:user) { admin }
11+
12+
it 'permits access' do
13+
expect(subject.index?).to be true
14+
end
15+
end
16+
17+
context 'when user is regular member' do
18+
let(:user) { regular_member }
19+
20+
it 'denies access' do
21+
expect(subject.index?).to be false
22+
end
23+
end
24+
end
25+
26+
describe '#create?' do
27+
context 'when user is admin' do
28+
let(:user) { admin }
29+
30+
it 'permits access' do
31+
expect(subject.create?).to be true
32+
end
33+
end
34+
35+
context 'when user is regular member' do
36+
let(:user) { regular_member }
37+
38+
it 'denies access' do
39+
expect(subject.create?).to be false
40+
end
41+
end
42+
end
43+
44+
describe '#destroy?' do
45+
context 'when user is admin' do
46+
let(:user) { admin }
47+
48+
it 'permits access' do
49+
expect(subject.destroy?).to be true
50+
end
51+
end
52+
53+
context 'when user is regular member' do
54+
let(:user) { regular_member }
55+
56+
it 'denies access' do
57+
expect(subject.destroy?).to be false
58+
end
59+
end
60+
end
61+
end

0 commit comments

Comments
 (0)