-
-
Notifications
You must be signed in to change notification settings - Fork 199
Expand file tree
/
Copy pathmember_notes_controller_spec.rb
More file actions
94 lines (73 loc) · 2.95 KB
/
member_notes_controller_spec.rb
File metadata and controls
94 lines (73 loc) · 2.95 KB
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
require 'spec_helper'
RSpec.describe Admin::MemberNotesController, type: :controller do
let(:member) { Fabricate(:member) }
let(:admin) { Fabricate(:chapter_organiser) }
let!(:member_note) { Fabricate(:member_note) }
describe 'POST #create' do
it "Doesn't allow anonymous users to create notes" do
expect do
post :create, params: { member_note: { note: member_note.note, member_id: member.id } }
end.not_to change { MemberNote.all.count }
end
it "Doesn't allow regular users to create notes" do
login member
expect do
post :create, params: { member_note: { note: member_note.note, member_id: member.id } }
end.not_to change { MemberNote.all.count }
end
it 'Allows chapter organisers to create notes' do
login admin
request.env['HTTP_REFERER'] = '/admin/member/3'
expect do
post :create, params: { member_note: { note: member_note.note, member_id: member.id } }
end.to change { MemberNote.all.count }.by 1
end
it "Doesn't allow blank notes to be created" do
expect do
post :create, params: { member_note: { note: ' ', member_id: member.id } }
end.not_to change { MemberNote.all.count }
end
end
describe 'PATCH #update' do
let!(:member_note) { Fabricate(:member_note, member: member, author: admin, note: 'Original note') }
it "Doesn't allow anonymous users to edit notes" do
patch :update, params: { id: member_note.id, member_note: { note: 'Updated anonymously' } }
expect(member_note.reload.note).to eq('Original note')
end
it "Doesn't allow regular users to edit notes" do
login member
patch :update, params: { id: member_note.id, member_note: { note: 'Updated by member' } }
expect(member_note.reload.note).to eq('Original note')
end
it 'Allows admin to edit notes' do
login admin
patch :update, params: { id: member_note.id, member_note: { note: 'Updated by admin' } }
expect(member_note.reload.note).to eq('Updated by admin')
end
it "Doesn't allow notes to be updated to be blank" do
login admin
patch :update, params: { id: member_note.id, member_note: { note: '' } }
expect(member_note.reload.note).to eq('Original note')
end
end
describe 'DELETE #destroy' do
let!(:member_note) { Fabricate(:member_note, member: member, author: admin, note: 'Note') }
it "Doesn't allow anonymous users to delete notes" do
expect do
delete :destroy, params: { id: member_note.id }
end.not_to change { MemberNote.all.count }
end
it "Doesn't allow regular users to delete notes" do
login member
expect do
delete :destroy, params: { id: member_note.id }
end.not_to change { MemberNote.all.count }
end
it 'Allows note owner to delete notes' do
login admin
expect do
delete :destroy, params: { id: member_note.id }
end.to change { MemberNote.count }.by(-1)
end
end
end