BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
9bd860be
Commit
9bd860be
authored
Sep 01, 2017
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Optimize notification emails specs
parent
aacc6110
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
65 deletions
+34
-65
notify_spec.rb
spec/mailers/notify_spec.rb
+31
-63
notify_shared_examples.rb
spec/support/notify_shared_examples.rb
+3
-2
No files found.
spec/mailers/notify_spec.rb
View file @
9bd860be
...
...
@@ -8,6 +8,26 @@ describe Notify do
include_context
'gitlab email notification'
set
(
:user
)
{
create
(
:user
)
}
set
(
:current_user
)
{
create
(
:user
,
email:
"current@email.com"
)
}
set
(
:assignee
)
{
create
(
:user
,
email:
'assignee@example.com'
,
name:
'John Doe'
)
}
set
(
:merge_request
)
do
create
(
:merge_request
,
source_project:
project
,
target_project:
project
,
author:
current_user
,
assignee:
assignee
,
description:
'Awesome description'
)
end
set
(
:issue
)
do
create
(
:issue
,
author:
current_user
,
assignees:
[
assignee
],
project:
project
,
description:
'My awesome description!'
)
end
def
have_referable_subject
(
referable
,
reply:
false
)
prefix
=
referable
.
project
.
name
if
referable
.
project
prefix
=
"Re:
#{
prefix
}
"
if
reply
...
...
@@ -19,8 +39,6 @@ describe Notify do
context
'for a project'
do
describe
'items that are assignable, the email'
do
let
(
:current_user
)
{
create
(
:user
,
email:
"current@email.com"
)
}
let
(
:assignee
)
{
create
(
:user
,
email:
'assignee@example.com'
,
name:
'John Doe'
)
}
let
(
:previous_assignee
)
{
create
(
:user
,
name:
'Previous Assignee'
)
}
shared_examples
'an assignee email'
do
...
...
@@ -36,8 +54,6 @@ describe Notify do
end
context
'for issues'
do
let
(
:issue
)
{
create
(
:issue
,
author:
current_user
,
assignees:
[
assignee
],
project:
project
)
}
let
(
:issue_with_description
)
{
create
(
:issue
,
author:
current_user
,
assignees:
[
assignee
],
project:
project
,
description:
'My awesome description'
)
}
describe
'that are new'
do
subject
{
described_class
.
new_issue_email
(
issue
.
assignees
.
first
.
id
,
issue
.
id
)
}
...
...
@@ -56,6 +72,10 @@ describe Notify do
end
end
it
'contains the description'
do
is_expected
.
to
have_html_escaped_body_text
issue
.
description
end
context
'when enabled email_author_in_body'
do
before
do
stub_application_setting
(
email_author_in_body:
true
)
...
...
@@ -68,16 +88,6 @@ describe Notify do
end
end
describe
'that are new with a description'
do
subject
{
described_class
.
new_issue_email
(
issue_with_description
.
assignees
.
first
.
id
,
issue_with_description
.
id
)
}
it_behaves_like
'it should show Gmail Actions View Issue link'
it
'contains the description'
do
is_expected
.
to
have_html_escaped_body_text
issue_with_description
.
description
end
end
describe
'that have been reassigned'
do
subject
{
described_class
.
reassigned_issue_email
(
recipient
.
id
,
issue
.
id
,
[
previous_assignee
.
id
],
current_user
.
id
)
}
...
...
@@ -197,11 +207,6 @@ describe Notify do
end
context
'for merge requests'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:merge_author
)
{
create
(
:user
)
}
let
(
:merge_request
)
{
create
(
:merge_request
,
author:
current_user
,
assignee:
assignee
,
source_project:
project
,
target_project:
project
)
}
let
(
:merge_request_with_description
)
{
create
(
:merge_request
,
author:
current_user
,
assignee:
assignee
,
source_project:
project
,
target_project:
project
,
description:
'My awesome description'
)
}
describe
'that are new'
do
subject
{
described_class
.
new_merge_request_email
(
merge_request
.
assignee_id
,
merge_request
.
id
)
}
...
...
@@ -221,6 +226,10 @@ describe Notify do
end
end
it
'contains the description'
do
is_expected
.
to
have_html_escaped_body_text
merge_request
.
description
end
context
'when enabled email_author_in_body'
do
before
do
stub_application_setting
(
email_author_in_body:
true
)
...
...
@@ -233,16 +242,6 @@ describe Notify do
end
end
describe
'that are new with a description'
do
subject
{
described_class
.
new_merge_request_email
(
merge_request_with_description
.
assignee_id
,
merge_request_with_description
.
id
)
}
it_behaves_like
'it should show Gmail Actions View Merge request link'
it_behaves_like
"an unsubscribeable thread"
it
'contains the description'
do
is_expected
.
to
have_html_escaped_body_text
merge_request_with_description
.
description
end
end
describe
'that are reassigned'
do
subject
{
described_class
.
reassigned_merge_request_email
(
recipient
.
id
,
merge_request
.
id
,
previous_assignee
.
id
,
current_user
.
id
)
}
...
...
@@ -321,6 +320,7 @@ describe Notify do
end
describe
'that are merged'
do
let
(
:merge_author
)
{
create
(
:user
)
}
subject
{
described_class
.
merged_merge_request_email
(
recipient
.
id
,
merge_request
.
id
,
merge_author
.
id
)
}
it_behaves_like
'a multiple recipients email'
...
...
@@ -348,8 +348,6 @@ describe Notify do
end
describe
'project was moved'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:user
)
{
create
(
:user
)
}
subject
{
described_class
.
project_was_moved_email
(
project
.
id
,
user
.
id
,
"gitlab/gitlab"
)
}
it_behaves_like
'an email sent from GitLab'
...
...
@@ -371,7 +369,6 @@ describe Notify do
end
end
let
(
:user
)
{
create
(
:user
)
}
let
(
:project_member
)
do
project
.
request_access
(
user
)
project
.
requesters
.
find_by
(
user_id:
user
.
id
)
...
...
@@ -398,7 +395,6 @@ describe Notify do
let
(
:group_owner
)
{
create
(
:user
)
}
let
(
:group
)
{
create
(
:group
).
tap
{
|
g
|
g
.
add_owner
(
group_owner
)
}
}
let
(
:project
)
{
create
(
:project
,
:public
,
:access_requestable
,
namespace:
group
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:project_member
)
do
project
.
request_access
(
user
)
project
.
requesters
.
find_by
(
user_id:
user
.
id
)
...
...
@@ -424,7 +420,6 @@ describe Notify do
describe
'project access denied'
do
let
(
:project
)
{
create
(
:project
,
:public
,
:access_requestable
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:project_member
)
do
project
.
request_access
(
user
)
project
.
requesters
.
find_by
(
user_id:
user
.
id
)
...
...
@@ -445,7 +440,6 @@ describe Notify do
describe
'project access changed'
do
let
(
:owner
)
{
create
(
:user
,
name:
"Chang O'Keefe"
)
}
let
(
:project
)
{
create
(
:project
,
:public
,
:access_requestable
,
namespace:
owner
.
namespace
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:project_member
)
{
create
(
:project_member
,
project:
project
,
user:
user
)
}
subject
{
described_class
.
member_access_granted_email
(
'project'
,
project_member
.
id
)
}
...
...
@@ -474,7 +468,6 @@ describe Notify do
end
describe
'project invitation'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:master
)
{
create
(
:user
).
tap
{
|
u
|
project
.
team
<<
[
u
,
:master
]
}
}
let
(
:project_member
)
{
invite_to_project
(
project
,
inviter:
master
)
}
...
...
@@ -494,7 +487,6 @@ describe Notify do
end
describe
'project invitation accepted'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:invited_user
)
{
create
(
:user
,
name:
'invited user'
)
}
let
(
:master
)
{
create
(
:user
).
tap
{
|
u
|
project
.
team
<<
[
u
,
:master
]
}
}
let
(
:project_member
)
do
...
...
@@ -519,7 +511,6 @@ describe Notify do
end
describe
'project invitation declined'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:master
)
{
create
(
:user
).
tap
{
|
u
|
project
.
team
<<
[
u
,
:master
]
}
}
let
(
:project_member
)
do
invitee
=
invite_to_project
(
project
,
inviter:
master
)
...
...
@@ -582,7 +573,6 @@ describe Notify do
end
describe
'on a commit'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:commit
)
{
project
.
commit
}
before
do
...
...
@@ -607,7 +597,6 @@ describe Notify do
end
describe
'on a merge request'
do
let
(
:merge_request
)
{
create
(
:merge_request
,
source_project:
project
,
target_project:
project
)
}
let
(
:note_on_merge_request_path
)
{
project_merge_request_path
(
project
,
merge_request
,
anchor:
"note_
#{
note
.
id
}
"
)
}
before
do
...
...
@@ -632,7 +621,6 @@ describe Notify do
end
describe
'on an issue'
do
let
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
let
(
:note_on_issue_path
)
{
project_issue_path
(
project
,
issue
,
anchor:
"note_
#{
note
.
id
}
"
)
}
before
do
...
...
@@ -658,7 +646,6 @@ describe Notify do
end
context
'items that are noteable, the email for a discussion note'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:note_author
)
{
create
(
:user
,
name:
'author_name'
)
}
before
do
...
...
@@ -722,7 +709,6 @@ describe Notify do
end
describe
'on a merge request'
do
let
(
:merge_request
)
{
create
(
:merge_request
,
source_project:
project
,
target_project:
project
)
}
let
(
:note
)
{
create
(
:discussion_note_on_merge_request
,
noteable:
merge_request
,
project:
project
,
author:
note_author
)
}
let
(
:note_on_merge_request_path
)
{
project_merge_request_path
(
project
,
merge_request
,
anchor:
"note_
#{
note
.
id
}
"
)
}
...
...
@@ -749,7 +735,6 @@ describe Notify do
end
describe
'on an issue'
do
let
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
let
(
:note
)
{
create
(
:discussion_note_on_issue
,
noteable:
issue
,
project:
project
,
author:
note_author
)
}
let
(
:note_on_issue_path
)
{
project_issue_path
(
project
,
issue
,
anchor:
"note_
#{
note
.
id
}
"
)
}
...
...
@@ -835,7 +820,6 @@ describe Notify do
end
describe
'on a merge request'
do
let
(
:merge_request
)
{
create
(
:merge_request
,
source_project:
project
,
target_project:
project
)
}
let
(
:note
)
{
create
(
:diff_note_on_merge_request
)
}
subject
{
described_class
.
note_merge_request_email
(
recipient
.
id
,
note
.
id
)
}
...
...
@@ -848,9 +832,10 @@ describe Notify do
end
context
'for a group'
do
set
(
:group
)
{
create
(
:group
)
}
describe
'group access requested'
do
let
(
:group
)
{
create
(
:group
,
:public
,
:access_requestable
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:group_member
)
do
group
.
request_access
(
user
)
group
.
requesters
.
find_by
(
user_id:
user
.
id
)
...
...
@@ -870,8 +855,6 @@ describe Notify do
end
describe
'group access denied'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:group_member
)
do
group
.
request_access
(
user
)
group
.
requesters
.
find_by
(
user_id:
user
.
id
)
...
...
@@ -890,8 +873,6 @@ describe Notify do
end
describe
'group access changed'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:group_member
)
{
create
(
:group_member
,
group:
group
,
user:
user
)
}
subject
{
described_class
.
member_access_granted_email
(
'group'
,
group_member
.
id
)
}
...
...
@@ -921,7 +902,6 @@ describe Notify do
end
describe
'group invitation'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:owner
)
{
create
(
:user
).
tap
{
|
u
|
group
.
add_user
(
u
,
Gitlab
::
Access
::
OWNER
)
}
}
let
(
:group_member
)
{
invite_to_group
(
group
,
inviter:
owner
)
}
...
...
@@ -941,7 +921,6 @@ describe Notify do
end
describe
'group invitation accepted'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:invited_user
)
{
create
(
:user
,
name:
'invited user'
)
}
let
(
:owner
)
{
create
(
:user
).
tap
{
|
u
|
group
.
add_user
(
u
,
Gitlab
::
Access
::
OWNER
)
}
}
let
(
:group_member
)
do
...
...
@@ -966,7 +945,6 @@ describe Notify do
end
describe
'group invitation declined'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:owner
)
{
create
(
:user
).
tap
{
|
u
|
group
.
add_user
(
u
,
Gitlab
::
Access
::
OWNER
)
}
}
let
(
:group_member
)
do
invitee
=
invite_to_group
(
group
,
inviter:
owner
)
...
...
@@ -1020,7 +998,6 @@ describe Notify do
describe
'email on push for a created branch'
do
let
(
:example_site_path
)
{
root_path
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:tree_path
)
{
project_tree_path
(
project
,
"empty-branch"
)
}
subject
{
described_class
.
repository_push_email
(
project
.
id
,
author_id:
user
.
id
,
ref:
'refs/heads/empty-branch'
,
action: :create
)
}
...
...
@@ -1046,7 +1023,6 @@ describe Notify do
describe
'email on push for a created tag'
do
let
(
:example_site_path
)
{
root_path
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:tree_path
)
{
project_tree_path
(
project
,
"v1.0"
)
}
subject
{
described_class
.
repository_push_email
(
project
.
id
,
author_id:
user
.
id
,
ref:
'refs/tags/v1.0'
,
action: :create
)
}
...
...
@@ -1072,7 +1048,6 @@ describe Notify do
describe
'email on push for a deleted branch'
do
let
(
:example_site_path
)
{
root_path
}
let
(
:user
)
{
create
(
:user
)
}
subject
{
described_class
.
repository_push_email
(
project
.
id
,
author_id:
user
.
id
,
ref:
'refs/heads/master'
,
action: :delete
)
}
...
...
@@ -1094,7 +1069,6 @@ describe Notify do
describe
'email on push for a deleted tag'
do
let
(
:example_site_path
)
{
root_path
}
let
(
:user
)
{
create
(
:user
)
}
subject
{
described_class
.
repository_push_email
(
project
.
id
,
author_id:
user
.
id
,
ref:
'refs/tags/v1.0'
,
action: :delete
)
}
...
...
@@ -1115,9 +1089,7 @@ describe Notify do
end
describe
'email on push with multiple commits'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:example_site_path
)
{
root_path
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:raw_compare
)
{
Gitlab
::
Git
::
Compare
.
new
(
project
.
repository
.
raw_repository
,
sample_image_commit
.
id
,
sample_commit
.
id
)
}
let
(
:compare
)
{
Compare
.
decorate
(
raw_compare
,
project
)
}
let
(
:commits
)
{
compare
.
commits
}
...
...
@@ -1209,9 +1181,7 @@ describe Notify do
end
describe
'email on push with a single commit'
do
let
(
:project
)
{
create
(
:project
,
:repository
)
}
let
(
:example_site_path
)
{
root_path
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:raw_compare
)
{
Gitlab
::
Git
::
Compare
.
new
(
project
.
repository
.
raw_repository
,
sample_commit
.
parent_id
,
sample_commit
.
id
)
}
let
(
:compare
)
{
Compare
.
decorate
(
raw_compare
,
project
)
}
let
(
:commits
)
{
compare
.
commits
}
...
...
@@ -1242,8 +1212,6 @@ describe Notify do
end
describe
'HTML emails setting'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:multipart_mail
)
{
described_class
.
project_was_moved_email
(
project
.
id
,
user
.
id
,
"gitlab/gitlab"
)
}
context
'when disabled'
do
...
...
spec/support/notify_shared_examples.rb
View file @
9bd860be
shared_context
'gitlab email notification'
do
set
(
:project
)
{
create
(
:project
,
:repository
)
}
set
(
:recipient
)
{
create
(
:user
,
email:
'recipient@example.com'
)
}
let
(
:gitlab_sender_display_name
)
{
Gitlab
.
config
.
gitlab
.
email_display_name
}
let
(
:gitlab_sender
)
{
Gitlab
.
config
.
gitlab
.
email_from
}
let
(
:gitlab_sender_reply_to
)
{
Gitlab
.
config
.
gitlab
.
email_reply_to
}
let
(
:recipient
)
{
create
(
:user
,
email:
'recipient@example.com'
)
}
let
(
:project
)
{
create
(
:project
)
}
let
(
:new_user_address
)
{
'newguy@example.com'
}
before
do
...
...
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