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
c8e7d1ed
Commit
c8e7d1ed
authored
Feb 17, 2016
by
Grzegorz Bizon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add issue move implementation to controller
parent
11f817b3
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
59 additions
and
15 deletions
+59
-15
issues_controller.rb
app/controllers/projects/issues_controller.rb
+5
-0
move_service.rb
app/services/issues/move_service.rb
+25
-4
move_service_spec.rb
spec/services/issues/move_service_spec.rb
+28
-10
system_note_service_spec.rb
spec/services/system_note_service_spec.rb
+1
-1
No files found.
app/controllers/projects/issues_controller.rb
View file @
c8e7d1ed
...
...
@@ -88,6 +88,11 @@ class Projects::IssuesController < Projects::ApplicationController
def
update
@issue
=
Issues
::
UpdateService
.
new
(
project
,
current_user
,
issue_params
).
execute
(
issue
)
move_service
=
Issues
::
MoveService
.
new
(
project
,
current_user
,
params
.
require
(
:issue
).
permit!
,
@issue
)
if
move_service
.
move?
@issue
=
move_service
.
execute
end
respond_to
do
|
format
|
format
.
js
...
...
app/services/issues/move_service.rb
View file @
c8e7d1ed
module
Issues
class
MoveService
<
Issues
::
BaseService
def
execute
(
issue_old
,
project_new
)
@issue_old
=
issue_old
@issue_new
=
issue_old
.
dup
@project_new
=
project_new
def
initialize
(
project
,
current_user
,
params
,
issue
)
super
(
project
,
current_user
,
params
)
@issue_old
=
issue
@issue_new
=
@issue_old
.
dup
@project_old
=
@project
if
params
[
'move_to_project_id'
]
@project_new
=
Project
.
find
(
params
[
'move_to_project_id'
])
end
end
def
execute
return
unless
move?
open_new_issue
rewrite_notes
close_old_issue
...
...
@@ -14,8 +23,20 @@ module Issues
@issue_new
end
def
move?
return
false
unless
@project_new
return
false
unless
@issue_new
return
false
unless
can_move?
true
end
private
def
can_move?
true
end
def
open_new_issue
@issue_new
.
project
=
@project_new
@issue_new
.
save!
...
...
spec/services/issues/move_service_spec.rb
View file @
c8e7d1ed
...
...
@@ -5,26 +5,44 @@ describe Issues::MoveService, services: true do
let
(
:issue
)
{
create
(
:issue
,
title:
'Some issue'
,
description:
'Some issue description'
)
}
let
(
:current_project
)
{
issue
.
project
}
let
(
:new_project
)
{
create
(
:project
)
}
let
(
:move_params
)
{
{
'move_to_project_id'
=>
new_project
.
id
}
}
let
(
:move_service
)
{
described_class
.
new
(
current_project
,
user
,
move_params
,
issue
)
}
before
do
current_project
.
team
<<
[
user
,
:master
]
end
describe
'#execute'
do
let!
(
:new_issue
)
do
described_class
.
new
(
current_project
,
user
).
execute
(
issue
,
new_project
)
context
'issue movable'
do
describe
'#move?'
do
subject
{
move_service
.
move?
}
it
{
is_expected
.
to
be_truthy
}
end
it
'should create a new issue in a new project'
do
expect
(
new_issue
.
project
).
to
eq
new_project
end
describe
'#execute'
do
let!
(
:new_issue
)
{
move_service
.
execute
}
it
'should create a new issue in a new project'
do
expect
(
new_issue
.
project
).
to
eq
new_project
end
it
'should add system note to old issue'
do
expect
(
issue
.
notes
.
last
.
note
).
to
match
/^Moved to/
end
it
'should add system note to old issue'
do
expect
(
issue
.
notes
.
last
.
note
).
to
match
/^Moved to/
it
'should add system note to new issue'
do
expect
(
new_issue
.
notes
.
last
.
note
).
to
match
/^Moved from/
end
end
end
context
'issue not movable'
do
context
'move not requested'
do
let
(
:move_params
)
{
{}
}
it
'should add system note to new issue'
do
expect
(
new_issue
.
notes
.
last
.
note
).
to
match
/^Moved from/
describe
'#move?'
do
subject
{
move_service
.
move?
}
it
{
is_expected
.
to
be_falsey
}
end
end
end
end
spec/services/system_note_service_spec.rb
View file @
c8e7d1ed
...
...
@@ -486,7 +486,7 @@ describe SystemNoteService, services: true do
end
context
'invalid direction'
do
let
(
:direction
)
{
:invalid
}
let
(
:direction
)
{
:invalid
}
it
'should raise error'
do
expect
{
subject
}.
to
raise_error
StandardError
,
/Invalid direction/
...
...
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