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
25d90014
Commit
25d90014
authored
Jul 16, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
052648a7
cca71da1
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
51 additions
and
15 deletions
+51
-15
app/controllers/boards/issues_controller.rb
app/controllers/boards/issues_controller.rb
+2
-5
app/services/boards/issues/move_service.rb
app/services/boards/issues/move_service.rb
+32
-7
spec/controllers/boards/issues_controller_spec.rb
spec/controllers/boards/issues_controller_spec.rb
+15
-1
spec/services/boards/issues/move_service_spec.rb
spec/services/boards/issues/move_service_spec.rb
+2
-2
No files found.
app/controllers/boards/issues_controller.rb
View file @
25d90014
...
...
@@ -58,11 +58,8 @@ module Boards
service
=
Boards
::
Issues
::
MoveService
.
new
(
board_parent
,
current_user
,
move_params
(
true
))
issues
=
Issue
.
find
(
params
[
:ids
])
if
service
.
execute_multiple
(
issues
)
head
:ok
else
head
:unprocessable_entity
end
render
json:
service
.
execute_multiple
(
issues
)
end
def
update
...
...
app/services/boards/issues/move_service.rb
View file @
25d90014
...
...
@@ -11,26 +11,51 @@ module Boards
end
def
execute_multiple
(
issues
)
return
false
if
issues
.
empty?
return
execute_multiple_empty_result
if
issues
.
empty?
handled_issues
=
[]
last_inserted_issue_id
=
nil
issues
.
map
do
|
issue
|
count
=
issues
.
each
.
inject
(
0
)
do
|
moved_count
,
issue
|
issue_modification_params
=
issue_params
(
issue
)
next
if
issue_modification_params
.
empty?
next
moved_count
if
issue_modification_params
.
empty?
if
last_inserted_issue_id
issue_modification_params
[
:move_between_ids
]
=
move_be
tween_ids
({
move_after_id:
nil
,
move_before_id:
last_inserted_issue_id
}
)
issue_modification_params
[
:move_between_ids
]
=
move_be
low
(
last_inserted_issue_id
)
end
last_inserted_issue_id
=
issue
.
id
move_single_issue
(
issue
,
issue_modification_params
)
end
.
all?
handled_issue
=
move_single_issue
(
issue
,
issue_modification_params
)
handled_issues
<<
present_issue_entity
(
handled_issue
)
if
handled_issue
handled_issue
&&
handled_issue
.
valid?
?
moved_count
+
1
:
moved_count
end
{
count:
count
,
success:
count
==
issues
.
size
,
issues:
handled_issues
}
end
private
def
present_issue_entity
(
issue
)
::
API
::
Entities
::
Issue
.
represent
(
issue
)
end
def
execute_multiple_empty_result
@execute_multiple_empty_result
||=
{
count:
0
,
success:
false
,
issues:
[]
}
end
def
move_below
(
id
)
move_between_ids
({
move_after_id:
nil
,
move_before_id:
id
})
end
def
move_single_issue
(
issue
,
issue_modification_params
)
return
false
unless
can?
(
current_user
,
:update_issue
,
issue
)
return
unless
can?
(
current_user
,
:update_issue
,
issue
)
update
(
issue
,
issue_modification_params
)
end
...
...
spec/controllers/boards/issues_controller_spec.rb
View file @
25d90014
...
...
@@ -160,7 +160,7 @@ describe Boards::IssuesController do
end
end
describe
'PUT
move_multipl
e'
do
describe
'PUT
bulk_mov
e'
do
let
(
:todo
)
{
create
(
:group_label
,
group:
group
,
name:
'Todo'
)
}
let
(
:development
)
{
create
(
:group_label
,
group:
group
,
name:
'Development'
)
}
let
(
:user
)
{
create
(
:group_member
,
:maintainer
,
user:
create
(
:user
),
group:
group
).
user
}
...
...
@@ -196,6 +196,20 @@ describe Boards::IssuesController do
sign_in
(
signed_in_user
)
end
it
'responds as expected'
do
put
:bulk_move
,
params:
move_issues_params
expect
(
response
).
to
have_gitlab_http_status
(
expected_status
)
if
expected_status
==
200
expect
(
json_response
).
to
include
(
'count'
=>
move_issues_params
[
:ids
].
size
,
'success'
=>
true
)
expect
(
json_response
[
'issues'
].
pluck
(
'id'
)).
to
match_array
(
move_issues_params
[
:ids
])
end
end
it
'moves issues as expected'
do
put
:bulk_move
,
params:
move_issues_params
expect
(
response
).
to
have_gitlab_http_status
(
expected_status
)
...
...
spec/services/boards/issues/move_service_spec.rb
View file @
25d90014
...
...
@@ -68,8 +68,8 @@ describe Boards::Issues::MoveService do
project
.
add_developer
(
user
)
end
it
'returns
false
if list of issues is empty'
do
expect
(
described_class
.
new
(
group
,
user
,
params
).
execute_multiple
([])).
to
eq
(
false
)
it
'returns
the expected result
if list of issues is empty'
do
expect
(
described_class
.
new
(
group
,
user
,
params
).
execute_multiple
([])).
to
eq
(
{
count:
0
,
success:
false
,
issues:
[]
}
)
end
context
'moving multiple issues'
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