Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
55f76ce8
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 搜索 >>
提交
55f76ce8
编写于
3月 05, 2019
作者:
W
Winnie Hellmann
提交者:
Phil Hughes
3月 05, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert "Merge branch 'winh-dequarantine-labels-autocomplete' into 'master'"
This reverts merge request !25542
上级
83cb7482
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
85 addition
and
134 deletion
+85
-134
jest.config.js
jest.config.js
+0
-1
spec/features/issues/gfm_autocomplete_spec.rb
spec/features/issues/gfm_autocomplete_spec.rb
+83
-1
spec/frontend/gfm_auto_complete_spec.js
spec/frontend/gfm_auto_complete_spec.js
+2
-92
spec/javascripts/fixtures/autocomplete_sources.rb
spec/javascripts/fixtures/autocomplete_sources.rb
+0
-40
未找到文件。
jest.config.js
浏览文件 @
55f76ce8
...
...
@@ -18,7 +18,6 @@ module.exports = {
moduleNameMapper
:
{
'
^~(.*)$
'
:
'
<rootDir>/app/assets/javascripts$1
'
,
'
^ee(.*)$
'
:
'
<rootDir>/ee/app/assets/javascripts$1
'
,
'
^fixtures(.*)$
'
:
'
<rootDir>/spec/javascripts/fixtures$1
'
,
'
^helpers(.*)$
'
:
'
<rootDir>/spec/frontend/helpers$1
'
,
'
^vendor(.*)$
'
:
'
<rootDir>/vendor/assets/javascripts$1
'
,
'
\\
.(jpg|jpeg|png|svg)$
'
:
'
<rootDir>/spec/frontend/__mocks__/file_mock.js
'
,
...
...
spec/features/issues/gfm_autocomplete_spec.rb
浏览文件 @
55f76ce8
...
...
@@ -278,7 +278,12 @@ describe 'GFM autocomplete', :js do
end
end
context
'labels'
do
# This context has just one example in each contexts in order to improve spec performance.
context
'labels'
,
:quarantine
do
let!
(
:backend
)
{
create
(
:label
,
project:
project
,
title:
'backend'
)
}
let!
(
:bug
)
{
create
(
:label
,
project:
project
,
title:
'bug'
)
}
let!
(
:feature_proposal
)
{
create
(
:label
,
project:
project
,
title:
'feature proposal'
)
}
it
'opens autocomplete menu for Labels when field starts with text with item escaping HTML characters'
do
create
(
:label
,
project:
project
,
title:
label_xss_title
)
...
...
@@ -293,6 +298,83 @@ describe 'GFM autocomplete', :js do
expect
(
find
(
'.atwho-view-ul'
).
text
).
to
have_content
(
'alert label'
)
end
end
context
'when no labels are assigned'
do
it
'shows labels'
do
note
=
find
(
'#note-body'
)
# It should show all the labels on "~".
type
(
note
,
'~'
)
wait_for_requests
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show all the labels on "/label ~".
type
(
note
,
'/label ~'
)
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show all the labels on "/relabel ~".
type
(
note
,
'/relabel ~'
)
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show no labels on "/unlabel ~".
type
(
note
,
'/unlabel ~'
)
expect_labels
(
not_shown:
[
backend
,
bug
,
feature_proposal
])
end
end
context
'when some labels are assigned'
do
before
do
issue
.
labels
<<
[
backend
]
end
it
'shows labels'
do
note
=
find
(
'#note-body'
)
# It should show all the labels on "~".
type
(
note
,
'~'
)
wait_for_requests
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show only unset labels on "/label ~".
type
(
note
,
'/label ~'
)
expect_labels
(
shown:
[
bug
,
feature_proposal
],
not_shown:
[
backend
])
# It should show all the labels on "/relabel ~".
type
(
note
,
'/relabel ~'
)
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show only set labels on "/unlabel ~".
type
(
note
,
'/unlabel ~'
)
expect_labels
(
shown:
[
backend
],
not_shown:
[
bug
,
feature_proposal
])
end
end
context
'when all labels are assigned'
do
before
do
issue
.
labels
<<
[
backend
,
bug
,
feature_proposal
]
end
it
'shows labels'
do
note
=
find
(
'#note-body'
)
# It should show all the labels on "~".
type
(
note
,
'~'
)
wait_for_requests
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show no labels on "/label ~".
type
(
note
,
'/label ~'
)
expect_labels
(
not_shown:
[
backend
,
bug
,
feature_proposal
])
# It should show all the labels on "/relabel ~".
type
(
note
,
'/relabel ~'
)
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
# It should show all the labels on "/unlabel ~".
type
(
note
,
'/unlabel ~'
)
expect_labels
(
shown:
[
backend
,
bug
,
feature_proposal
])
end
end
end
shared_examples
'autocomplete suggestions'
do
...
...
spec/frontend/gfm_auto_complete_spec.js
浏览文件 @
55f76ce8
...
...
@@ -6,21 +6,17 @@ import GfmAutoComplete from '~/gfm_auto_complete';
import
'
vendor/jquery.caret
'
;
import
'
vendor/jquery.atwho
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
import
labelsFixture
from
'
fixtures/autocomplete_sources/labels.json
'
;
// eslint-disable-line import/no-unresolved
describe
(
'
GfmAutoComplete
'
,
()
=>
{
const
gfmAutoCompleteCallbacks
=
GfmAutoComplete
.
prototype
.
getDefaultCallbacks
.
call
({
fetchData
:
()
=>
{},
});
let
atwhoInstance
;
let
items
;
let
sorterValue
;
describe
(
'
DefaultOptions.sorter
'
,
()
=>
{
describe
(
'
assets loading
'
,
()
=>
{
let
items
;
beforeEach
(()
=>
{
jest
.
spyOn
(
GfmAutoComplete
,
'
isLoading
'
).
mockReturnValue
(
true
);
...
...
@@ -65,7 +61,7 @@ describe('GfmAutoComplete', () => {
atwhoInstance
=
{
setting
:
{}
};
const
query
=
'
query
'
;
const
items
=
[];
items
=
[];
const
searchKey
=
'
searchKey
'
;
gfmAutoCompleteCallbacks
.
sorter
.
call
(
atwhoInstance
,
query
,
items
,
searchKey
);
...
...
@@ -254,90 +250,4 @@ describe('GfmAutoComplete', () => {
).
toBe
(
'
<li><small>grp/proj#5</small> Some Issue</li>
'
);
});
});
describe
(
'
labels
'
,
()
=>
{
const
dataSources
=
{
labels
:
`
${
TEST_HOST
}
/autocomplete_sources/labels`
,
};
const
allLabels
=
labelsFixture
;
const
assignedLabels
=
allLabels
.
filter
(
label
=>
label
.
set
);
const
unassignedLabels
=
allLabels
.
filter
(
label
=>
!
label
.
set
);
let
autocomplete
;
let
$textarea
;
beforeEach
(()
=>
{
autocomplete
=
new
GfmAutoComplete
(
dataSources
);
$textarea
=
$
(
'
<textarea></textarea>
'
);
autocomplete
.
setup
(
$textarea
,
{
labels
:
true
});
});
afterEach
(()
=>
{
autocomplete
.
destroy
();
});
const
triggerDropdown
=
text
=>
{
$textarea
.
trigger
(
'
focus
'
)
.
val
(
text
)
.
caret
(
'
pos
'
,
-
1
);
$textarea
.
trigger
(
'
keyup
'
);
return
new
Promise
(
window
.
requestAnimationFrame
);
};
const
getDropdownItems
=
()
=>
{
const
dropdown
=
document
.
getElementById
(
'
at-view-labels
'
);
const
items
=
dropdown
.
getElementsByTagName
(
'
li
'
);
return
[].
map
.
call
(
items
,
item
=>
item
.
textContent
.
trim
());
};
const
expectLabels
=
({
input
,
output
})
=>
triggerDropdown
(
input
).
then
(()
=>
{
expect
(
getDropdownItems
()).
toEqual
(
output
.
map
(
label
=>
label
.
title
));
});
describe
(
'
with no labels assigned
'
,
()
=>
{
beforeEach
(()
=>
{
autocomplete
.
cachedData
[
'
~
'
]
=
[...
unassignedLabels
];
});
it
.
each
`
input | output
${
'
~
'
}
|
${
unassignedLabels
}
${
'
/label ~
'
}
|
${
unassignedLabels
}
${
'
/relabel ~
'
}
|
${
unassignedLabels
}
${
'
/unlabel ~
'
}
|
${[]}
`
(
'
$input shows $output.length labels
'
,
expectLabels
);
});
describe
(
'
with some labels assigned
'
,
()
=>
{
beforeEach
(()
=>
{
autocomplete
.
cachedData
[
'
~
'
]
=
allLabels
;
});
it
.
each
`
input | output
${
'
~
'
}
|
${
allLabels
}
${
'
/label ~
'
}
|
${
unassignedLabels
}
${
'
/relabel ~
'
}
|
${
allLabels
}
${
'
/unlabel ~
'
}
|
${
assignedLabels
}
`
(
'
$input shows $output.length labels
'
,
expectLabels
);
});
describe
(
'
with all labels assigned
'
,
()
=>
{
beforeEach
(()
=>
{
autocomplete
.
cachedData
[
'
~
'
]
=
[...
assignedLabels
];
});
it
.
each
`
input | output
${
'
~
'
}
|
${
assignedLabels
}
${
'
/label ~
'
}
|
${[]}
${
'
/relabel ~
'
}
|
${
assignedLabels
}
${
'
/unlabel ~
'
}
|
${
assignedLabels
}
`
(
'
$input shows $output.length labels
'
,
expectLabels
);
});
});
});
spec/javascripts/fixtures/autocomplete_sources.rb
已删除
100644 → 0
浏览文件 @
83cb7482
# frozen_string_literal: true
require
'spec_helper'
describe
Projects
::
AutocompleteSourcesController
,
'(JavaScript fixtures)'
,
type: :controller
do
include
JavaScriptFixturesHelpers
set
(
:admin
)
{
create
(
:admin
)
}
set
(
:group
)
{
create
(
:group
,
name:
'frontend-fixtures'
)
}
set
(
:project
)
{
create
(
:project
,
namespace:
group
,
path:
'autocomplete-sources-project'
)
}
set
(
:issue
)
{
create
(
:issue
,
project:
project
)
}
before
(
:all
)
do
clean_frontend_fixtures
(
'autocomplete_sources/'
)
end
before
do
sign_in
(
admin
)
end
it
'autocomplete_sources/labels.json'
do
|
example
|
issue
.
labels
<<
create
(
:label
,
project:
project
,
title:
'bug'
)
issue
.
labels
<<
create
(
:label
,
project:
project
,
title:
'critical'
)
create
(
:label
,
project:
project
,
title:
'feature'
)
create
(
:label
,
project:
project
,
title:
'documentation'
)
get
:labels
,
format: :json
,
params:
{
namespace_id:
group
.
path
,
project_id:
project
.
path
,
type:
issue
.
class
.
name
,
type_id:
issue
.
id
}
expect
(
response
).
to
be_success
store_frontend_fixture
(
response
,
example
.
description
)
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录