hipchat_service_spec.rb
1.42 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
describe NotificationServices::HipchatService, type: 'model' do
let(:service) { Fabricate.build(:hipchat_notification_service) }
let(:problem) { Fabricate(:problem) }
let(:room) { double }
before do
allow_any_instance_of(HipChat::Client).to receive(:[]).and_return(room)
end
describe '#check_params' do
context 'empty field check' do
%w(service api_token room_id).each do |field|
it "'doesn\'t allow #{field} to be empty'" do
service[field.to_sym] = ''
service.check_params
expect(service.errors).to include(field.to_sym)
end
end
end
context 'API version field check' do
%w(v1 v2).each do |version|
it "allows #{version}" do
service[:service] = version
service.check_params
expect(service.errors).to_not include(:service)
end
end
it 'doesn\t allow an unknown version' do
service[:service] = 'vFOO'
service.check_params
expect(service.errors).to include(:service)
end
end
end
it 'sends message' do
expect(room).to receive(:send)
service.create_notification(problem)
end
it 'escapes html in message' do
allow(problem).to receive(:message).and_return('<3')
expect(room).to receive(:send) do |_, message|
expect(message).to_not include('<3')
expect(message).to include('<3')
end
service.create_notification(problem)
end
end