Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
47d8fb84
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,发现更多精彩内容 >>
提交
47d8fb84
编写于
7月 19, 2016
作者:
P
Phil Hughes
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Uses the selected values from the controller not the params
Added tests for new merge requests from forked project & owned project
上级
c54d2a03
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
310 addition
and
145 deletion
+310
-145
app/assets/javascripts/labels_select.js.coffee
app/assets/javascripts/labels_select.js.coffee
+0
-2
app/helpers/dropdowns_helper.rb
app/helpers/dropdowns_helper.rb
+1
-5
app/helpers/issuables_helper.rb
app/helpers/issuables_helper.rb
+4
-15
app/helpers/milestones_helper.rb
app/helpers/milestones_helper.rb
+1
-7
app/views/shared/issuable/_filter.html.haml
app/views/shared/issuable/_filter.html.haml
+2
-2
app/views/shared/issuable/_form.html.haml
app/views/shared/issuable/_form.html.haml
+6
-8
app/views/shared/issuable/_label_dropdown.html.haml
app/views/shared/issuable/_label_dropdown.html.haml
+7
-12
app/views/shared/issuable/_milestone_dropdown.html.haml
app/views/shared/issuable/_milestone_dropdown.html.haml
+2
-2
app/views/shared/issuable/_sidebar.html.haml
app/views/shared/issuable/_sidebar.html.haml
+4
-4
spec/features/issues/form_spec.rb
spec/features/issues/form_spec.rb
+62
-28
spec/features/merge_requests/form_spec.rb
spec/features/merge_requests/form_spec.rb
+221
-60
未找到文件。
app/assets/javascripts/labels_select.js.coffee
浏览文件 @
47d8fb84
...
...
@@ -9,8 +9,6 @@ class @LabelsSelect
labelUrl
=
$dropdown
.
data
(
'labels'
)
issueUpdateURL
=
$dropdown
.
data
(
'issueUpdate'
)
selectedLabel
=
$dropdown
.
data
(
'selected'
)
if
selectedLabel
?
and
not
$dropdown
.
hasClass
'js-multiselect'
selectedLabel
=
selectedLabel
.
split
(
','
)
newLabelField
=
$
(
'#new_label_name'
)
newColorField
=
$
(
'#new_label_color'
)
showNo
=
$dropdown
.
data
(
'show-no'
)
...
...
app/helpers/dropdowns_helper.rb
浏览文件 @
47d8fb84
...
...
@@ -40,11 +40,7 @@ module DropdownsHelper
end
def
dropdown_toggle
(
toggle_text
,
data_attr
,
options
=
{})
default_label
=
if
options
[
:data
]
options
[
:data
][
:default_label
]
else
''
end
default_label
=
data_attr
[
:default_label
]
content_tag
(
:button
,
class:
"dropdown-menu-toggle
#{
options
[
:toggle_class
]
if
options
.
has_key?
(
:toggle_class
)
}
"
,
id:
(
options
[
:id
]
if
options
.
has_key?
(
:id
)),
type:
"button"
,
data:
data_attr
)
do
output
=
content_tag
(
:span
,
toggle_text
,
class:
"dropdown-toggle-text
#{
'is-default'
if
toggle_text
==
default_label
}
"
)
output
<<
icon
(
'chevron-down'
)
...
...
app/helpers/issuables_helper.rb
浏览文件 @
47d8fb84
...
...
@@ -7,27 +7,16 @@ module IssuablesHelper
"right-sidebar-
#{
sidebar_gutter_collapsed?
?
'collapsed'
:
'expanded'
}
"
end
def
multi_label_name
(
current_labels
,
param
,
default_label
)
# current_labels may be a string from before
if
current_labels
.
is_a?
(
Array
)
&&
current_labels
.
any?
title
=
current_labels
[
0
].
try
(
:title
)
||
current_labels
[
0
]
def
multi_label_name
(
current_labels
,
selected_param
,
default_label
)
if
current_labels
.
any?
title
=
current_labels
.
first
.
try
(
:title
)
if
current_labels
.
count
>
1
"
#{
title
}
+
#{
current_labels
.
count
-
1
}
more"
else
title
end
elsif
current_labels
.
is_a?
(
String
)
if
current_labels
.
nil?
||
current_labels
.
empty?
default_label
else
current_labels
end
else
if
!
param
.
empty?
param
else
default_label
end
selected_param
.
presence
||
default_label
end
end
...
...
app/helpers/milestones_helper.rb
浏览文件 @
47d8fb84
...
...
@@ -56,13 +56,7 @@ module MilestonesHelper
end
def
milestone_dropdown_selected_text
(
selected
)
project
=
@target_project
||
@project
||
@projects
if
selected
.
is_a?
Integer
Milestone
.
of_projects
(
project
).
where
(
id:
selected
).
first
.
try
(
:title
)
else
Milestone
.
of_projects
(
project
).
where
(
title:
selected
).
first
.
try
(
:title
)
end
selected
.
try
(
:title
)
unless
selected
.
nil?
end
def
milestone_remaining_days
(
milestone
)
...
...
app/views/shared/issuable/_filter.html.haml
浏览文件 @
47d8fb84
...
...
@@ -21,10 +21,10 @@
placeholder:
"Search assignee"
,
data:
{
any_user:
"Any Assignee"
,
first_user:
(
current_user
.
username
if
current_user
),
null_user:
true
,
current_user:
true
,
project_id:
(
@project
.
id
if
@project
),
selected:
params
[
:assignee_id
],
field_name:
"assignee_id"
,
default_label:
"Assignee"
}
})
.filter-item.inline.milestone-filter
=
render
"shared/issuable/milestone_dropdown"
,
selected:
params
[
:milestone_title
]
,
name: :milestone_title
,
show_any:
true
,
show_upcoming:
true
=
render
"shared/issuable/milestone_dropdown"
,
selected:
(
@issuable_finder
.
milestones
.
first
unless
@issuable_finder
.
milestones
.
nil?
)
,
name: :milestone_title
,
show_any:
true
,
show_upcoming:
true
.filter-item.inline.labels-filter
=
render
"shared/issuable/label_dropdown"
,
selected_toggle:
params
[
:label_name
],
data_options:
{
field_name:
"label_name[]"
},
show_create:
controller
.
controller_name
!=
"groups"
=
render
"shared/issuable/label_dropdown"
,
selected
:
@issuable_finder
.
labels
,
use_id:
false
,
selected
_toggle:
params
[
:label_name
],
data_options:
{
field_name:
"label_name[]"
},
show_create:
controller
.
controller_name
!=
"groups"
.pull-right
=
render
'shared/sort_dropdown'
...
...
app/views/shared/issuable/_form.html.haml
浏览文件 @
47d8fb84
-
project
=
@target_project
||
@project
=
form_errors
(
issuable
)
.form-group
...
...
@@ -52,26 +53,23 @@
=
f
.
label
:assignee_id
,
"Assignee"
,
class:
"control-label
#{
"col-lg-4"
if
has_due_date
}
"
.col-sm-10
{
class:
(
"col-lg-8"
if
has_due_date
)
}
.issuable-form-select-holder
-
project
=
@target_project
||
@project
-
if
issuable
.
assignee_id
=
hidden_field_tag
(
"
#{
issuable
.
class
.
model_name
.
param_key
}
[assignee_id]"
,
issuable
.
assignee_id
)
=
f
.
hidden_field
:assignee_id
=
dropdown_tag
(
user_dropdown_label
(
issuable
.
assignee_id
,
"Assignee"
),
options:
{
toggle_class:
"js-dropdown-keep-input js-user-search js-issuable-form-dropdown js-assignee-search"
,
title:
"Filter by assignee"
,
filter:
true
,
dropdown_class:
"dropdown-menu-user dropdown-menu-selectable dropdown-menu-assignee js-filter-submit"
,
placeholder:
"Search assignee"
,
data:
{
first_user:
(
current_user
.
username
if
current_user
),
null_user:
true
,
current_user:
true
,
project_id:
(
project
.
id
if
project
),
selected:
issuable
.
assignee_id
,
field_name:
"
#{
issuable
.
class
.
model_name
.
param_key
}
[assignee_id]"
,
default_label:
"Assignee"
}
})
placeholder:
"Search assignee"
,
data:
{
first_user:
(
current_user
.
username
if
current_user
),
null_user:
true
,
current_user:
true
,
project_id:
(
project
.
try
(
:id
)
),
selected:
issuable
.
assignee_id
,
field_name:
"
#{
issuable
.
class
.
model_name
.
param_key
}
[assignee_id]"
,
default_label:
"Assignee"
}
})
.form-group.issue-milestone
=
f
.
label
:milestone_id
,
"Milestone"
,
class:
"control-label
#{
"col-lg-4"
if
has_due_date
}
"
.col-sm-10
{
class:
(
"col-lg-8"
if
has_due_date
)
}
.issuable-form-select-holder
=
render
"shared/issuable/milestone_dropdown"
,
selected:
issuable
.
milestone
_id
,
name:
"
#{
issuable
.
class
.
model_name
.
param_key
}
[milestone_id]"
,
show_any:
false
,
show_upcoming:
false
,
extra_class:
"js-issuable-form-dropdown js-dropdown-keep-input"
=
render
"shared/issuable/milestone_dropdown"
,
selected:
issuable
.
milestone
,
name:
"
#{
issuable
.
class
.
model_name
.
param_key
}
[milestone_id]"
,
show_any:
false
,
show_upcoming:
false
,
extra_class:
"js-issuable-form-dropdown js-dropdown-keep-input"
.form-group
-
has_labels
=
issuable
.
project
.
labels
.
any?
-
selected_labels
=
issuable
.
label_ids
.
any?
?
issuable
.
label_ids
:
nil
-
label_dropdown_toggle
=
issuable
.
labels
.
map
{
|
label
|
label
.
title
}
-
field_name
=
"
#{
issuable
.
class
.
model_name
.
param_key
}
[label_ids][]"
=
f
.
label
:label_ids
,
"Labels"
,
class:
"control-label
#{
"col-lg-4"
if
has_due_date
}
"
=
hidden_field_tag
field_name
,
""
=
f
.
hidden_field
:label_ids
,
multiple:
true
,
value:
''
.col-sm-10
{
class:
"#{"
col
-
lg
-
8
" if has_due_date} #{'issuable-form-padding-top' if !has_labels}"
}
.issuable-form-select-holder
=
render
"shared/issuable/label_dropdown"
,
classes:
[
"js-issuable-form-dropdown"
],
selected:
selected_labels
,
selected_toggle:
label_dropdown_toggle
,
data_options:
{
field_name:
field_name
,
show_any:
"false"
}
=
render
"shared/issuable/label_dropdown"
,
classes:
[
"js-issuable-form-dropdown"
],
selected:
issuable
.
labels
,
selected_toggle:
label_dropdown_toggle
,
data_options:
{
field_name:
"
#{
issuable
.
class
.
model_name
.
param_key
}
[label_ids][]"
,
show_any:
false
}
-
if
has_due_date
.col-lg-6
.form-group
...
...
app/views/shared/issuable/_label_dropdown.html.haml
浏览文件 @
47d8fb84
...
...
@@ -3,33 +3,28 @@
-
extra_options
=
local_assigns
.
fetch
(
:extra_options
,
true
)
-
filter_submit
=
local_assigns
.
fetch
(
:filter_submit
,
true
)
-
show_footer
=
local_assigns
.
fetch
(
:show_footer
,
true
)
-
use_id
=
local_assigns
.
fetch
(
:use_id
,
true
)
-
data_options
=
local_assigns
.
fetch
(
:data_options
,
{})
-
classes
=
local_assigns
.
fetch
(
:classes
,
[])
-
selected
=
local_assigns
.
fetch
(
:selected
,
nil
)
-
selected_toggle
=
local_assigns
.
fetch
(
:selected_toggle
,
nil
)
-
dropdown_data
=
{
toggle:
'dropdown'
,
field_name:
"label_name[]"
,
show_no:
"true"
,
show_any:
"true"
,
selected:
selected
,
project_id:
project
.
try
(
:id
),
labels:
labels_filter_path
,
default_label:
"Labels"
}
-
dropdown_data
=
{
toggle:
'dropdown'
,
field_name:
"label_name[]"
,
show_no:
"true"
,
show_any:
"true"
,
project_id:
project
.
try
(
:id
),
labels:
labels_filter_path
,
default_label:
"Labels"
}
-
dropdown_data
.
merge!
(
data_options
)
-
classes
<<
'js-extra-options'
if
extra_options
-
classes
<<
'js-filter-submit'
if
filter_submit
-
if
selected
.
present?
-
labelQuery
=
{
id:
selected
}
-
useId
=
true
-
if
selected_toggle
.
present?
-
labelQuery
=
{
title:
selected_toggle
}
-
if
labelQuery
-
selected
=
selected_labels
(
project
,
labelQuery
)
-
if
selected
-
selected
.
each
do
|
label
|
-
id
=
label
.
try
(
:id
)
||
label
-
title
=
label
.
try
(
:title
)
||
label
=
hidden_field_tag
data_options
[
:field_name
],
use
I
d
?
id
:
title
,
id:
nil
=
hidden_field_tag
data_options
[
:field_name
],
use
_i
d
?
id
:
title
,
id:
nil
.dropdown
%button
.dropdown-menu-toggle.js-label-select.js-multiselect
{
class:
classes
.
join
(
' '
),
type:
"button"
,
data:
dropdown_data
}
%span
.dropdown-toggle-text
{
class:
(
"is-default"
if
selected
.
nil?
||
selected
.
to_a
.
size
==
0
)
}
=
h
(
multi_label_name
(
selected
.
to_a
,
h
(
selected_toggle
.
to_a
[
0
])
,
"Labels"
))
%span
.dropdown-toggle-text
{
class:
(
"is-default"
if
selected
.
nil?
||
selected
.
empty?
)
}
=
h
(
multi_label_name
(
selected
,
selected_toggle
.
to_a
.
first
,
"Labels"
))
=
icon
(
'chevron-down'
)
.dropdown-menu.dropdown-select.dropdown-menu-paging.dropdown-menu-labels.dropdown-menu-selectable
=
render
partial:
"shared/issuable/label_page_default"
,
locals:
{
title:
"Filter by label"
,
show_footer:
show_footer
,
show_create:
show_create
}
-
if
show_create
and
project
and
can?
(
current_user
,
:admin_label
,
project
)
-
if
show_create
&&
project
&&
can?
(
current_user
,
:admin_label
,
project
)
=
render
partial:
"shared/issuable/label_page_create"
=
dropdown_loading
app/views/shared/issuable/_milestone_dropdown.html.haml
浏览文件 @
47d8fb84
...
...
@@ -2,9 +2,9 @@
-
extra_class
=
extra_class
||
''
-
selected_text
=
milestone_dropdown_selected_text
(
selected
)
-
if
selected
.
present?
=
hidden_field_tag
(
name
,
selected
)
=
hidden_field_tag
(
name
,
selected
.
id
)
=
dropdown_tag
(
milestone_dropdown_label
(
selected_text
),
options:
{
title:
"Filter by milestone"
,
toggle_class:
"js-milestone-select js-filter-submit
#{
extra_class
}
"
,
filter:
true
,
dropdown_class:
"dropdown-menu-selectable"
,
placeholder:
"Search milestones"
,
footer_content:
project
.
present?
,
data:
{
show_no:
true
,
show_any:
show_any
,
show_upcoming:
show_upcoming
,
field_name:
name
,
selected:
selected
,
project_id:
project
.
try
(
:id
),
milestones:
milestones_filter_dropdown_path
,
default_label:
"Milestone"
}
})
do
placeholder:
"Search milestones"
,
footer_content:
project
.
present?
,
data:
{
show_no:
true
,
show_any:
show_any
,
show_upcoming:
show_upcoming
,
field_name:
name
,
selected:
selected
.
try
(
:title
)
,
project_id:
project
.
try
(
:id
),
milestones:
milestones_filter_dropdown_path
,
default_label:
"Milestone"
}
})
do
-
if
project
&&
project
.
respond_to?
(
:namespace
)
%ul
.dropdown-footer-list
-
if
can?
current_user
,
:admin_milestone
,
project
...
...
app/views/shared/issuable/_sidebar.html.haml
浏览文件 @
47d8fb84
...
...
@@ -125,13 +125,13 @@
-
else
%span
.no-value
None
.selectbox.hide-collapsed
-
selected_labels
=
params
[
"
#{
issuable
.
to_ability_name
}
[label_names]"
].
to_a
-
issuable
.
labels
_array
.
each
do
|
label
|
-
selected_labels
=
issuable
.
labels
-
issuable
.
labels
.
each
do
|
label
|
=
hidden_field_tag
"
#{
issuable
.
to_ability_name
}
[label_names][]"
,
label
.
id
,
id:
nil
.dropdown
%button
.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown
{
type:
"button"
,
data:
{
toggle:
"dropdown"
,
default_label:
"Labels"
,
field_name:
"#{issuable.to_ability_name}[label_names][]"
,
ability_name:
issuable
.
to_ability_name
,
show_no:
"true"
,
show_any:
"true"
,
project_id:
(
@project
.
id
if
@project
),
issue_update:
issuable_json_path
(
issuable
),
labels:
(
namespace_project_labels_path
(
@project
.
namespace
,
@project
,
:json
)
if
@project
)}}
%span
.dropdown-toggle-text
{
class:
(
"is-default"
if
issuable
.
labels
_array
.
empty?
)}
=
multi_label_name
(
issuable
.
labels_array
,
h
(
selected_labels
[
0
]),
"Labels"
)
%span
.dropdown-toggle-text
{
class:
(
"is-default"
if
issuable
.
labels
.
empty?
)}
=
h
(
multi_label_name
(
selected_labels
,
selected_labels
.
first
,
"Labels"
)
)
=
icon
(
'chevron-down'
)
.dropdown-menu.dropdown-select.dropdown-menu-paging.dropdown-menu-labels.dropdown-menu-selectable
=
render
partial:
"shared/issuable/label_page_default"
...
...
spec/features/issues/form_spec.rb
浏览文件 @
47d8fb84
...
...
@@ -23,34 +23,49 @@ describe 'New/edit issue', feature: true, js: true do
fill_in
'issue_description'
,
with:
'title'
click_button
'Assignee'
click_link
user
.
name
page
.
find
'.js-assignee-search'
do
page
.
within
'.dropdown-menu-user'
do
click_link
user
.
name
end
expect
(
find
(
'input[name="issue[assignee_id]"]'
,
visible:
false
).
value
).
to
match
(
user
.
id
.
to_s
)
page
.
within
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Milestone'
click_link
milestone
.
title
page
.
find
'.js-milestone-select'
do
page
.
within
'.issue-milestone'
do
click_link
milestone
.
title
end
expect
(
find
(
'input[name="issue[milestone_id]"]'
,
visible:
false
).
value
).
to
match
(
milestone
.
id
.
to_s
)
page
.
within
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
end
click_button
'Labels'
click_link
label
.
title
click_link
label2
.
title
page
.
find
'.js-label-select'
do
expect
(
page
).
to
have_content
label2
.
title
page
.
within
'.dropdown-menu-labels'
do
click_link
label
.
title
click_link
label2
.
title
end
page
.
within
'.js-label-select'
do
expect
(
page
).
to
have_content
label
.
title
end
expect
(
page
.
all
(
'input[name="issue[label_ids][]"]'
,
visible:
false
)[
1
].
value
).
to
match
(
label
.
id
.
to_s
)
expect
(
page
.
all
(
'input[name="issue[label_ids][]"]'
,
visible:
false
)[
2
].
value
).
to
match
(
label2
.
id
.
to_s
)
click_button
'Submit issue'
page
.
find
'.issuable-sidebar'
do
expect
(
page
).
to
have_content
user
.
name
expect
(
page
).
to
have_content
milestone
.
title
expect
(
page
).
to
have_content
label
.
title
expect
(
page
).
to
have_content
label2
.
title
page
.
within
'.issuable-sidebar'
do
page
.
within
'.assignee'
do
expect
(
page
).
to
have_content
user
.
name
end
page
.
within
'.milestone'
do
expect
(
page
).
to
have_content
milestone
.
title
end
page
.
within
'.labels'
do
expect
(
page
).
to
have_content
label
.
title
expect
(
page
).
to
have_content
label2
.
title
end
end
end
end
...
...
@@ -61,24 +76,43 @@ describe 'New/edit issue', feature: true, js: true do
end
it
'should allow user to update issue'
do
expect
(
page
).
to
have_content
user
.
name
expect
(
page
).
to
have_content
milestone
.
title
expect
(
find
(
'input[name="issue[assignee_id]"]'
,
visible:
false
).
value
).
to
match
(
user
.
id
.
to_s
)
expect
(
find
(
'input[name="issue[milestone_id]"]'
,
visible:
false
).
value
).
to
match
(
milestone
.
id
.
to_s
)
click_button
'Labels'
click_link
label
.
titl
e
click_link
label2
.
title
page
.
within
'.js-user-search'
do
expect
(
page
).
to
have_content
user
.
nam
e
end
page
.
find
'.js-label
-select'
do
expect
(
page
).
to
have_content
label2
.
title
page
.
within
'.js-milestone
-select'
do
expect
(
page
).
to
have_content
milestone
.
title
end
click_button
'Labels'
page
.
within
'.dropdown-menu-labels'
do
click_link
label
.
title
click_link
label2
.
title
end
page
.
within
'.js-label-select'
do
expect
(
page
).
to
have_content
label
.
title
end
expect
(
page
.
all
(
'input[name="issue[label_ids][]"]'
,
visible:
false
)[
1
].
value
).
to
match
(
label
.
id
.
to_s
)
expect
(
page
.
all
(
'input[name="issue[label_ids][]"]'
,
visible:
false
)[
2
].
value
).
to
match
(
label2
.
id
.
to_s
)
click_button
'Save changes'
page
.
find
'.issuable-sidebar'
do
expect
(
page
).
to
have_content
user
.
name
expect
(
page
).
to
have_content
milestone
.
title
expect
(
page
).
to
have_content
label
.
title
expect
(
page
).
to
have_content
label2
.
title
page
.
within
'.issuable-sidebar'
do
page
.
within
'.assignee'
do
expect
(
page
).
to
have_content
user
.
name
end
page
.
within
'.milestone'
do
expect
(
page
).
to
have_content
milestone
.
title
end
page
.
within
'.labels'
do
expect
(
page
).
to
have_content
label
.
title
expect
(
page
).
to
have_content
label2
.
title
end
end
end
end
...
...
spec/features/merge_requests/form_spec.rb
浏览文件 @
47d8fb84
...
...
@@ -14,48 +14,129 @@ describe 'New/edit merge request', feature: true, js: true do
context
'owned projects'
do
before
do
merge_request
=
create
(
:merge_request
,
source_project:
project
,
target_project:
project
,
source_branch:
'fix'
,
target_branch:
'master'
)
login_as
(
user
)
visit
edit_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
end
context
'new merge request'
do
before
do
visit
new_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request:
{
source_project_id:
project
.
id
,
target_project_id:
project
.
id
,
source_branch:
'fix'
,
target_branch:
'master'
})
end
it
'should update merge request'
do
click_button
'Assignee'
click_link
user
.
name
it
'should create new merge request'
do
click_button
'Assignee'
page
.
within
'.dropdown-menu-user'
do
click_link
user
.
name
end
expect
(
find
(
'input[name="merge_request[assignee_id]"]'
,
visible:
false
).
value
).
to
match
(
user
.
id
.
to_s
)
page
.
within
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
page
.
find
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Milestone'
page
.
within
'.issue-milestone'
do
click_link
milestone
.
title
end
expect
(
find
(
'input[name="merge_request[milestone_id]"]'
,
visible:
false
).
value
).
to
match
(
milestone
.
id
.
to_s
)
page
.
within
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
end
click_button
'Labels'
page
.
within
'.dropdown-menu-labels'
do
click_link
label
.
title
click_link
label2
.
title
end
page
.
within
'.js-label-select'
do
expect
(
page
).
to
have_content
label
.
title
end
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
1
].
value
).
to
match
(
label
.
id
.
to_s
)
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
2
].
value
).
to
match
(
label2
.
id
.
to_s
)
click_button
'Submit merge request'
page
.
within
'.issuable-sidebar'
do
page
.
within
'.assignee'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Milestone'
click_link
milestone
.
title
page
.
within
'.milestone'
do
expect
(
page
).
to
have_content
milestone
.
title
end
page
.
find
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
page
.
within
'.labels'
do
expect
(
page
).
to
have_content
label
.
title
expect
(
page
).
to
have_content
label2
.
title
end
end
end
end
click_button
'Labels'
click_link
label
.
title
click_link
label2
.
title
context
'edit merge request'
do
before
do
merge_request
=
create
(
:merge_request
,
source_project:
project
,
target_project:
project
,
source_branch:
'fix'
,
target_branch:
'master'
)
page
.
find
'.js-label-select'
do
expect
(
page
).
to
have_content
label2
.
title
visit
edit_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
end
click_button
'Save changes'
it
'should update merge request'
do
click_button
'Assignee'
page
.
within
'.dropdown-menu-user'
do
click_link
user
.
name
end
expect
(
find
(
'input[name="merge_request[assignee_id]"]'
,
visible:
false
).
value
).
to
match
(
user
.
id
.
to_s
)
page
.
within
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Milestone'
page
.
within
'.issue-milestone'
do
click_link
milestone
.
title
end
expect
(
find
(
'input[name="merge_request[milestone_id]"]'
,
visible:
false
).
value
).
to
match
(
milestone
.
id
.
to_s
)
page
.
within
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
end
click_button
'Labels'
page
.
within
'.dropdown-menu-labels'
do
click_link
label
.
title
click_link
label2
.
title
end
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
1
].
value
).
to
match
(
label
.
id
.
to_s
)
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
2
].
value
).
to
match
(
label2
.
id
.
to_s
)
page
.
within
'.js-label-select'
do
expect
(
page
).
to
have_content
label
.
title
end
click_button
'Save changes'
page
.
within
'.issuable-sidebar'
do
page
.
within
'.assignee'
do
expect
(
page
).
to
have_content
user
.
name
end
page
.
within
'.milestone'
do
expect
(
page
).
to
have_content
milestone
.
title
end
page
.
find
'.issuable-sidebar
'
do
expect
(
page
).
to
have_content
user
.
nam
e
expect
(
page
).
to
have_content
milestone
.
title
expect
(
page
).
to
have_content
label
.
title
e
xpect
(
page
).
to
have_content
label2
.
title
page
.
within
'.labels
'
do
expect
(
page
).
to
have_content
label
.
titl
e
expect
(
page
).
to
have_content
label2
.
title
end
e
nd
end
end
end
...
...
@@ -63,49 +144,129 @@ describe 'New/edit merge request', feature: true, js: true do
context
'forked project'
do
before
do
fork_project
.
team
<<
[
user
,
:master
]
login_as
(
user
)
end
merge_request
=
create
(
:merge_request
,
source_project:
fork_project
,
target_project:
project
,
source_branch:
'fix'
,
target_branch:
'master'
)
context
'new merge request'
do
before
do
visit
new_namespace_project_merge_request_path
(
fork_project
.
namespace
,
fork_project
,
merge_request:
{
source_project_id:
fork_project
.
id
,
target_project_id:
project
.
id
,
source_branch:
'fix'
,
target_branch:
'master'
})
end
login_as
(
user
)
it
'should create new merge request'
do
click_button
'Assignee'
page
.
within
'.dropdown-menu-user'
do
click_link
user
.
name
end
expect
(
find
(
'input[name="merge_request[assignee_id]"]'
,
visible:
false
).
value
).
to
match
(
user
.
id
.
to_s
)
page
.
within
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
visit
edit_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
end
click_button
'Milestone'
page
.
within
'.issue-milestone'
do
click_link
milestone
.
title
end
expect
(
find
(
'input[name="merge_request[milestone_id]"]'
,
visible:
false
).
value
).
to
match
(
milestone
.
id
.
to_s
)
page
.
within
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
end
it
'should update merge request'
do
click_button
'Assignee'
click_link
user
.
name
click_button
'Labels'
page
.
within
'.dropdown-menu-labels'
do
click_link
label
.
title
click_link
label2
.
title
end
page
.
within
'.js-label-select'
do
expect
(
page
).
to
have_content
label
.
title
end
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
1
].
value
).
to
match
(
label
.
id
.
to_s
)
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
2
].
value
).
to
match
(
label2
.
id
.
to_s
)
page
.
find
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Submit merge request'
page
.
within
'.issuable-sidebar'
do
page
.
within
'.assignee'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Milestone'
click_link
milestone
.
title
page
.
within
'.milestone'
do
expect
(
page
).
to
have_content
milestone
.
title
end
page
.
find
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
page
.
within
'.labels'
do
expect
(
page
).
to
have_content
label
.
title
expect
(
page
).
to
have_content
label2
.
title
end
end
end
end
click_button
'Labels'
click_link
label
.
title
click_link
label2
.
title
context
'edit merge request'
do
before
do
merge_request
=
create
(
:merge_request
,
source_project:
fork_project
,
target_project:
project
,
source_branch:
'fix'
,
target_branch:
'master'
)
page
.
find
'.js-label-select'
do
expect
(
page
).
to
have_content
label2
.
title
visit
edit_namespace_project_merge_request_path
(
project
.
namespace
,
project
,
merge_request
)
end
click_button
'Save changes'
it
'should update merge request'
do
click_button
'Assignee'
page
.
within
'.dropdown-menu-user'
do
click_link
user
.
name
end
expect
(
find
(
'input[name="merge_request[assignee_id]"]'
,
visible:
false
).
value
).
to
match
(
user
.
id
.
to_s
)
page
.
within
'.js-assignee-search'
do
expect
(
page
).
to
have_content
user
.
name
end
click_button
'Milestone'
page
.
within
'.issue-milestone'
do
click_link
milestone
.
title
end
expect
(
find
(
'input[name="merge_request[milestone_id]"]'
,
visible:
false
).
value
).
to
match
(
milestone
.
id
.
to_s
)
page
.
within
'.js-milestone-select'
do
expect
(
page
).
to
have_content
milestone
.
title
end
click_button
'Labels'
page
.
within
'.dropdown-menu-labels'
do
click_link
label
.
title
click_link
label2
.
title
end
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
1
].
value
).
to
match
(
label
.
id
.
to_s
)
expect
(
page
.
all
(
'input[name="merge_request[label_ids][]"]'
,
visible:
false
)[
2
].
value
).
to
match
(
label2
.
id
.
to_s
)
page
.
within
'.js-label-select'
do
expect
(
page
).
to
have_content
label
.
title
end
click_button
'Save changes'
page
.
within
'.issuable-sidebar'
do
page
.
within
'.assignee'
do
expect
(
page
).
to
have_content
user
.
name
end
page
.
within
'.milestone'
do
expect
(
page
).
to
have_content
milestone
.
title
end
page
.
find
'.issuable-sidebar
'
do
expect
(
page
).
to
have_content
user
.
nam
e
expect
(
page
).
to
have_content
milestone
.
title
expect
(
page
).
to
have_content
label
.
title
e
xpect
(
page
).
to
have_content
label2
.
title
page
.
within
'.labels
'
do
expect
(
page
).
to
have_content
label
.
titl
e
expect
(
page
).
to
have_content
label2
.
title
end
e
nd
end
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录