-
-
Notifications
You must be signed in to change notification settings - Fork 199
Expand file tree
/
Copy pathsponsors_controller_spec.rb
More file actions
122 lines (104 loc) · 3.75 KB
/
sponsors_controller_spec.rb
File metadata and controls
122 lines (104 loc) · 3.75 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
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
require 'spec_helper'
RSpec.describe Admin::SponsorsController, type: :controller do
let(:member) { Fabricate(:member) }
let(:member1) { Fabricate(:member) }
let(:address) { Fabricate(:address) }
let(:admin) { Fabricate(:chapter_organiser) }
let(:avatar) { Rack::Test::UploadedFile.new(Rails.root.join('app', 'assets', 'images', 'logo.png'), 'image/png') }
let(:sponsor) { Fabricate(:sponsor) }
describe 'POST #create' do
it "Doesn't allow anonymous users to create sponsors" do
expect do
post :create, sponsor: {
name: 'name', website: 'https://example.com', seats: 40,
address: address, avatar: avatar, members: [1, 2]
}
end.to change(Sponsor, :count).by(0)
end
it "Doesn't allow regular users to create sponsors" do
login member
expect do
post :create, sponsor: {
name: 'name', website: 'https://example.com', seats: 40,
address: address, avatar: avatar
}
end.to change(Sponsor, :count).by(0)
end
context 'Allows chapter organisers to create sponsors with' do
it 'only contact info' do
login admin
request.env['HTTP_REFERER'] = '/admin/member/3'
expect do
post :create, sponsor: {
name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1,
address: address, avatar: avatar
}
end.to change(Sponsor, :count).by(1)
end
it 'members as contacts and contact info' do
login admin
request.env['HTTP_REFERER'] = '/admin/member/3'
expect do
post :create, sponsor: {
name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1,
address: address, avatar: avatar, contact_ids: [member.id, member1.id]
}
end.to change(Sponsor, :count).by(1)
end
it 'only members as contacts' do
login admin
request.env['HTTP_REFERER'] = '/admin/member/3'
expect do
post :create, sponsor: {
name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1,
address: address, avatar: avatar, contact_ids: [member.id, member1.id]
}
end.to change(Sponsor, :count).by(1)
end
it 'latitude and longitude for its address' do
login admin
request.env['HTTP_REFERER'] = '/admin/member/3'
expect do
post :create, sponsor: {
name: 'name', website: 'https://example.com', seats: 40, number_of_coaches: 1,
address: Fabricate(:address, latitude: '54.47474', longitude: '-0.12345'),
avatar: avatar, members: []
}
end.to change(Sponsor, :count).by(1)
end
end
it "Doesn't allow blank sponsors to be created" do
expect do
post :create, sponsor: {
name: '', website: '', seats: '',
address: '', avatar: '', members: []
}
end.to change(Sponsor, :count).by(0)
end
end
describe 'POST #update' do
it "Doesn't allow anonymous users to update sponsors" do
post :update, id: sponsor.id, sponsor: {
name: 'new name'
}
expect(sponsor.reload.name).to eq sponsor.name
end
it "Doesn't allow regular users to update sponsors" do
login member
post :update, id: sponsor.id, sponsor: {
name: 'new_name'
}
expect(sponsor.reload.name).to eq sponsor.name
end
context 'Allows chapter organisers to update sponsors with' do
it 'only contact info' do
login admin
request.env['HTTP_REFERER'] = '/admin/member/3'
post :update, id: sponsor.id, sponsor: {
name: 'new_name'
}
expect(sponsor.reload.name).to eq sponsor.name
end
end
end
end