forked from openSUSE/open-build-service
-
Notifications
You must be signed in to change notification settings - Fork 0
/
event_mailer_test.rb
78 lines (61 loc) · 2.74 KB
/
event_mailer_test.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
require_relative '../test_helper'
class EventMailerTest < ActionMailer::TestCase
fixtures :all
teardown do
Timecop.return
end
def verify_email(fixture_name, email)
should = load_fixture("event_mailer/#{fixture_name}").chomp
assert_equal should, email.encoded.lines.map(&:chomp).select { |l| l !~ %r{^Date:} }.join("\n")
end
test "commit event" do
mail = EventMailer.event([users(:adrian)], events(:pack1_commit))
assert_equal "BaseDistro/pack1 r1 commited", mail.subject
assert_equal ["adrian@example.com"], mail.to
assert_equal read_fixture('commit_event').join, mail.body.to_s
end
test 'maintainer mails for build failure' do
# for this test we don't want fixtures to interfere
EventSubscription.delete_all
# just one subsciption
EventSubscription.create eventtype: 'Event::BuildFail', receiver_role: :maintainer, user: users(:Iggy)
Suse::Backend.wait_for_scheduler_start
mail = EventMailer.event([users(:Iggy)], events(:build_failure_for_iggy))
verify_email('build_fail', mail)
end
test 'reader mails for build failure' do
# for this test we don't want fixtures to interfere
EventSubscription.delete_all
# just one subsciption
EventSubscription.create eventtype: 'Event::BuildFail', receiver_role: :reader, user: users(:fred)
Suse::Backend.wait_for_scheduler_start
mail = EventMailer.event([users(:fred)], events(:build_failure_for_reader))
verify_email('build_fail_reader', mail)
end
test 'group emails' do
User.current = users(:Iggy)
# the default is reviewer groups get email, so check that adrian gets an email
req = bs_requests(:submit_from_home_project)
Timecop.travel(2013, 8, 20, 12, 0, 0)
myid = req.id
SendEventEmails.new.perform # empty queue
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
req.addreview(by_group: 'test_group', comment: 'does it look ok?')
# trigger the send job
SendEventEmails.new.perform
end
email = ActionMailer::Base.deliveries.last
assert_equal "Request #{myid} requires review (submit Apache/BranchPack)", email.subject
assert_equal %w(test_group@testsuite.org), email.to
end
# now check that disabling it for users in groups works too
test 'group emails to users disabled' do
User.current = users(:Iggy)
req = bs_requests(:submit_from_home_project)
GroupsUser.where(user: users(:maintenance_assi), group: groups(:maint_coord)).first.update_attribute(:email, false)
GroupsUser.where(user: users(:maintenance_coord), group: groups(:maint_coord)).first.update_attribute(:email, false)
assert_difference 'ActionMailer::Base.deliveries.size', 0 do
req.addreview(by_group: 'maint_coord', comment: 'does it still look ok?')
end
end
end