Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
0d000d35
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
0d000d35
编写于
1月 16, 2017
作者:
F
Felipe Artur
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix issuable stale object error handler for js when updating tasklists
上级
61e2a3eb
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
111 addition
and
19 deletion
+111
-19
app/assets/javascripts/task_list.js
app/assets/javascripts/task_list.js
+12
-0
app/controllers/concerns/issuable_actions.rb
app/controllers/concerns/issuable_actions.rb
+17
-0
app/controllers/projects/issues_controller.rb
app/controllers/projects/issues_controller.rb
+1
-2
app/controllers/projects/merge_requests_controller.rb
app/controllers/projects/merge_requests_controller.rb
+11
-12
changelogs/unreleased/issue_24815.yml
changelogs/unreleased/issue_24815.yml
+4
-0
spec/controllers/projects/issues_controller_spec.rb
spec/controllers/projects/issues_controller_spec.rb
+7
-5
spec/controllers/projects/merge_requests_controller_spec.rb
spec/controllers/projects/merge_requests_controller_spec.rb
+2
-0
spec/support/update_invalid_issuable.rb
spec/support/update_invalid_issuable.rb
+57
-0
未找到文件。
app/assets/javascripts/task_list.js
浏览文件 @
0d000d35
/* global Flash */
require
(
'
vendor/task_list
'
);
class
TaskList
{
...
...
@@ -6,6 +7,16 @@ class TaskList {
this
.
dataType
=
options
.
dataType
;
this
.
fieldName
=
options
.
fieldName
;
this
.
onSuccess
=
options
.
onSuccess
||
(()
=>
{});
this
.
onError
=
function
showFlash
(
response
)
{
let
errorMessages
=
''
;
if
(
response
.
responseJSON
)
{
errorMessages
=
response
.
responseJSON
.
errors
.
join
(
'
'
);
}
return
new
Flash
(
errorMessages
||
'
Update failed
'
,
'
alert
'
);
};
this
.
init
();
}
...
...
@@ -32,6 +43,7 @@ class TaskList {
url
:
$target
.
data
(
'
update-url
'
)
||
$
(
'
form.js-issuable-update
'
).
attr
(
'
action
'
),
data
:
patchData
,
success
:
this
.
onSuccess
,
error
:
this
.
onError
,
});
}
}
...
...
app/controllers/concerns/issuable_actions.rb
浏览文件 @
0d000d35
...
...
@@ -26,6 +26,23 @@ module IssuableActions
private
def
render_conflict_response
respond_to
do
|
format
|
format
.
html
do
@conflict
=
true
render
:edit
end
format
.
json
do
render
json:
{
errors:
[
"Someone edited this
#{
issuable
.
human_class_name
}
at the same time you did. Please refresh your browser and make sure your changes will not unintentionally remove theirs."
]
},
status:
409
end
end
end
def
labels
@labels
||=
LabelsFinder
.
new
(
current_user
,
project_id:
@project
.
id
).
execute
end
...
...
app/controllers/projects/issues_controller.rb
浏览文件 @
0d000d35
...
...
@@ -134,8 +134,7 @@ class Projects::IssuesController < Projects::ApplicationController
end
rescue
ActiveRecord
::
StaleObjectError
@conflict
=
true
render
:edit
render_conflict_response
end
def
referenced_merge_requests
...
...
app/controllers/projects/merge_requests_controller.rb
浏览文件 @
0d000d35
...
...
@@ -296,22 +296,21 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def
update
@merge_request
=
MergeRequests
::
UpdateService
.
new
(
project
,
current_user
,
merge_request_params
).
execute
(
@merge_request
)
if
@merge_request
.
valid?
respond_to
do
|
format
|
format
.
html
do
redirect_to
([
@merge_request
.
target_project
.
namespace
.
becomes
(
Namespace
),
@merge_request
.
target_project
,
@merge_request
])
end
format
.
json
do
render
json:
@merge_request
.
to_json
(
include:
{
milestone:
{},
assignee:
{
methods: :avatar_url
},
labels:
{
methods: :text_color
}
},
methods:
[
:task_status
,
:task_status_short
])
respond_to
do
|
format
|
format
.
html
do
if
@merge_request
.
valid?
redirect_to
([
@merge_request
.
target_project
.
namespace
.
becomes
(
Namespace
),
@merge_request
.
target_project
,
@merge_request
])
else
render
:edit
end
end
else
render
"edit"
format
.
json
do
render
json:
@merge_request
.
to_json
(
include:
{
milestone:
{},
assignee:
{
methods: :avatar_url
},
labels:
{
methods: :text_color
}
},
methods:
[
:task_status
,
:task_status_short
])
end
end
rescue
ActiveRecord
::
StaleObjectError
@conflict
=
true
render
:edit
render_conflict_response
end
def
remove_wip
...
...
changelogs/unreleased/issue_24815.yml
0 → 100644
浏览文件 @
0d000d35
---
title
:
Fix issuable stale object error handler for js when updating tasklists
merge_request
:
author
:
spec/controllers/projects/issues_controller_spec.rb
浏览文件 @
0d000d35
...
...
@@ -125,14 +125,16 @@ describe Projects::IssuesController do
end
describe
'PUT #update'
do
before
do
sign_in
(
user
)
project
.
team
<<
[
user
,
:developer
]
end
it_behaves_like
'update invalid issuable'
,
Issue
context
'when moving issue to another private project'
do
let
(
:another_project
)
{
create
(
:empty_project
,
:private
)
}
before
do
sign_in
(
user
)
project
.
team
<<
[
user
,
:developer
]
end
context
'when user has access to move issue'
do
before
{
another_project
.
team
<<
[
user
,
:reporter
]
}
...
...
spec/controllers/projects/merge_requests_controller_spec.rb
浏览文件 @
0d000d35
...
...
@@ -254,6 +254,8 @@ describe Projects::MergeRequestsController do
expect
{
merge_request
.
reload
.
target_branch
}.
not_to
change
{
merge_request
.
target_branch
}
end
it_behaves_like
'update invalid issuable'
,
MergeRequest
end
end
...
...
spec/support/update_invalid_issuable.rb
0 → 100644
浏览文件 @
0d000d35
shared_examples
'update invalid issuable'
do
|
klass
|
let
(
:params
)
do
{
namespace_id:
project
.
namespace
.
path
,
project_id:
project
.
path
,
id:
issuable
.
iid
}
end
let
(
:issuable
)
do
klass
==
Issue
?
issue
:
merge_request
end
before
do
if
klass
==
Issue
params
.
merge!
(
issue:
{
title:
"any"
})
else
params
.
merge!
(
merge_request:
{
title:
"any"
})
end
end
context
'when updating causes conflicts'
do
before
do
allow_any_instance_of
(
issuable
.
class
).
to
receive
(
:save
).
and_raise
(
ActiveRecord
::
StaleObjectError
.
new
(
issuable
,
:save
))
end
it
'renders edit when format is html'
do
put
:update
,
params
expect
(
response
).
to
render_template
(
:edit
)
expect
(
assigns
[
:conflict
]).
to
be_truthy
end
it
'renders json error message when format is json'
do
params
.
merge!
(
format:
"json"
)
put
:update
,
params
expect
(
response
.
status
).
to
eq
(
409
)
expect
(
JSON
.
parse
(
response
.
body
)).
to
have_key
(
'errors'
)
end
end
context
'when updating an invalid issuable'
do
before
do
key
=
klass
==
Issue
?
:issue
:
:merge_request
params
[
key
][
:title
]
=
""
end
it
'renders edit when merge request is invalid'
do
put
:update
,
params
expect
(
response
).
to
render_template
(
:edit
)
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录