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
9882802a
Commit
9882802a
authored
Feb 16, 2016
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve system notes that are added when issue is moved
parent
69b89d4e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
66 additions
and
20 deletions
+66
-20
move_service.rb
app/services/issues/move_service.rb
+3
-1
system_note_service.rb
app/services/system_note_service.rb
+16
-9
move_service_spec.rb
spec/services/issues/move_service_spec.rb
+5
-1
system_note_service_spec.rb
spec/services/system_note_service_spec.rb
+42
-9
No files found.
app/services/issues/move_service.rb
View file @
9882802a
...
...
@@ -4,6 +4,7 @@ module Issues
@issue_old
=
issue_old
@issue_new
=
issue_old
.
dup
@project_new
=
project_new
@project_old
=
@project
open_new_issue
rewrite_notes
...
...
@@ -33,10 +34,11 @@ module Issues
end
def
add_note_moved_from
SystemNoteService
.
noteable_moved
(
:from
,
@issue_new
,
@project_new
,
@issue_old
,
@current_user
)
end
def
add_note_moved_to
SystemNoteService
.
issue_moved_to_another_project
(
@issue_old
,
@project
,
@project
_new
,
@current_user
)
SystemNoteService
.
noteable_moved
(
:to
,
@issue_old
,
@project_old
,
@issue
_new
,
@current_user
)
end
end
end
app/services/system_note_service.rb
View file @
9882802a
...
...
@@ -3,6 +3,7 @@
# Used for creating system notes (e.g., when a user references a merge request
# from an issue, an issue's assignee changes, an issue is closed, etc.)
class
SystemNoteService
extend
GitlabMarkdownHelper
# Called when commits are added to a Merge Request
#
# noteable - Noteable object
...
...
@@ -388,20 +389,26 @@ class SystemNoteService
create_note
(
noteable:
noteable
,
project:
project
,
author:
author
,
note:
body
)
end
# Called when
issu
e has been moved to another project
# Called when
noteabl
e has been moved to another project
#
#
issue - Issue that has been moved to another project
#
project_from - Source project of the issue
#
project_to - Destination project for the issu
e
# author
- User performing the move
#
direction - symbol, :to or :from
#
noteable - Noteable object
#
noteable_ref - Referenced noteabl
e
# author - User performing the move
#
# Example Note text:
#
# "
This issue has been moved to SomeNamespace / SomeProject
"
# "
Moved to project_new/#11
"
#
# Returns the created Note object
def
self
.
issue_moved_to_another_project
(
issue
,
project_from
,
project_to
,
author
)
body
=
"This issue has been moved to
#{
project_to
.
to_reference
}
by
#{
author
.
to_reference
}
"
create_note
(
noteable:
issue
,
project:
project_from
,
author:
author
,
note:
body
)
def
self
.
noteable_moved
(
direction
,
noteable
,
project
,
noteable_ref
,
author
)
unless
[
:to
,
:from
].
include?
(
direction
)
raise
StandardError
,
"Invalid direction `
#{
direction
}
`"
end
cross_reference
=
cross_project_reference
(
noteable_ref
.
project
,
noteable_ref
)
body
=
"Moved
#{
direction
}
#{
cross_reference
}
"
create_note
(
noteable:
noteable
,
project:
project
,
author:
author
,
note:
body
)
end
end
spec/services/issues/move_service_spec.rb
View file @
9882802a
...
...
@@ -20,7 +20,11 @@ describe Issues::MoveService, services: true do
end
it
'should add system note to old issue'
do
expect
(
issue
.
notes
.
last
.
note
).
to
match
/This issue has been moved to/
expect
(
issue
.
notes
.
last
.
note
).
to
match
/^Moved to/
end
it
'should add system note to new issue'
do
expect
(
new_issue
.
notes
.
last
.
note
).
to
match
/^Moved from/
end
end
end
spec/services/system_note_service_spec.rb
View file @
9882802a
...
...
@@ -441,23 +441,56 @@ describe SystemNoteService, services: true do
end
end
describe
'.issue_moved_to_another_project'
do
describe
'.noteable_moved'
do
let
(
:new_project
)
{
create
(
:project
)
}
let
(
:new_noteable
)
{
create
(
:issue
,
project:
new_project
)
}
subject
do
described_class
.
issue_moved_to_another_project
(
noteable
,
project
,
new_project
,
author
)
described_class
.
noteable_moved
(
direction
,
noteable
,
project
,
new_noteable
,
author
)
end
let
(
:new_project
)
{
create
(
:project
)
}
shared_examples
'cross project mentionable'
do
include
GitlabMarkdownHelper
it
'should contain cross reference to new noteable'
do
expect
(
subject
.
note
).
to
include
cross_project_reference
(
new_project
,
new_noteable
)
end
it
'should mention referenced noteable'
do
expect
(
subject
.
note
).
to
include
new_noteable
.
to_reference
end
it
'should mention referenced project'
do
expect
(
subject
.
note
).
to
include
new_project
.
to_reference
end
end
context
'moved to'
do
let
(
:direction
)
{
:to
}
it_behaves_like
'cross project mentionable'
it
'should notify about issue being moved'
do
expect
(
subject
.
note
).
to
match
/This issue has been moved to/
it
'should notify about noteable being moved to'
do
expect
(
subject
.
note
).
to
match
/Moved to/
end
end
it
'should mention destination project'
do
expect
(
subject
.
note
).
to
include
new_project
.
to_reference
context
'moved from'
do
let
(
:direction
)
{
:from
}
it_behaves_like
'cross project mentionable'
it
'should notify about noteable being moved from'
do
expect
(
subject
.
note
).
to
match
/Moved from/
end
end
it
'should mention author of that change'
do
expect
(
subject
.
note
).
to
include
author
.
to_reference
context
'invalid direction'
do
let
(
:direction
)
{
:invalid
}
it
'should raise error'
do
expect
{
subject
}.
to
raise_error
StandardError
,
/Invalid direction/
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