Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
cf6d4dc1
Commit
cf6d4dc1
authored
Mar 26, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
NotificationService for resolving email notification logic
parent
448152ab
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
98 additions
and
0 deletions
+98
-0
app/services/notification_service.rb
app/services/notification_service.rb
+51
-0
spec/services/notification_service_spec.rb
spec/services/notification_service_spec.rb
+47
-0
No files found.
app/services/notification_service.rb
0 → 100644
View file @
cf6d4dc1
# NotificationService class
#
# Used for notifing users with emails about different events
#
# Ex.
# NotificationService.new.new_issue(issue, current_user)
#
class
NotificationService
# Always notify user about ssh key added
# only if ssh key is not deploy key
def
new_key
(
key
)
if
key
.
user
Notify
.
delay
.
new_ssh_key_email
(
key
.
id
)
end
end
# TODO: When we close an issue we should send next emails:
#
# * issue author if his notification level is not Disabled
# * issue assignee if his notification level is not Disabled
# * project team members with notification level higher then Participating
#
def
close_issue
(
issue
,
current_user
)
[
issue
.
author
,
issue
.
assignee
].
compact
.
uniq
.
each
do
|
recipient
|
Notify
.
delay
.
issue_status_changed_email
(
recipient
.
id
,
issue
.
id
,
issue
.
state
,
current_user
.
id
)
end
end
# When we reassign an issue we should send next emails:
#
# * issue author if his notification level is not Disabled
# * issue assignee if his notification level is not Disabled
#
def
reassigned_issue
(
issue
,
current_user
)
recipient_ids
=
[
issue
.
assignee_id
,
issue
.
assignee_id_was
].
keep_if
{
|
id
|
id
&&
id
!=
current_user
.
id
}
recipient_ids
.
each
do
|
recipient_id
|
Notify
.
delay
.
reassigned_issue_email
(
recipient_id
,
issue
.
id
,
issue
.
assignee_id_was
)
end
end
# When we reassign an issue we should send next emails:
#
# * issue assignee if his notification level is not Disabled
#
def
new_issue
(
issue
,
current_user
)
if
issue
.
assignee
&&
issue
.
assignee
!=
current_user
Notify
.
delay
.
new_issue_email
(
issue
.
id
)
end
end
end
spec/services/notification_service_spec.rb
0 → 100644
View file @
cf6d4dc1
require
'spec_helper'
describe
NotificationService
do
# Disable observers to prevent factory trigger notification service
before
{
ActiveRecord
::
Base
.
observers
.
disable
:all
}
let
(
:notification
)
{
NotificationService
.
new
}
describe
'Keys'
do
describe
:new_key
do
let
(
:key
)
{
create
(
:personal_key
)
}
it
{
notification
.
new_key
(
key
).
should
be_true
}
it
'should sent email to key owner'
do
Notify
.
should_receive
(
:new_ssh_key_email
).
with
(
key
.
id
)
notification
.
new_key
(
key
)
end
end
end
describe
'Issues'
do
let
(
:issue
)
{
create
:issue
,
assignee:
create
(
:user
)
}
describe
:new_issue
do
it
'should sent email to issue assignee'
do
Notify
.
should_receive
(
:new_issue_email
).
with
(
issue
.
id
)
notification
.
new_issue
(
issue
,
nil
)
end
end
describe
:reassigned_issue
do
it
'should sent email to issue old assignee and new issue assignee'
do
Notify
.
should_receive
(
:reassigned_issue_email
).
twice
notification
.
reassigned_issue
(
issue
,
issue
.
author
)
end
end
describe
:close_issue
do
it
'should sent email to issue assignee and issue author'
do
Notify
.
should_receive
(
:issue_status_changed_email
).
twice
notification
.
close_issue
(
issue
,
issue
.
author
)
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment