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
0
Merge Requests
0
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
Léo-Paul Géneau
gitlab-ce
Commits
f524dff3
Commit
f524dff3
authored
Feb 25, 2019
by
Winnie Hellmann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add tests for labels dropdown to gfm_auto_complete_spec.js
parent
fb23a411
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
92 additions
and
2 deletions
+92
-2
spec/frontend/gfm_auto_complete_spec.js
spec/frontend/gfm_auto_complete_spec.js
+92
-2
No files found.
spec/frontend/gfm_auto_complete_spec.js
View file @
f524dff3
...
@@ -6,17 +6,21 @@ import GfmAutoComplete from '~/gfm_auto_complete';
...
@@ -6,17 +6,21 @@ import GfmAutoComplete from '~/gfm_auto_complete';
import
'
vendor/jquery.caret
'
;
import
'
vendor/jquery.caret
'
;
import
'
vendor/jquery.atwho
'
;
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
'
,
()
=>
{
describe
(
'
GfmAutoComplete
'
,
()
=>
{
const
gfmAutoCompleteCallbacks
=
GfmAutoComplete
.
prototype
.
getDefaultCallbacks
.
call
({
const
gfmAutoCompleteCallbacks
=
GfmAutoComplete
.
prototype
.
getDefaultCallbacks
.
call
({
fetchData
:
()
=>
{},
fetchData
:
()
=>
{},
});
});
let
atwhoInstance
;
let
atwhoInstance
;
let
items
;
let
sorterValue
;
let
sorterValue
;
describe
(
'
DefaultOptions.sorter
'
,
()
=>
{
describe
(
'
DefaultOptions.sorter
'
,
()
=>
{
describe
(
'
assets loading
'
,
()
=>
{
describe
(
'
assets loading
'
,
()
=>
{
let
items
;
beforeEach
(()
=>
{
beforeEach
(()
=>
{
jest
.
spyOn
(
GfmAutoComplete
,
'
isLoading
'
).
mockReturnValue
(
true
);
jest
.
spyOn
(
GfmAutoComplete
,
'
isLoading
'
).
mockReturnValue
(
true
);
...
@@ -61,7 +65,7 @@ describe('GfmAutoComplete', () => {
...
@@ -61,7 +65,7 @@ describe('GfmAutoComplete', () => {
atwhoInstance
=
{
setting
:
{}
};
atwhoInstance
=
{
setting
:
{}
};
const
query
=
'
query
'
;
const
query
=
'
query
'
;
items
=
[];
const
items
=
[];
const
searchKey
=
'
searchKey
'
;
const
searchKey
=
'
searchKey
'
;
gfmAutoCompleteCallbacks
.
sorter
.
call
(
atwhoInstance
,
query
,
items
,
searchKey
);
gfmAutoCompleteCallbacks
.
sorter
.
call
(
atwhoInstance
,
query
,
items
,
searchKey
);
...
@@ -250,4 +254,90 @@ describe('GfmAutoComplete', () => {
...
@@ -250,4 +254,90 @@ describe('GfmAutoComplete', () => {
).
toBe
(
'
<li><small>grp/proj#5</small> Some Issue</li>
'
);
).
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
);
});
});
});
});
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