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
ff36ae26
Commit
ff36ae26
authored
3 years ago
by
Stanislav Lashmanov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor nextTick to use direct import from Vue package
RFC:
https://gitlab.com/gitlab-org/frontend/rfcs/-/issues/47
parent
b568065f
Changes
60
Hide whitespace changes
Inline
Side-by-side
Showing
60 changed files
with
369 additions
and
373 deletions
+369
-373
spec/frontend/performance_bar/components/add_request_spec.js
spec/frontend/performance_bar/components/add_request_spec.js
+12
-13
spec/frontend/pipeline_new/components/pipeline_new_form_spec.js
...rontend/pipeline_new/components/pipeline_new_form_spec.js
+7
-6
spec/frontend/pipelines/components/dag/dag_annotations_spec.js
...frontend/pipelines/components/dag/dag_annotations_spec.js
+9
-10
spec/frontend/pipelines/components/dag/dag_spec.js
spec/frontend/pipelines/components/dag/dag_spec.js
+5
-4
spec/frontend/pipelines/components/pipelines_filtered_search_spec.js
...nd/pipelines/components/pipelines_filtered_search_spec.js
+17
-20
spec/frontend/pipelines/graph/action_component_spec.js
spec/frontend/pipelines/graph/action_component_spec.js
+7
-13
spec/frontend/pipelines/graph/job_item_spec.js
spec/frontend/pipelines/graph/job_item_spec.js
+8
-10
spec/frontend/pipelines/graph/linked_pipelines_column_spec.js
.../frontend/pipelines/graph/linked_pipelines_column_spec.js
+2
-1
spec/frontend/pipelines/pipeline_triggerer_spec.js
spec/frontend/pipelines/pipeline_triggerer_spec.js
+4
-4
spec/frontend/pipelines/pipelines_actions_spec.js
spec/frontend/pipelines/pipelines_actions_spec.js
+3
-2
spec/frontend/popovers/components/popovers_spec.js
spec/frontend/popovers/components/popovers_spec.js
+8
-7
spec/frontend/profile/account/components/update_username_spec.js
...ontend/profile/account/components/update_username_spec.js
+6
-5
spec/frontend/projects/commit/components/branches_dropdown_spec.js
...tend/projects/commit/components/branches_dropdown_spec.js
+2
-2
spec/frontend/projects/commit/components/form_modal_spec.js
spec/frontend/projects/commit/components/form_modal_spec.js
+4
-3
spec/frontend/projects/commits/components/author_select_spec.js
...rontend/projects/commits/components/author_select_spec.js
+24
-31
spec/frontend/projects/compare/components/app_spec.js
spec/frontend/projects/compare/components/app_spec.js
+4
-3
spec/frontend/projects/compare/components/repo_dropdown_spec.js
...rontend/projects/compare/components/repo_dropdown_spec.js
+4
-3
spec/frontend/projects/compare/components/revision_dropdown_legacy_spec.js
...jects/compare/components/revision_dropdown_legacy_spec.js
+2
-1
spec/frontend/projects/compare/components/revision_dropdown_spec.js
...end/projects/compare/components/revision_dropdown_spec.js
+2
-1
spec/frontend/projects/new/components/new_project_url_select_spec.js
...nd/projects/new/components/new_project_url_select_spec.js
+2
-2
spec/frontend/projects/pipelines/charts/components/app_spec.js
...frontend/projects/pipelines/charts/components/app_spec.js
+4
-3
spec/frontend/projects/settings/components/shared_runners_toggle_spec.js
...rojects/settings/components/shared_runners_toggle_spec.js
+2
-1
spec/frontend/projects/settings_service_desk/components/service_desk_setting_spec.js
...ings_service_desk/components/service_desk_setting_spec.js
+1
-1
spec/frontend/ref/components/ref_selector_spec.js
spec/frontend/ref/components/ref_selector_spec.js
+15
-19
spec/frontend/related_issues/components/related_issuable_input_spec.js
.../related_issues/components/related_issuable_input_spec.js
+2
-1
spec/frontend/releases/components/app_edit_new_spec.js
spec/frontend/releases/components/app_edit_new_spec.js
+2
-1
spec/frontend/releases/components/app_index_apollo_client_spec.js
...ntend/releases/components/app_index_apollo_client_spec.js
+5
-5
spec/frontend/releases/components/evidence_block_spec.js
spec/frontend/releases/components/evidence_block_spec.js
+4
-4
spec/frontend/releases/components/release_block_footer_spec.js
...frontend/releases/components/release_block_footer_spec.js
+3
-2
spec/frontend/releases/components/release_block_milestone_info_spec.js
.../releases/components/release_block_milestone_info_spec.js
+14
-16
spec/frontend/releases/components/release_block_spec.js
spec/frontend/releases/components/release_block_spec.js
+3
-2
spec/frontend/releases/components/tag_field_new_spec.js
spec/frontend/releases/components/tag_field_new_spec.js
+2
-2
spec/frontend/repository/components/breadcrumbs_spec.js
spec/frontend/repository/components/breadcrumbs_spec.js
+5
-4
spec/frontend/repository/components/upload_blob_modal_spec.js
.../frontend/repository/components/upload_blob_modal_spec.js
+3
-2
spec/frontend/serverless/survey_banner_spec.js
spec/frontend/serverless/survey_banner_spec.js
+5
-5
spec/frontend/set_status_modal/set_status_modal_wrapper_spec.js
...rontend/set_status_modal/set_status_modal_wrapper_spec.js
+10
-9
spec/frontend/sidebar/assignees_spec.js
spec/frontend/sidebar/assignees_spec.js
+4
-4
spec/frontend/sidebar/components/assignees/sidebar_editable_item_spec.js
...idebar/components/assignees/sidebar_editable_item_spec.js
+6
-5
spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js
...ar/components/assignees/uncollapsed_assignee_list_spec.js
+3
-2
spec/frontend/sidebar/components/sidebar_dropdown_widget_spec.js
...ontend/sidebar/components/sidebar_dropdown_widget_spec.js
+5
-4
spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js
...end/sidebar/components/time_tracking/time_tracker_spec.js
+8
-7
spec/frontend/sidebar/components/todo_toggle/sidebar_todo_widget_spec.js
...idebar/components/todo_toggle/sidebar_todo_widget_spec.js
+2
-2
spec/frontend/sidebar/lock/edit_form_buttons_spec.js
spec/frontend/sidebar/lock/edit_form_buttons_spec.js
+11
-14
spec/frontend/sidebar/lock/issuable_lock_form_spec.js
spec/frontend/sidebar/lock/issuable_lock_form_spec.js
+10
-12
spec/frontend/sidebar/sidebar_assignees_spec.js
spec/frontend/sidebar/sidebar_assignees_spec.js
+4
-4
spec/frontend/sidebar/todo_spec.js
spec/frontend/sidebar/todo_spec.js
+4
-4
spec/frontend/snippets/components/snippet_blob_actions_edit_spec.js
...end/snippets/components/snippet_blob_actions_edit_spec.js
+2
-1
spec/frontend/snippets/components/snippet_header_spec.js
spec/frontend/snippets/components/snippet_header_spec.js
+12
-13
spec/frontend/static_site_editor/components/edit_meta_controls_spec.js
.../static_site_editor/components/edit_meta_controls_spec.js
+3
-2
spec/frontend/static_site_editor/components/edit_meta_modal_spec.js
...end/static_site_editor/components/edit_meta_modal_spec.js
+8
-7
spec/frontend/static_site_editor/pages/home_spec.js
spec/frontend/static_site_editor/pages/home_spec.js
+11
-12
spec/frontend/terraform/components/states_table_actions_spec.js
...rontend/terraform/components/states_table_actions_spec.js
+3
-2
spec/frontend/terraform/components/states_table_spec.js
spec/frontend/terraform/components/states_table_spec.js
+3
-2
spec/frontend/tooltips/components/tooltips_spec.js
spec/frontend/tooltips/components/tooltips_spec.js
+18
-17
spec/frontend/user_lists/components/add_user_modal_spec.js
spec/frontend/user_lists/components/add_user_modal_spec.js
+3
-2
spec/frontend/user_lists/components/edit_user_list_spec.js
spec/frontend/user_lists/components/edit_user_list_spec.js
+6
-6
spec/frontend/user_lists/components/new_user_list_spec.js
spec/frontend/user_lists/components/new_user_list_spec.js
+4
-4
spec/frontend/user_lists/components/user_list_spec.js
spec/frontend/user_lists/components/user_list_spec.js
+11
-11
spec/frontend/user_lists/components/user_lists_table_spec.js
spec/frontend/user_lists/components/user_lists_table_spec.js
+13
-15
spec/frontend/whats_new/components/app_spec.js
spec/frontend/whats_new/components/app_spec.js
+3
-3
No files found.
spec/frontend/performance_bar/components/add_request_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
AddRequest
from
'
~/performance_bar/components/add_request.vue
'
;
describe
(
'
add request form
'
,
()
=>
{
...
...
@@ -17,9 +18,9 @@ describe('add request form', () => {
});
describe
(
'
when clicking the button
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
wrapper
.
find
(
'
button
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
shows the form
'
,
()
=>
{
...
...
@@ -27,9 +28,9 @@ describe('add request form', () => {
});
describe
(
'
when pressing escape
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
wrapper
.
find
(
'
input
'
).
trigger
(
'
keyup.esc
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
hides the input
'
,
()
=>
{
...
...
@@ -38,12 +39,11 @@ describe('add request form', () => {
});
describe
(
'
when submitting the form
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
wrapper
.
find
(
'
input
'
).
setValue
(
'
http://gitlab.example.com/users/root/calendar.json
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
wrapper
.
find
(
'
input
'
).
trigger
(
'
keyup.enter
'
);
return
wrapper
.
vm
.
$nextTick
();
});
await
nextTick
();
wrapper
.
find
(
'
input
'
).
trigger
(
'
keyup.enter
'
);
await
nextTick
();
});
it
(
'
emits an event to add the request
'
,
()
=>
{
...
...
@@ -57,11 +57,10 @@ describe('add request form', () => {
expect
(
wrapper
.
find
(
'
input
'
).
exists
()).
toBe
(
false
);
});
it
(
'
clears the value for next time
'
,
()
=>
{
it
(
'
clears the value for next time
'
,
async
()
=>
{
wrapper
.
find
(
'
button
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
wrapper
.
find
(
'
input
'
).
text
()).
toEqual
(
''
);
});
await
nextTick
();
expect
(
wrapper
.
find
(
'
input
'
).
text
()).
toEqual
(
''
);
});
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipeline_new/components/pipeline_new_form_spec.js
View file @
ff36ae26
import
{
GlForm
,
GlSprintf
,
GlLoadingIcon
}
from
'
@gitlab/ui
'
;
import
{
mount
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
CreditCardValidationRequiredAlert
from
'
ee_component/billings/components/cc_validation_required_alert.vue
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
...
...
@@ -122,7 +123,7 @@ describe('Pipeline New Form', () => {
it
(
'
removes ci variable row on remove icon button click
'
,
async
()
=>
{
findRemoveIcons
().
at
(
1
).
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findVariableRows
()).
toHaveLength
(
2
);
});
...
...
@@ -132,7 +133,7 @@ describe('Pipeline New Form', () => {
input
.
element
.
value
=
'
test_var_2
'
;
input
.
trigger
(
'
change
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findVariableRows
()).
toHaveLength
(
4
);
expect
(
findKeyInputs
().
at
(
3
).
element
.
value
).
toBe
(
''
);
...
...
@@ -205,7 +206,7 @@ describe('Pipeline New Form', () => {
mainInput
.
element
.
value
=
'
build_var
'
;
mainInput
.
trigger
(
'
change
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
selectBranch
(
'
branch-1
'
);
...
...
@@ -215,7 +216,7 @@ describe('Pipeline New Form', () => {
branchOneInput
.
element
.
value
=
'
deploy_var
'
;
branchOneInput
.
trigger
(
'
change
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
selectBranch
(
'
main
'
);
...
...
@@ -309,7 +310,7 @@ describe('Pipeline New Form', () => {
findKeyInputs
().
at
(
0
).
element
.
value
=
'
yml_var_modified
'
;
findKeyInputs
().
at
(
0
).
trigger
(
'
change
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findVariableRows
().
at
(
0
).
text
()).
not
.
toContain
(
mockYmlDesc
);
});
...
...
@@ -418,7 +419,7 @@ describe('Pipeline New Form', () => {
findCCAlert
().
vm
.
$emit
(
'
dismiss
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findCCAlert
().
exists
()).
toBe
(
false
);
expect
(
wrapper
.
vm
.
$data
.
error
).
toBe
(
null
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/components/dag/dag_annotations_spec.js
View file @
ff36ae26
import
{
GlButton
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
,
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
DagAnnotations
from
'
~/pipelines/components/dag/dag_annotations.vue
'
;
import
{
singleNote
,
multiNote
}
from
'
./mock_data
'
;
...
...
@@ -82,26 +83,24 @@ describe('The DAG annotations', () => {
});
describe
(
'
clicking hide
'
,
()
=>
{
it
(
'
hides listed items and changes text to show
'
,
()
=>
{
it
(
'
hides listed items and changes text to show
'
,
async
()
=>
{
expect
(
getAllTextBlocks
().
length
).
toBe
(
Object
.
keys
(
multiNote
).
length
);
expect
(
getToggleButton
().
text
()).
toBe
(
'
Hide list
'
);
getToggleButton
().
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
getAllTextBlocks
().
length
).
toBe
(
0
);
expect
(
getToggleButton
().
text
()).
toBe
(
'
Show list
'
);
});
await
nextTick
();
expect
(
getAllTextBlocks
().
length
).
toBe
(
0
);
expect
(
getToggleButton
().
text
()).
toBe
(
'
Show list
'
);
});
});
describe
(
'
clicking show
'
,
()
=>
{
it
(
'
shows listed items and changes text to hide
'
,
()
=>
{
it
(
'
shows listed items and changes text to hide
'
,
async
()
=>
{
getToggleButton
().
trigger
(
'
click
'
);
getToggleButton
().
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
getAllTextBlocks
().
length
).
toBe
(
Object
.
keys
(
multiNote
).
length
);
expect
(
getToggleButton
().
text
()).
toBe
(
'
Hide list
'
);
});
await
nextTick
();
expect
(
getAllTextBlocks
().
length
).
toBe
(
Object
.
keys
(
multiNote
).
length
);
expect
(
getToggleButton
().
text
()).
toBe
(
'
Hide list
'
);
});
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/components/dag/dag_spec.js
View file @
ff36ae26
import
{
GlAlert
,
GlEmptyState
}
from
'
@gitlab/ui
'
;
import
{
mount
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
ADD_NOTE
,
REMOVE_NOTE
,
REPLACE_NOTES
}
from
'
~/pipelines/components/dag/constants
'
;
import
Dag
from
'
~/pipelines/components/dag/dag.vue
'
;
import
DagAnnotations
from
'
~/pipelines/components/dag/dag_annotations.vue
'
;
...
...
@@ -153,11 +154,11 @@ describe('Pipeline DAG graph wrapper', () => {
expect
(
getNotes
().
exists
()).
toBe
(
false
);
getGraph
().
vm
.
$emit
(
'
update-annotation
'
,
{
type
:
ADD_NOTE
,
data
:
currentNote
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
getNotes
().
exists
()).
toBe
(
true
);
getGraph
().
vm
.
$emit
(
'
update-annotation
'
,
{
type
:
REMOVE_NOTE
,
data
:
currentNote
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
getNotes
().
exists
()).
toBe
(
false
);
});
...
...
@@ -165,11 +166,11 @@ describe('Pipeline DAG graph wrapper', () => {
expect
(
getNotes
().
exists
()).
toBe
(
false
);
getGraph
().
vm
.
$emit
(
'
update-annotation
'
,
{
type
:
REPLACE_NOTES
,
data
:
multiNote
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
getNotes
().
exists
()).
toBe
(
true
);
getGraph
().
vm
.
$emit
(
'
update-annotation
'
,
{
type
:
REPLACE_NOTES
,
data
:
{}
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
getNotes
().
exists
()).
toBe
(
false
);
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/components/pipelines_filtered_search_spec.js
View file @
ff36ae26
import
{
GlFilteredSearch
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
Api
from
'
~/api
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
PipelinesFilteredSearch
from
'
~/pipelines/components/pipelines_list/pipelines_filtered_search.vue
'
;
...
...
@@ -103,46 +104,42 @@ describe('Pipelines filtered search', () => {
expect
(
wrapper
.
emitted
(
'
filterPipelines
'
)[
0
]).
toEqual
([
mockSearch
]);
});
it
(
'
disables tag name token when branch name token is active
'
,
()
=>
{
it
(
'
disables tag name token when branch name token is active
'
,
async
()
=>
{
findFilteredSearch
().
vm
.
$emit
(
'
input
'
,
[
{
type
:
'
ref
'
,
value
:
{
data
:
'
branch-1
'
,
operator
:
'
=
'
}
},
{
type
:
'
filtered-search-term
'
,
value
:
{
data
:
''
}
},
]);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findBranchToken
().
disabled
).
toBe
(
false
);
expect
(
findTagToken
().
disabled
).
toBe
(
true
);
});
await
nextTick
();
expect
(
findBranchToken
().
disabled
).
toBe
(
false
);
expect
(
findTagToken
().
disabled
).
toBe
(
true
);
});
it
(
'
disables branch name token when tag name token is active
'
,
()
=>
{
it
(
'
disables branch name token when tag name token is active
'
,
async
()
=>
{
findFilteredSearch
().
vm
.
$emit
(
'
input
'
,
[
{
type
:
'
tag
'
,
value
:
{
data
:
'
tag-1
'
,
operator
:
'
=
'
}
},
{
type
:
'
filtered-search-term
'
,
value
:
{
data
:
''
}
},
]);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findBranchToken
().
disabled
).
toBe
(
true
);
expect
(
findTagToken
().
disabled
).
toBe
(
false
);
});
await
nextTick
();
expect
(
findBranchToken
().
disabled
).
toBe
(
true
);
expect
(
findTagToken
().
disabled
).
toBe
(
false
);
});
it
(
'
resets tokens disabled state on clear
'
,
()
=>
{
it
(
'
resets tokens disabled state on clear
'
,
async
()
=>
{
findFilteredSearch
().
vm
.
$emit
(
'
clearInput
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findBranchToken
().
disabled
).
toBe
(
false
);
expect
(
findTagToken
().
disabled
).
toBe
(
false
);
});
await
nextTick
();
expect
(
findBranchToken
().
disabled
).
toBe
(
false
);
expect
(
findTagToken
().
disabled
).
toBe
(
false
);
});
it
(
'
resets tokens disabled state when clearing tokens by backspace
'
,
()
=>
{
it
(
'
resets tokens disabled state when clearing tokens by backspace
'
,
async
()
=>
{
findFilteredSearch
().
vm
.
$emit
(
'
input
'
,
[{
type
:
'
filtered-search-term
'
,
value
:
{
data
:
''
}
}]);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findBranchToken
().
disabled
).
toBe
(
false
);
expect
(
findTagToken
().
disabled
).
toBe
(
false
);
});
await
nextTick
();
expect
(
findBranchToken
().
disabled
).
toBe
(
false
);
expect
(
findTagToken
().
disabled
).
toBe
(
false
);
});
describe
(
'
Url query params
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/graph/action_component_spec.js
View file @
ff36ae26
import
{
GlButton
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
ActionComponent
from
'
~/pipelines/components/jobs_shared/action_component.vue
'
;
...
...
@@ -33,16 +34,11 @@ describe('pipeline graph action component', () => {
expect
(
wrapper
.
attributes
(
'
title
'
)).
toBe
(
'
bar
'
);
});
it
(
'
should update bootstrap tooltip when title changes
'
,
(
done
)
=>
{
it
(
'
should update bootstrap tooltip when title changes
'
,
async
(
)
=>
{
wrapper
.
setProps
({
tooltipText
:
'
changed
'
});
wrapper
.
vm
.
$nextTick
()
.
then
(()
=>
{
expect
(
wrapper
.
attributes
(
'
title
'
)).
toBe
(
'
changed
'
);
})
.
then
(
done
)
.
catch
(
done
.
fail
);
await
nextTick
();
expect
(
wrapper
.
attributes
(
'
title
'
)).
toBe
(
'
changed
'
);
});
it
(
'
should render an svg
'
,
()
=>
{
...
...
@@ -64,13 +60,11 @@ describe('pipeline graph action component', () => {
.
catch
(
done
.
fail
);
});
it
(
'
renders a loading icon while waiting for request
'
,
(
done
)
=>
{
it
(
'
renders a loading icon while waiting for request
'
,
async
(
)
=>
{
findButton
().
trigger
(
'
click
'
);
wrapper
.
vm
.
$nextTick
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-action-icon-loading
'
).
exists
()).
toBe
(
true
);
done
();
});
await
nextTick
();
expect
(
wrapper
.
find
(
'
.js-action-icon-loading
'
).
exists
()).
toBe
(
true
);
});
});
});
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/graph/job_item_spec.js
View file @
ff36ae26
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
JobItem
from
'
~/pipelines/components/graph/job_item.vue
'
;
describe
(
'
pipeline graph job item
'
,
()
=>
{
...
...
@@ -74,22 +75,19 @@ describe('pipeline graph job item', () => {
});
describe
(
'
name with link
'
,
()
=>
{
it
(
'
should render the job name and status with a link
'
,
(
done
)
=>
{
it
(
'
should render the job name and status with a link
'
,
async
(
)
=>
{
createWrapper
({
job
:
mockJob
});
wrapper
.
vm
.
$nextTick
(()
=>
{
const
link
=
wrapper
.
find
(
'
a
'
);
await
nextTick
();
const
link
=
wrapper
.
find
(
'
a
'
);
expect
(
link
.
attributes
(
'
href
'
)).
toBe
(
mockJob
.
status
.
detailsPath
);
expect
(
link
.
attributes
(
'
href
'
)).
toBe
(
mockJob
.
status
.
detailsPath
);
expect
(
link
.
attributes
(
'
title
'
)).
toBe
(
`
${
mockJob
.
name
}
-
${
mockJob
.
status
.
label
}
`
);
expect
(
link
.
attributes
(
'
title
'
)).
toBe
(
`
${
mockJob
.
name
}
-
${
mockJob
.
status
.
label
}
`
);
expect
(
wrapper
.
find
(
'
.ci-status-icon-success
'
).
exists
()).
toBe
(
true
);
expect
(
wrapper
.
text
()).
toBe
(
mockJob
.
name
);
expect
(
wrapper
.
find
(
'
.ci-status-icon-success
'
).
exists
()).
toBe
(
true
);
done
();
});
expect
(
wrapper
.
text
()).
toBe
(
mockJob
.
name
);
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/graph/linked_pipelines_column_spec.js
View file @
ff36ae26
import
{
mount
,
shallowMount
,
createLocalVue
}
from
'
@vue/test-utils
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
{
nextTick
}
from
'
vue
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
getPipelineDetails
from
'
shared_queries/pipelines/get_pipeline_details.query.graphql
'
;
...
...
@@ -108,7 +109,7 @@ describe('Linked Pipelines Column', () => {
expect
(
layersFn
).
not
.
toHaveBeenCalled
();
await
clickExpandButtonAndAwaitTimers
();
await
wrapper
.
setProps
({
viewType
:
LAYER_VIEW
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
layersFn
).
toHaveBeenCalledTimes
(
1
);
await
wrapper
.
setProps
({
viewType
:
STAGE_VIEW
});
await
wrapper
.
setProps
({
viewType
:
LAYER_VIEW
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/pipeline_triggerer_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
pipelineTriggerer
from
'
~/pipelines/components/pipelines_list/pipeline_triggerer.vue
'
;
import
UserAvatarLink
from
'
~/vue_shared/components/user_avatar/user_avatar_link.vue
'
;
...
...
@@ -47,15 +48,14 @@ describe('Pipelines Triggerer', () => {
});
});
it
(
'
should render "API" when no triggerer is provided
'
,
()
=>
{
it
(
'
should render "API" when no triggerer is provided
'
,
async
()
=>
{
wrapper
.
setProps
({
pipeline
:
{
user
:
null
,
},
});
return
wrapper
.
vm
.
$nextTick
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-pipeline-url-api
'
).
text
()).
toEqual
(
'
API
'
);
});
await
nextTick
();
expect
(
wrapper
.
find
(
'
.js-pipeline-url-api
'
).
text
()).
toEqual
(
'
API
'
);
});
});
This diff is collapsed.
Click to expand it.
spec/frontend/pipelines/pipelines_actions_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlDropdownItem
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
{
TEST_HOST
}
from
'
spec/test_constants
'
;
import
createFlash
from
'
~/flash
'
;
...
...
@@ -68,7 +69,7 @@ describe('Pipelines Actions dropdown', () => {
findAllDropdownItems
().
at
(
0
).
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findDropdown
().
props
(
'
loading
'
)).
toBe
(
true
);
await
waitForPromises
();
...
...
@@ -80,7 +81,7 @@ describe('Pipelines Actions dropdown', () => {
findAllDropdownItems
().
at
(
0
).
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findDropdown
().
props
(
'
loading
'
)).
toBe
(
true
);
await
waitForPromises
();
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/popovers/components/popovers_spec.js
View file @
ff36ae26
import
{
GlPopover
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
useMockMutationObserver
}
from
'
helpers/mock_dom_observer
'
;
import
Popovers
from
'
~/popovers/components/popovers.vue
'
;
...
...
@@ -7,10 +8,10 @@ describe('popovers/components/popovers.vue', () => {
const
{
trigger
:
triggerMutate
}
=
useMockMutationObserver
();
let
wrapper
;
const
buildWrapper
=
(...
targets
)
=>
{
const
buildWrapper
=
async
(...
targets
)
=>
{
wrapper
=
shallowMount
(
Popovers
);
wrapper
.
vm
.
addPopovers
(
targets
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
createPopoverTarget
=
(
options
=
{})
=>
{
...
...
@@ -49,7 +50,7 @@ describe('popovers/components/popovers.vue', () => {
buildWrapper
(
target
);
wrapper
.
vm
.
addPopovers
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
findAll
(
GlPopover
)).
toHaveLength
(
1
);
});
...
...
@@ -86,7 +87,7 @@ describe('popovers/components/popovers.vue', () => {
await
buildWrapper
(
createPopoverTarget
(),
createPopoverTarget
());
wrapper
.
vm
.
dispose
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
allPopovers
()).
toHaveLength
(
0
);
});
...
...
@@ -97,7 +98,7 @@ describe('popovers/components/popovers.vue', () => {
await
buildWrapper
(
target
,
createPopoverTarget
());
wrapper
.
vm
.
dispose
(
target
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
allPopovers
()).
toHaveLength
(
1
);
});
...
...
@@ -109,13 +110,13 @@ describe('popovers/components/popovers.vue', () => {
await
buildWrapper
(
target
);
wrapper
.
vm
.
addPopovers
([
target
,
createPopoverTarget
()]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
triggerMutate
(
document
.
body
,
{
entry
:
{
removedNodes
:
[
target
]
},
options
:
{
childList
:
true
},
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
allPopovers
()).
toHaveLength
(
1
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/profile/account/components/update_username_spec.js
View file @
ff36ae26
import
{
GlModal
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
import
createFlash
from
'
~/flash
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
...
...
@@ -58,7 +59,7 @@ describe('UpdateUsername component', () => {
it
(
'
has a disabled button if the username was not changed
'
,
async
()
=>
{
const
{
openModalBtn
}
=
findElements
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
openModalBtn
.
props
(
'
disabled
'
)).
toBe
(
true
);
});
...
...
@@ -69,7 +70,7 @@ describe('UpdateUsername component', () => {
input
.
element
.
value
=
'
newUsername
'
;
input
.
trigger
(
'
input
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
openModalBtn
.
props
(
'
disabled
'
)).
toBe
(
false
);
});
...
...
@@ -83,7 +84,7 @@ describe('UpdateUsername component', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
newUsername
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
confirmation modal contains proper header and body
'
,
async
()
=>
{
...
...
@@ -100,7 +101,7 @@ describe('UpdateUsername component', () => {
jest
.
spyOn
(
axios
,
'
put
'
);
await
wrapper
.
vm
.
onConfirm
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
axios
.
put
).
toHaveBeenCalledWith
(
actionUrl
,
{
user
:
{
username
:
newUsername
}
});
});
...
...
@@ -117,7 +118,7 @@ describe('UpdateUsername component', () => {
});
await
wrapper
.
vm
.
onConfirm
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
input
.
attributes
(
'
disabled
'
)).
toBe
(
undefined
);
expect
(
openModalBtn
.
props
(
'
disabled
'
)).
toBe
(
true
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/commit/components/branches_dropdown_spec.js
View file @
ff36ae26
import
{
GlDropdownItem
,
GlSearchBoxByType
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
{
extendedWrapper
}
from
'
helpers/vue_test_utils_helper
'
;
import
{
DEFAULT_DEBOUNCE_AND_THROTTLE_MS
}
from
'
~/lib/utils/constants
'
;
...
...
@@ -115,7 +115,7 @@ describe('BranchesDropdown', () => {
findSearchBoxByType
().
vm
.
$emit
(
'
input
'
,
'
_anything_
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
spy
).
toHaveBeenCalledWith
(
'
_anything_
'
);
expect
(
wrapper
.
vm
.
searchTerm
).
toBe
(
'
_anything_
'
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/commit/components/form_modal_spec.js
View file @
ff36ae26
...
...
@@ -2,6 +2,7 @@ import { GlModal, GlForm, GlFormCheckbox, GlSprintf } from '@gitlab/ui';
import
{
within
}
from
'
@testing-library/dom
'
;
import
{
shallowMount
,
mount
,
createWrapper
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
extendedWrapper
}
from
'
helpers/vue_test_utils_helper
'
;
import
api
from
'
~/api
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
...
...
@@ -156,7 +157,7 @@ describe('CommitFormModal', () => {
it
(
'
Changes the start_branch input value
'
,
async
()
=>
{
findBranchesDropdown
().
vm
.
$emit
(
'
selectBranch
'
,
'
_changed_branch_value_
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findStartBranch
().
attributes
(
'
value
'
)).
toBe
(
'
_changed_branch_value_
'
);
});
...
...
@@ -165,7 +166,7 @@ describe('CommitFormModal', () => {
createComponent
(
shallowMount
,
{},
{},
{
isCherryPick
:
true
});
findProjectsDropdown
().
vm
.
$emit
(
'
selectProject
'
,
'
_changed_project_value_
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findTargetProject
().
attributes
(
'
value
'
)).
toBe
(
'
_changed_project_value_
'
);
});
...
...
@@ -174,7 +175,7 @@ describe('CommitFormModal', () => {
it
(
'
action primary button triggers Redis HLL tracking api call
'
,
async
()
=>
{
createComponent
(
mount
,
{},
{},
{
primaryActionEventName
:
'
test_event
'
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
jest
.
spyOn
(
findForm
().
element
,
'
submit
'
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/commits/components/author_select_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlDropdownSectionHeader
,
GlSearchBoxByType
,
GlDropdownItem
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
*
as
urlUtility
from
'
~/lib/utils/url_utility
'
;
import
AuthorSelect
from
'
~/projects/commits/components/author_select.vue
'
;
...
...
@@ -63,36 +63,33 @@ describe('Author Select', () => {
const
findDropdownItems
=
()
=>
wrapper
.
findAll
(
GlDropdownItem
);
describe
(
'
user is searching via "filter by commit message"
'
,
()
=>
{
it
(
'
disables dropdown container
'
,
()
=>
{
it
(
'
disables dropdown container
'
,
async
()
=>
{
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
hasSearchParam
:
true
});
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdownContainer
().
attributes
(
'
disabled
'
)).
toBeFalsy
();
});
await
nextTick
();
expect
(
findDropdownContainer
().
attributes
(
'
disabled
'
)).
toBeFalsy
();
});
it
(
'
has correct tooltip message
'
,
()
=>
{
it
(
'
has correct tooltip message
'
,
async
()
=>
{
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
hasSearchParam
:
true
});
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdownContainer
().
attributes
(
'
title
'
)).
toBe
(
'
Searching by both author and message is currently not supported.
'
,
);
});
await
nextTick
();
expect
(
findDropdownContainer
().
attributes
(
'
title
'
)).
toBe
(
'
Searching by both author and message is currently not supported.
'
,
);
});
it
(
'
disables dropdown
'
,
()
=>
{
it
(
'
disables dropdown
'
,
async
()
=>
{
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
hasSearchParam
:
false
});
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdown
().
attributes
(
'
disabled
'
)).
toBeFalsy
();
});
await
nextTick
();
expect
(
findDropdown
().
attributes
(
'
disabled
'
)).
toBeFalsy
();
});
it
(
'
hasSearchParam if user types a truthy string
'
,
()
=>
{
...
...
@@ -107,14 +104,13 @@ describe('Author Select', () => {
expect
(
findDropdown
().
attributes
(
'
text
'
)).
toBe
(
'
Author
'
);
});
it
(
'
displays the current selected author
'
,
()
=>
{
it
(
'
displays the current selected author
'
,
async
()
=>
{
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
currentAuthor
});
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdown
().
attributes
(
'
text
'
)).
toBe
(
currentAuthor
);
});
await
nextTick
();
expect
(
findDropdown
().
attributes
(
'
text
'
)).
toBe
(
currentAuthor
);
});
it
(
'
displays correct header text
'
,
()
=>
{
...
...
@@ -149,13 +145,12 @@ describe('Author Select', () => {
expect
(
findDropdownItems
().
at
(
0
).
text
()).
toBe
(
'
Any Author
'
);
});
it
(
'
displays the project authors
'
,
()
=>
{
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdownItems
()).
toHaveLength
(
authors
.
length
+
1
);
});
it
(
'
displays the project authors
'
,
async
()
=>
{
await
nextTick
();
expect
(
findDropdownItems
()).
toHaveLength
(
authors
.
length
+
1
);
});
it
(
'
has the correct props
'
,
()
=>
{
it
(
'
has the correct props
'
,
async
()
=>
{
const
[{
avatar_url
,
username
}]
=
authors
;
const
result
=
{
avatarUrl
:
avatar_url
,
...
...
@@ -167,15 +162,13 @@ describe('Author Select', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
currentAuthor
});
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdownItems
().
at
(
1
).
props
()).
toEqual
(
expect
.
objectContaining
(
result
));
});
await
nextTick
();
expect
(
findDropdownItems
().
at
(
1
).
props
()).
toEqual
(
expect
.
objectContaining
(
result
));
});
it
(
"
display the author's name
"
,
()
=>
{
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findDropdownItems
().
at
(
1
).
text
()).
toBe
(
currentAuthor
);
});
it
(
"
display the author's name
"
,
async
()
=>
{
await
nextTick
();
expect
(
findDropdownItems
().
at
(
1
).
text
()).
toBe
(
currentAuthor
);
});
it
(
'
passes selected author to redirectPath
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/compare/components/app_spec.js
View file @
ff36ae26
import
{
GlButton
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
CompareApp
from
'
~/projects/compare/components/app.vue
'
;
import
RevisionCard
from
'
~/projects/compare/components/revision_card.vue
'
;
import
{
appDefaultProps
as
defaultProps
}
from
'
./mock_data
'
;
...
...
@@ -91,7 +92,7 @@ describe('CompareApp component', () => {
project
,
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findTargetRevisionCard
().
props
(
'
selectedProject
'
)).
toEqual
(
expect
.
objectContaining
(
project
),
...
...
@@ -106,7 +107,7 @@ describe('CompareApp component', () => {
revision
,
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findSourceRevisionCard
().
props
(
'
paramsBranch
'
)).
toBe
(
revision
);
});
...
...
@@ -125,7 +126,7 @@ describe('CompareApp component', () => {
it
(
'
swaps revisions when clicked
'
,
async
()
=>
{
findSwapRevisionsButton
().
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findTargetRevisionCard
().
props
(
'
paramsBranch
'
)).
toBe
(
defaultProps
.
paramsTo
);
expect
(
findSourceRevisionCard
().
props
(
'
paramsBranch
'
)).
toBe
(
defaultProps
.
paramsFrom
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/compare/components/repo_dropdown_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlDropdownItem
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
RepoDropdown
from
'
~/projects/compare/components/repo_dropdown.vue
'
;
import
{
revisionCardDefaultProps
as
defaultProps
}
from
'
./mock_data
'
;
...
...
@@ -39,7 +40,7 @@ describe('RepoDropdown component', () => {
it
(
'
does not emit `changeTargetProject` event
'
,
async
()
=>
{
wrapper
.
vm
.
emitTargetProject
(
'
foo
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
emitted
(
'
changeTargetProject
'
)).
toBeUndefined
();
});
});
...
...
@@ -67,13 +68,13 @@ describe('RepoDropdown component', () => {
it
(
'
updates the hidden input value when onClick method is triggered
'
,
async
()
=>
{
const
repoId
=
'
1
'
;
wrapper
.
vm
.
onClick
({
id
:
repoId
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findHiddenInput
().
attributes
(
'
value
'
)).
toBe
(
repoId
);
});
it
(
'
emits `selectProject` event when another target project is selected
'
,
async
()
=>
{
findGlDropdown
().
findAll
(
GlDropdownItem
).
at
(
0
).
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
emitted
(
'
selectProject
'
)[
0
][
0
]).
toEqual
({
direction
:
'
from
'
,
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/compare/components/revision_dropdown_legacy_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlDropdownItem
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
AxiosMockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
createFlash
from
'
~/flash
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
RevisionDropdown
from
'
~/projects/compare/components/revision_dropdown_legacy.vue
'
;
...
...
@@ -105,7 +106,7 @@ describe('RevisionDropdown component', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
branches
:
[
'
some-branch
'
]
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
findFirstGlDropdownItem
().
vm
.
$emit
(
'
click
'
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/compare/components/revision_dropdown_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlDropdownItem
,
GlSearchBoxByType
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
AxiosMockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
createFlash
from
'
~/flash
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
RevisionDropdown
from
'
~/projects/compare/components/revision_dropdown.vue
'
;
...
...
@@ -141,7 +142,7 @@ describe('RevisionDropdown component', () => {
it
(
'
emits `selectRevision` event when another revision is selected
'
,
async
()
=>
{
createComponent
();
wrapper
.
vm
.
branches
=
[
'
some-branch
'
];
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
findGlDropdown
().
findAll
(
GlDropdownItem
).
at
(
0
).
vm
.
$emit
(
'
click
'
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/new/components/new_project_url_select_spec.js
View file @
ff36ae26
...
...
@@ -6,7 +6,7 @@ import {
GlSearchBoxByType
,
}
from
'
@gitlab/ui
'
;
import
{
mount
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
...
...
@@ -95,7 +95,7 @@ describe('NewProjectUrlSelect component', () => {
const
clickDropdownItem
=
async
()
=>
{
wrapper
.
findComponent
(
GlDropdownItem
).
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
showDropdown
=
async
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/pipelines/charts/components/app_spec.js
View file @
ff36ae26
import
{
GlTabs
,
GlTab
}
from
'
@gitlab/ui
'
;
import
{
merge
}
from
'
lodash
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
shallowMountExtended
}
from
'
helpers/vue_test_utils_helper
'
;
import
setWindowLocation
from
'
helpers/set_window_location_helper
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
...
...
@@ -99,7 +100,7 @@ describe('ProjectsPipelinesChartsApp', () => {
tabs
.
vm
.
$emit
(
'
input
'
,
1
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
tabs
.
attributes
(
'
value
'
)).
toBe
(
'
1
'
);
});
...
...
@@ -115,7 +116,7 @@ describe('ProjectsPipelinesChartsApp', () => {
tabs
.
vm
.
$emit
(
'
input
'
,
0
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
updateHistory
).
not
.
toHaveBeenCalled
();
});
...
...
@@ -183,7 +184,7 @@ describe('ProjectsPipelinesChartsApp', () => {
popstateHandler
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findGlTabs
().
attributes
(
'
value
'
)).
toBe
(
'
1
'
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/settings/components/shared_runners_toggle_spec.js
View file @
ff36ae26
import
{
GlAlert
,
GlToggle
,
GlTooltip
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
MockAxiosAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
SharedRunnersToggleComponent
from
'
~/projects/settings/components/shared_runners_toggle.vue
'
;
...
...
@@ -121,7 +122,7 @@ describe('projects/settings/components/shared_runners', () => {
expect
(
isToggleLoading
()).
toBe
(
false
);
findSharedRunnersToggle
().
vm
.
$emit
(
'
change
'
,
true
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
isToggleLoading
()).
toBe
(
true
);
await
waitForPromises
();
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/projects/settings_service_desk/components/service_desk_setting_spec.js
View file @
ff36ae26
...
...
@@ -139,7 +139,7 @@ describe('ServiceDeskSetting', () => {
input
.
setValue
(
'
abc_A.
'
);
input
.
trigger
(
'
blur
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
const
errorText
=
wrapper
.
find
(
'
.invalid-feedback
'
);
expect
(
errorText
.
exists
()).
toBe
(
true
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/ref/components/ref_selector_spec.js
View file @
ff36ae26
...
...
@@ -137,19 +137,19 @@ describe('Ref selector component', () => {
findSearchBox
().
vm
.
$emit
(
'
input
'
,
newQuery
);
};
const
selectFirstBranch
=
()
=>
{
const
selectFirstBranch
=
async
()
=>
{
findFirstBranchDropdownItem
().
vm
.
$emit
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
selectFirstTag
=
()
=>
{
const
selectFirstTag
=
async
()
=>
{
findFirstTagDropdownItem
().
vm
.
$emit
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
selectFirstCommit
=
()
=>
{
const
selectFirstCommit
=
async
()
=>
{
findFirstCommitDropdownItem
().
vm
.
$emit
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
waitForRequests
=
({
andClearMocks
}
=
{
andClearMocks
:
false
})
=>
...
...
@@ -219,12 +219,11 @@ describe('Ref selector component', () => {
return
waitForRequests
();
});
it
(
'
renders the updated ref name
'
,
()
=>
{
it
(
'
renders the updated ref name
'
,
async
()
=>
{
wrapper
.
setProps
({
value
:
updatedRef
});
return
nextTick
().
then
(()
=>
{
expect
(
findButtonContent
().
text
()).
toBe
(
updatedRef
);
});
await
nextTick
();
expect
(
findButtonContent
().
text
()).
toBe
(
updatedRef
);
});
});
...
...
@@ -546,9 +545,8 @@ describe('Ref selector component', () => {
await
selectFirstBranch
();
return
nextTick
().
then
(()
=>
{
expect
(
findButtonContent
().
text
()).
toBe
(
fixtures
.
branches
[
0
].
name
);
});
await
nextTick
();
expect
(
findButtonContent
().
text
()).
toBe
(
fixtures
.
branches
[
0
].
name
);
});
it
(
"
updates the v-model binding with the branch's name
"
,
async
()
=>
{
...
...
@@ -566,9 +564,8 @@ describe('Ref selector component', () => {
await
selectFirstTag
();
return
nextTick
().
then
(()
=>
{
expect
(
findButtonContent
().
text
()).
toBe
(
fixtures
.
tags
[
0
].
name
);
});
await
nextTick
();
expect
(
findButtonContent
().
text
()).
toBe
(
fixtures
.
tags
[
0
].
name
);
});
it
(
"
updates the v-model binding with the tag's name
"
,
async
()
=>
{
...
...
@@ -586,9 +583,8 @@ describe('Ref selector component', () => {
await
selectFirstCommit
();
return
nextTick
().
then
(()
=>
{
expect
(
findButtonContent
().
text
()).
toBe
(
fixtures
.
commit
.
id
);
});
await
nextTick
();
expect
(
findButtonContent
().
text
()).
toBe
(
fixtures
.
commit
.
id
);
});
it
(
"
updates the v-model binding with the commit's full SHA
"
,
async
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/related_issues/components/related_issuable_input_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
import
RelatedIssuableInput
from
'
~/related_issues/components/related_issuable_input.vue
'
;
import
{
issuableTypesMap
,
PathIdSeparator
}
from
'
~/related_issues/constants
'
;
...
...
@@ -82,7 +83,7 @@ describe('RelatedIssuableInput', () => {
wrapper
.
find
(
'
li
'
).
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
document
.
activeElement
).
toBe
(
wrapper
.
find
({
ref
:
'
input
'
}).
element
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/app_edit_new_spec.js
View file @
ff36ae26
...
...
@@ -3,6 +3,7 @@ import axios from 'axios';
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
merge
}
from
'
lodash
'
;
import
Vuex
from
'
vuex
'
;
import
{
nextTick
}
from
'
vue
'
;
import
originalRelease
from
'
test_fixtures/api/releases/release.json
'
;
import
setWindowLocation
from
'
helpers/set_window_location_helper
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
...
...
@@ -71,7 +72,7 @@ describe('Release edit/new component', () => {
},
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
element
.
querySelectorAll
(
'
input
'
).
forEach
((
input
)
=>
jest
.
spyOn
(
input
,
'
focus
'
));
};
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/app_index_apollo_client_spec.js
View file @
ff36ae26
import
{
cloneDeep
}
from
'
lodash
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
originalAllReleasesQueryResponse
from
'
test_fixtures/graphql/releases/graphql/queries/all_releases.query.graphql.json
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
...
...
@@ -296,7 +296,7 @@ describe('app_index_apollo_client.vue', () => {
mockQueryParams
=
{
after
};
findPagination
().
vm
.
$emit
(
'
next
'
,
after
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
queryMock
.
mock
.
calls
).
toEqual
([
[
expect
.
objectContaining
({
before
})],
...
...
@@ -321,7 +321,7 @@ describe('app_index_apollo_client.vue', () => {
it
(
'
requeries the GraphQL endpoint and updates the URL when the sort is changed
'
,
async
()
=>
{
findSort
().
vm
.
$emit
(
'
input
'
,
CREATED_ASC
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
queryMock
.
mock
.
calls
).
toEqual
([
[
expect
.
objectContaining
({
sort
:
DEFAULT_SORT
})],
...
...
@@ -337,7 +337,7 @@ describe('app_index_apollo_client.vue', () => {
it
(
'
does not requery the GraphQL endpoint or update the URL if the sort is updated to the same value
'
,
async
()
=>
{
findSort
().
vm
.
$emit
(
'
input
'
,
DEFAULT_SORT
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
queryMock
.
mock
.
calls
).
toEqual
([
[
expect
.
objectContaining
({
sort
:
DEFAULT_SORT
})],
...
...
@@ -370,7 +370,7 @@ describe('app_index_apollo_client.vue', () => {
findSort
().
vm
.
$emit
(
'
input
'
,
CREATED_ASC
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
`resets the page's "
${
paramName
}
" pagination cursor when the sort is changed`
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/evidence_block_spec.js
View file @
ff36ae26
import
{
GlLink
,
GlIcon
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
originalRelease
from
'
test_fixtures/api/releases/release.json
'
;
import
{
convertObjectPropsToCamelCase
}
from
'
~/lib/utils/common_utils
'
;
import
{
truncateSha
}
from
'
~/lib/utils/text_utility
'
;
...
...
@@ -51,12 +52,11 @@ describe('Evidence Block', () => {
expect
(
wrapper
.
find
(
'
.js-short
'
).
text
()).
toBe
(
truncateSha
(
release
.
evidences
[
0
].
sha
));
});
it
(
'
renders the long sha after expansion
'
,
()
=>
{
it
(
'
renders the long sha after expansion
'
,
async
()
=>
{
wrapper
.
find
(
'
.js-text-expander-prepend
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
wrapper
.
find
(
'
.js-expanded
'
).
text
()).
toBe
(
release
.
evidences
[
0
].
sha
);
});
await
nextTick
();
expect
(
wrapper
.
find
(
'
.js-expanded
'
).
text
()).
toBe
(
release
.
evidences
[
0
].
sha
);
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/release_block_footer_spec.js
View file @
ff36ae26
import
{
GlLink
,
GlIcon
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
cloneDeep
}
from
'
lodash
'
;
import
{
nextTick
}
from
'
vue
'
;
import
originalRelease
from
'
test_fixtures/api/releases/release.json
'
;
import
{
trimText
}
from
'
helpers/text_helper
'
;
import
{
convertObjectPropsToCamelCase
}
from
'
~/lib/utils/common_utils
'
;
...
...
@@ -14,7 +15,7 @@ describe('Release block footer', () => {
let
wrapper
;
let
release
;
const
factory
=
(
props
=
{})
=>
{
const
factory
=
async
(
props
=
{})
=>
{
wrapper
=
mount
(
ReleaseBlockFooter
,
{
propsData
:
{
...
convertObjectPropsToCamelCase
(
release
,
{
deep
:
true
}),
...
...
@@ -22,7 +23,7 @@ describe('Release block footer', () => {
},
});
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
beforeEach
(()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/release_block_milestone_info_spec.js
View file @
ff36ae26
import
{
GlProgressBar
,
GlLink
,
GlBadge
,
GlButton
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
originalRelease
from
'
test_fixtures/api/releases/release.json
'
;
import
{
trimText
}
from
'
helpers/text_helper
'
;
import
{
convertObjectPropsToCamelCase
}
from
'
~/lib/utils/common_utils
'
;
...
...
@@ -12,12 +13,12 @@ describe('Release block milestone info', () => {
let
wrapper
;
let
milestones
;
const
factory
=
(
props
)
=>
{
const
factory
=
async
(
props
)
=>
{
wrapper
=
mount
(
ReleaseBlockMilestoneInfo
,
{
propsData
:
props
,
});
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
beforeEach
(()
=>
{
...
...
@@ -105,10 +106,10 @@ describe('Release block milestone info', () => {
return
factory
({
milestones
:
lotsOfMilestones
});
});
const
clickShowMoreFewerButton
=
()
=>
{
const
clickShowMoreFewerButton
=
async
()
=>
{
milestoneListContainer
().
find
(
GlButton
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
milestoneListText
=
()
=>
trimText
(
milestoneListContainer
().
text
());
...
...
@@ -117,19 +118,16 @@ describe('Release block milestone info', () => {
expect
(
milestoneListText
()).
toContain
(
`Milestones
${
abbreviatedListString
}
• show 10 more`
);
});
it
(
'
renders all milestones when "show more" is clicked
'
,
()
=>
clickShowMoreFewerButton
().
then
(()
=>
{
expect
(
milestoneListText
()).
toContain
(
`Milestones
${
fullListString
}
• show fewer`
);
})
);
it
(
'
renders all milestones when "show more" is clicked
'
,
async
()
=>
{
await
clickShowMoreFewerButton
();
expect
(
milestoneListText
()).
toContain
(
`Milestones
${
fullListString
}
• show fewer`
);
}
);
it
(
'
returns to the original view when "show fewer" is clicked
'
,
()
=>
clickShowMoreFewerButton
()
.
then
(
clickShowMoreFewerButton
)
.
then
(()
=>
{
expect
(
milestoneListText
()).
toContain
(
`Milestones
${
abbreviatedListString
}
• show 10 more`
,
);
}));
it
(
'
returns to the original view when "show fewer" is clicked
'
,
async
()
=>
{
await
clickShowMoreFewerButton
();
await
clickShowMoreFewerButton
();
expect
(
milestoneListText
()).
toContain
(
`Milestones
${
abbreviatedListString
}
• show 10 more`
);
});
});
const
expectAllZeros
=
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/release_block_spec.js
View file @
ff36ae26
import
{
mount
}
from
'
@vue/test-utils
'
;
import
$
from
'
jquery
'
;
import
{
nextTick
}
from
'
vue
'
;
import
originalRelease
from
'
test_fixtures/api/releases/release.json
'
;
import
*
as
commonUtils
from
'
~/lib/utils/common_utils
'
;
import
*
as
urlUtility
from
'
~/lib/utils/url_utility
'
;
...
...
@@ -13,7 +14,7 @@ describe('Release block', () => {
let
wrapper
;
let
release
;
const
factory
=
(
releaseProp
,
featureFlags
=
{})
=>
{
const
factory
=
async
(
releaseProp
,
featureFlags
=
{})
=>
{
wrapper
=
mount
(
ReleaseBlock
,
{
propsData
:
{
release
:
releaseProp
,
...
...
@@ -25,7 +26,7 @@ describe('Release block', () => {
},
});
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
milestoneListLabel
=
()
=>
wrapper
.
find
(
'
.js-milestone-list-label
'
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/releases/components/tag_field_new_spec.js
View file @
ff36ae26
import
{
GlDropdownItem
}
from
'
@gitlab/ui
'
;
import
{
mount
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
{
__
}
from
'
~/locale
'
;
import
TagFieldNew
from
'
~/releases/components/tag_field_new.vue
'
;
import
createStore
from
'
~/releases/stores
'
;
...
...
@@ -153,7 +153,7 @@ describe('releases/components/tag_field_new', () => {
* Should be passed either 'shown' or 'hidden'
*/
const
expectValidationMessageToBe
=
async
(
state
)
=>
{
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findTagNameFormGroup
().
element
).
toHaveClass
(
state
===
'
shown
'
?
'
is-invalid
'
:
'
is-valid
'
,
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/repository/components/breadcrumbs_spec.js
View file @
ff36ae26
import
{
GlDropdown
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
,
RouterLinkStub
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
Breadcrumbs
from
'
~/repository/components/breadcrumbs.vue
'
;
import
UploadBlobModal
from
'
~/repository/components/upload_blob_modal.vue
'
;
import
NewDirectoryModal
from
'
~/repository/components/new_directory_modal.vue
'
;
...
...
@@ -79,7 +80,7 @@ describe('Repository breadcrumbs component', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
userPermissions
:
{
forkProject
:
false
,
createMergeRequestIn
:
false
}
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlDropdown
).
exists
()).
toBe
(
false
);
});
...
...
@@ -106,7 +107,7 @@ describe('Repository breadcrumbs component', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
userPermissions
:
{
forkProject
:
true
,
createMergeRequestIn
:
true
}
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlDropdown
).
exists
()).
toBe
(
true
);
});
...
...
@@ -125,7 +126,7 @@ describe('Repository breadcrumbs component', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
$apollo
:
{
queries
:
{
userPermissions
:
{
loading
:
false
}
}
}
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findUploadBlobModal
().
exists
()).
toBe
(
true
);
});
...
...
@@ -149,7 +150,7 @@ describe('Repository breadcrumbs component', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
$apollo
:
{
queries
:
{
userPermissions
:
{
loading
:
false
}
}
}
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findNewDirectoryModal
().
exists
()).
toBe
(
true
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/repository/components/upload_blob_modal_spec.js
View file @
ff36ae26
...
...
@@ -2,6 +2,7 @@ import { GlModal, GlFormInput, GlFormTextarea, GlToggle, GlAlert } from '@gitlab
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
axios
from
'
axios
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
createFlash
from
'
~/flash
'
;
import
httpStatusCodes
from
'
~/lib/utils/http_status
'
;
...
...
@@ -113,7 +114,7 @@ describe('UploadBlobModal', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
target
:
'
Not main
'
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findMrToggle
().
exists
()).
toBe
(
true
);
});
...
...
@@ -202,7 +203,7 @@ describe('UploadBlobModal', () => {
wrapper
.
vm
.
uploadFile
=
jest
.
fn
();
wrapper
.
vm
.
replaceFile
=
jest
.
fn
();
wrapper
.
vm
.
submitForm
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
submitRequest
=
async
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/serverless/survey_banner_spec.js
View file @
ff36ae26
import
{
GlBanner
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
Cookies
from
'
js-cookie
'
;
import
{
nextTick
}
from
'
vue
'
;
import
SurveyBanner
from
'
~/serverless/survey_banner.vue
'
;
describe
(
'
Knative survey banner
'
,
()
=>
{
...
...
@@ -27,7 +28,7 @@ describe('Knative survey banner', () => {
expect
(
wrapper
.
find
(
GlBanner
).
exists
()).
toBe
(
true
);
});
it
(
'
should close the banner and set a cookie when close button is clicked
'
,
()
=>
{
it
(
'
should close the banner and set a cookie when close button is clicked
'
,
async
()
=>
{
jest
.
spyOn
(
Cookies
,
'
get
'
).
mockReturnValue
(
undefined
);
jest
.
spyOn
(
Cookies
,
'
set
'
);
mountBanner
();
...
...
@@ -35,10 +36,9 @@ describe('Knative survey banner', () => {
expect
(
wrapper
.
find
(
GlBanner
).
exists
()).
toBe
(
true
);
wrapper
.
find
(
GlBanner
).
vm
.
$emit
(
'
close
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
Cookies
.
set
).
toHaveBeenCalledWith
(
'
hide_serverless_survey
'
,
'
true
'
,
{
expires
:
3650
});
expect
(
wrapper
.
find
(
GlBanner
).
exists
()).
toBe
(
false
);
});
await
nextTick
();
expect
(
Cookies
.
set
).
toHaveBeenCalledWith
(
'
hide_serverless_survey
'
,
'
true
'
,
{
expires
:
3650
});
expect
(
wrapper
.
find
(
GlBanner
).
exists
()).
toBe
(
false
);
});
it
(
'
should not render the banner when the cookie is set
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/set_status_modal/set_status_modal_wrapper_spec.js
View file @
ff36ae26
import
{
GlModal
,
GlFormCheckbox
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
initEmojiMock
,
clearEmojiMock
}
from
'
helpers/emoji
'
;
import
*
as
UserApi
from
'
~/api/user_api
'
;
import
EmojiPicker
from
'
~/emoji/components/picker.vue
'
;
...
...
@@ -48,7 +49,7 @@ describe('SetStatusModalWrapper', () => {
const
findAvailabilityCheckbox
=
()
=>
wrapper
.
find
(
GlFormCheckbox
);
const
findClearStatusAtMessage
=
()
=>
wrapper
.
find
(
'
[data-testid="clear-status-at-message"]
'
);
const
initModal
=
({
mockOnUpdateSuccess
=
true
,
mockOnUpdateFailure
=
true
}
=
{})
=>
{
const
initModal
=
async
({
mockOnUpdateSuccess
=
true
,
mockOnUpdateFailure
=
true
}
=
{})
=>
{
const
modal
=
findModal
();
// mock internal emoji methods
wrapper
.
vm
.
showEmojiMenu
=
jest
.
fn
();
...
...
@@ -57,7 +58,7 @@ describe('SetStatusModalWrapper', () => {
if
(
mockOnUpdateFailure
)
wrapper
.
vm
.
onUpdateFail
=
jest
.
fn
();
modal
.
vm
.
$emit
(
'
shown
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
afterEach
(()
=>
{
...
...
@@ -207,7 +208,7 @@ describe('SetStatusModalWrapper', () => {
it
(
'
clicking "removeStatus" clears the emoji and message fields
'
,
async
()
=>
{
findModal
().
vm
.
$emit
(
'
secondary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findFormField
(
'
message
'
).
element
.
value
).
toBe
(
''
);
expect
(
findFormField
(
'
emoji
'
).
element
.
value
).
toBe
(
''
);
...
...
@@ -215,7 +216,7 @@ describe('SetStatusModalWrapper', () => {
it
(
'
clicking "setStatus" submits the user status
'
,
async
()
=>
{
findModal
().
vm
.
$emit
(
'
primary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
// set the availability status
findAvailabilityCheckbox
().
vm
.
$emit
(
'
input
'
,
true
);
...
...
@@ -224,7 +225,7 @@ describe('SetStatusModalWrapper', () => {
wrapper
.
find
(
'
[data-testid="thirtyMinutes"]
'
).
vm
.
$emit
(
'
click
'
);
findModal
().
vm
.
$emit
(
'
primary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
const
commonParams
=
{
emoji
:
defaultEmoji
,
...
...
@@ -246,7 +247,7 @@ describe('SetStatusModalWrapper', () => {
it
(
'
calls the "onUpdateSuccess" handler
'
,
async
()
=>
{
findModal
().
vm
.
$emit
(
'
primary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
vm
.
onUpdateSuccess
).
toHaveBeenCalled
();
});
...
...
@@ -262,7 +263,7 @@ describe('SetStatusModalWrapper', () => {
it
(
'
displays a toast success message
'
,
async
()
=>
{
findModal
().
vm
.
$emit
(
'
primary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
$toast
.
show
).
toHaveBeenCalledWith
(
'
Status updated
'
);
});
...
...
@@ -279,7 +280,7 @@ describe('SetStatusModalWrapper', () => {
it
(
'
calls the "onUpdateFail" handler
'
,
async
()
=>
{
findModal
().
vm
.
$emit
(
'
primary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
vm
.
onUpdateFail
).
toHaveBeenCalled
();
});
...
...
@@ -295,7 +296,7 @@ describe('SetStatusModalWrapper', () => {
it
(
'
flashes an error message
'
,
async
()
=>
{
findModal
().
vm
.
$emit
(
'
primary
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
createFlash
).
toHaveBeenCalledWith
({
message
:
"
Sorry, we weren't able to set your status. Please try again later.
"
,
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/assignees_spec.js
View file @
ff36ae26
import
{
GlIcon
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
trimText
}
from
'
helpers/text_helper
'
;
import
UsersMockHelper
from
'
helpers/user_mock_data_helper
'
;
import
Assignee
from
'
~/sidebar/components/assignees/assignees.vue
'
;
...
...
@@ -59,7 +60,7 @@ describe('Assignee component', () => {
expect
(
componentTextNoUsers
).
toContain
(
'
assign yourself
'
);
});
it
(
'
emits the assign-self event when "assign yourself" is clicked
'
,
()
=>
{
it
(
'
emits the assign-self event when "assign yourself" is clicked
'
,
async
()
=>
{
createWrapper
({
...
getDefaultProps
(),
editable
:
true
,
...
...
@@ -68,9 +69,8 @@ describe('Assignee component', () => {
jest
.
spyOn
(
wrapper
.
vm
,
'
$emit
'
);
wrapper
.
find
(
'
[data-testid="assign-yourself"]
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
wrapper
.
emitted
(
'
assign-self
'
)).
toBeTruthy
();
});
await
nextTick
();
expect
(
wrapper
.
emitted
(
'
assign-self
'
)).
toBeTruthy
();
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/components/assignees/sidebar_editable_item_spec.js
View file @
ff36ae26
import
{
GlLoadingIcon
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
SidebarEditableItem
from
'
~/sidebar/components/sidebar_editable_item.vue
'
;
describe
(
'
boards sidebar remove issue
'
,
()
=>
{
...
...
@@ -71,7 +72,7 @@ describe('boards sidebar remove issue', () => {
createComponent
({
canUpdate
:
true
,
slots
});
findEditButton
().
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
;
await
nextTick
;
expect
(
findCollapsed
().
isVisible
()).
toBe
(
false
);
expect
(
findExpanded
().
isVisible
()).
toBe
(
true
);
...
...
@@ -82,14 +83,14 @@ describe('boards sidebar remove issue', () => {
beforeEach
(
async
()
=>
{
createComponent
({
canUpdate
:
true
});
findEditButton
().
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
hides expanded section and displays collapsed section
'
,
async
()
=>
{
expect
(
findExpanded
().
isVisible
()).
toBe
(
true
);
document
.
body
.
click
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findCollapsed
().
isVisible
()).
toBe
(
true
);
expect
(
findExpanded
().
isVisible
()).
toBe
(
false
);
...
...
@@ -101,7 +102,7 @@ describe('boards sidebar remove issue', () => {
findEditButton
().
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
emitted
().
open
.
length
).
toBe
(
1
);
});
...
...
@@ -111,7 +112,7 @@ describe('boards sidebar remove issue', () => {
findEditButton
().
vm
.
$emit
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
vm
.
collapse
({
emitEvent
:
false
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/components/assignees/uncollapsed_assignee_list_spec.js
View file @
ff36ae26
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
TEST_HOST
}
from
'
helpers/test_constants
'
;
import
UsersMockHelper
from
'
helpers/user_mock_data_helper
'
;
import
AssigneeAvatarLink
from
'
~/sidebar/components/assignees/assignee_avatar_link.vue
'
;
...
...
@@ -84,10 +85,10 @@ describe('UncollapsedAssigneeList component', () => {
});
describe
(
'
when more button is clicked
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
findMoreButton
().
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
shows "show less" label
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/components/sidebar_dropdown_widget_spec.js
View file @
ff36ae26
...
...
@@ -11,6 +11,7 @@ import * as Sentry from '@sentry/browser';
import
{
createLocalVue
,
shallowMount
,
mount
}
from
'
@vue/test-utils
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
{
nextTick
}
from
'
vue
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
{
createMockDirective
,
getBinding
}
from
'
helpers/vue_mock_directive
'
;
import
{
extendedWrapper
}
from
'
helpers/vue_test_utils_helper
'
;
...
...
@@ -78,7 +79,7 @@ describe('SidebarDropdownWidget', () => {
// It then emits `shown` event in a watcher for `visible`
// Hence we need both of these:
await
waitForPromises
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
waitForApollo
=
async
()
=>
{
...
...
@@ -354,7 +355,7 @@ describe('SidebarDropdownWidget', () => {
});
it
(
`calls createFlash with "
${
expectedMsg
}
"`
,
async
()
=>
{
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
createFlash
).
toHaveBeenCalledWith
({
message
:
expectedMsg
,
captureError
:
true
,
...
...
@@ -377,7 +378,7 @@ describe('SidebarDropdownWidget', () => {
findSearchBox
().
vm
.
$emit
(
'
input
'
,
'
non existing milestones
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findDropdownText
().
text
()).
toBe
(
'
No milestone found
'
);
});
...
...
@@ -482,7 +483,7 @@ describe('SidebarDropdownWidget', () => {
it
(
'
sends a projectMilestones query with the entered search term "foo"
'
,
async
()
=>
{
findSearchBox
().
vm
.
$emit
(
'
input
'
,
mockSearchTerm
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
// Account for debouncing
jest
.
runAllTimers
();
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/components/time_tracking/time_tracker_spec.js
View file @
ff36ae26
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
stubTransition
}
from
'
helpers/stub_transition
'
;
import
{
createMockDirective
}
from
'
helpers/vue_mock_directive
'
;
import
TimeTracker
from
'
~/sidebar/components/time_tracking/time_tracker.vue
'
;
...
...
@@ -161,7 +162,7 @@ describe('Issuable Time Tracker', () => {
it
(
'
should show the correct tooltip text
'
,
async
()
=>
{
expect
(
findByTestId
(
'
timeTrackingComparisonPane
'
).
exists
()).
toBe
(
true
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findComparisonMeter
()).
toBe
(
'
Time remaining: 26h 23m
'
);
});
...
...
@@ -179,7 +180,7 @@ describe('Issuable Time Tracker', () => {
},
},
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
should display the human readable version of time estimated
'
,
()
=>
{
...
...
@@ -282,7 +283,7 @@ describe('Issuable Time Tracker', () => {
},
},
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
should not show the "Help" pane by default
'
,
()
=>
{
...
...
@@ -292,19 +293,19 @@ describe('Issuable Time Tracker', () => {
it
(
'
should show the "Help" pane when help button is clicked
'
,
async
()
=>
{
findHelpButton
().
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findByTestId
(
'
helpPane
'
).
exists
()).
toBe
(
true
);
});
it
(
'
should not show the "Help" pane when help button is clicked and then closed
'
,
async
()
=>
{
findHelpButton
().
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findByTestId
(
'
helpPane
'
).
exists
()).
toBe
(
true
);
findCloseHelpButton
().
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findByTestId
(
'
helpPane
'
).
exists
()).
toBe
(
false
);
});
...
...
@@ -315,7 +316,7 @@ describe('Issuable Time Tracker', () => {
it
(
'
refetches issuableTimeTracking query when eventHub emits `timeTracker:refresh` event
'
,
async
()
=>
{
SidebarEventHub
.
$emit
(
'
timeTracker:refresh
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
issuableTimeTrackingRefetchSpy
).
toHaveBeenCalled
();
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/components/todo_toggle/sidebar_todo_widget_spec.js
View file @
ff36ae26
import
{
GlIcon
,
GlButton
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
...
...
@@ -119,7 +119,7 @@ describe('Sidebar Todo Widget', () => {
it
(
'
emits `todoUpdated` event on click on icon
'
,
async
()
=>
{
wrapper
.
find
(
GlIcon
).
vm
.
$emit
(
'
click
'
,
event
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
emitted
(
'
todoUpdated
'
)).
toEqual
([[
false
]]);
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/lock/edit_form_buttons_spec.js
View file @
ff36ae26
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
createFlash
from
'
~/flash
'
;
import
{
createStore
as
createMrStore
}
from
'
~/mr_notes/stores
'
;
import
createStore
from
'
~/notes/stores
'
;
...
...
@@ -118,15 +119,13 @@ describe('EditFormButtons', () => {
});
it
(
'
resets loading
'
,
async
()
=>
{
await
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findLockToggle
().
props
(
'
loading
'
)).
toBe
(
false
);
});
await
nextTick
();
expect
(
findLockToggle
().
props
(
'
loading
'
)).
toBe
(
false
);
});
it
(
'
emits close form
'
,
()
=>
{
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
eventHub
.
$emit
).
toHaveBeenCalledWith
(
'
closeLockForm
'
);
});
it
(
'
emits close form
'
,
async
()
=>
{
await
nextTick
();
expect
(
eventHub
.
$emit
).
toHaveBeenCalledWith
(
'
closeLockForm
'
);
});
it
(
'
does not flash an error message
'
,
()
=>
{
...
...
@@ -153,15 +152,13 @@ describe('EditFormButtons', () => {
});
it
(
'
resets loading
'
,
async
()
=>
{
await
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findLockToggle
().
props
(
'
loading
'
)).
toBe
(
false
);
});
await
nextTick
();
expect
(
findLockToggle
().
props
(
'
loading
'
)).
toBe
(
false
);
});
it
(
'
emits close form
'
,
()
=>
{
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
eventHub
.
$emit
).
toHaveBeenCalledWith
(
'
closeLockForm
'
);
});
it
(
'
emits close form
'
,
async
()
=>
{
await
nextTick
();
expect
(
eventHub
.
$emit
).
toHaveBeenCalledWith
(
'
closeLockForm
'
);
});
it
(
'
calls flash with the correct message
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/lock/issuable_lock_form_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
mockTracking
,
triggerEvent
}
from
'
helpers/tracking_helper
'
;
import
{
createMockDirective
,
getBinding
}
from
'
helpers/vue_mock_directive
'
;
import
{
createStore
as
createMrStore
}
from
'
~/mr_notes/stores
'
;
...
...
@@ -80,13 +81,12 @@ describe('IssuableLockForm', () => {
});
describe
(
'
when not editable
'
,
()
=>
{
it
(
'
does not display the edit form when opened if not editable
'
,
()
=>
{
it
(
'
does not display the edit form when opened if not editable
'
,
async
()
=>
{
expect
(
findEditForm
().
exists
()).
toBe
(
false
);
findSidebarCollapseIcon
().
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findEditForm
().
exists
()).
toBe
(
false
);
});
await
nextTick
();
expect
(
findEditForm
().
exists
()).
toBe
(
false
);
});
});
...
...
@@ -102,13 +102,12 @@ describe('IssuableLockForm', () => {
});
describe
(
"
when 'Edit' is clicked
"
,
()
=>
{
it
(
'
displays the edit form when editable
'
,
()
=>
{
it
(
'
displays the edit form when editable
'
,
async
()
=>
{
expect
(
findEditForm
().
exists
()).
toBe
(
false
);
findEditLink
().
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findEditForm
().
exists
()).
toBe
(
true
);
});
await
nextTick
();
expect
(
findEditForm
().
exists
()).
toBe
(
true
);
});
it
(
'
tracks the event
'
,
()
=>
{
...
...
@@ -123,13 +122,12 @@ describe('IssuableLockForm', () => {
});
describe
(
'
When sidebar is collapsed
'
,
()
=>
{
it
(
'
displays the edit form when opened
'
,
()
=>
{
it
(
'
displays the edit form when opened
'
,
async
()
=>
{
expect
(
findEditForm
().
exists
()).
toBe
(
false
);
findSidebarCollapseIcon
().
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findEditForm
().
exists
()).
toBe
(
true
);
});
await
nextTick
();
expect
(
findEditForm
().
exists
()).
toBe
(
true
);
});
it
(
'
renders a tooltip with the lock status text
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/sidebar_assignees_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
axios
from
'
axios
'
;
import
AxiosMockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
Assigness
from
'
~/sidebar/components/assignees/assignees.vue
'
;
import
AssigneesRealtime
from
'
~/sidebar/components/assignees/assignees_realtime.vue
'
;
import
SidebarAssignees
from
'
~/sidebar/components/assignees/sidebar_assignees.vue
'
;
...
...
@@ -74,16 +75,15 @@ describe('sidebar assignees', () => {
expect
(
mediator
.
store
.
assignees
.
length
).
toBe
(
1
);
});
it
(
'
hides assignees until fetched
'
,
()
=>
{
it
(
'
hides assignees until fetched
'
,
async
()
=>
{
createComponent
();
expect
(
wrapper
.
find
(
Assigness
).
exists
()).
toBe
(
false
);
wrapper
.
vm
.
store
.
isFetching
.
assignees
=
false
;
return
wrapper
.
vm
.
$nextTick
(()
=>
{
expect
(
wrapper
.
find
(
Assigness
).
exists
()).
toBe
(
true
);
});
await
nextTick
();
expect
(
wrapper
.
find
(
Assigness
).
exists
()).
toBe
(
true
);
});
describe
(
'
when realTimeIssueSidebar is turned on
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/sidebar/todo_spec.js
View file @
ff36ae26
import
{
GlLoadingIcon
,
GlIcon
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
SidebarTodos
from
'
~/sidebar/components/todo_toggle/todo.vue
'
;
const
defaultProps
=
{
...
...
@@ -49,13 +50,12 @@ describe('SidebarTodo', () => {
);
describe
(
'
template
'
,
()
=>
{
it
(
'
emits `toggleTodo` event when clicked on button
'
,
()
=>
{
it
(
'
emits `toggleTodo` event when clicked on button
'
,
async
()
=>
{
createComponent
();
wrapper
.
find
(
'
button
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
wrapper
.
emitted
().
toggleTodo
).
toBeTruthy
();
});
await
nextTick
();
expect
(
wrapper
.
emitted
().
toggleTodo
).
toBeTruthy
();
});
it
(
'
renders component container element with proper data attributes
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/snippets/components/snippet_blob_actions_edit_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
times
}
from
'
lodash
'
;
import
{
nextTick
}
from
'
vue
'
;
import
SnippetBlobActionsEdit
from
'
~/snippets/components/snippet_blob_actions_edit.vue
'
;
import
SnippetBlobEdit
from
'
~/snippets/components/snippet_blob_edit.vue
'
;
import
{
...
...
@@ -193,7 +194,7 @@ describe('snippets/components/snippet_blob_actions_edit', () => {
it
(
'
emits an action when content changes again
'
,
async
()
=>
{
triggerBlobUpdate
(
0
,
{
content
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
getLastActions
()).
toEqual
([
testEntries
.
updated
.
diff
]);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/snippets/components/snippet_header_spec.js
View file @
ff36ae26
...
...
@@ -2,6 +2,7 @@ import { GlButton, GlModal, GlDropdown } from '@gitlab/ui';
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
ApolloMutation
}
from
'
vue-apollo
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
useMockLocationHelper
}
from
'
helpers/mock_window_location_helper
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
{
Blob
,
BinaryBlob
}
from
'
jest/blob/components/mock_data
'
;
...
...
@@ -245,7 +246,7 @@ describe('Snippet header component', () => {
// setData usage is discouraged. See https://gitlab.com/groups/gitlab-org/-/epics/7330 for details
// eslint-disable-next-line no-restricted-syntax
wrapper
.
setData
({
canCreateSnippet
:
true
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findButtonsAsModel
()).
toEqual
(
expect
.
arrayContaining
([
...
...
@@ -348,33 +349,31 @@ describe('Snippet header component', () => {
describe
(
'
in case of successful mutation, closes modal and redirects to correct listing
'
,
()
=>
{
useMockLocationHelper
();
const
createDeleteSnippet
=
(
snippetProps
=
{})
=>
{
const
createDeleteSnippet
=
async
(
snippetProps
=
{})
=>
{
createComponent
({
snippetProps
,
});
wrapper
.
vm
.
closeDeleteModal
=
jest
.
fn
();
wrapper
.
vm
.
deleteSnippet
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
it
(
'
redirects to dashboard/snippets for personal snippet
'
,
()
=>
{
return
createDeleteSnippet
().
then
(()
=>
{
expect
(
wrapper
.
vm
.
closeDeleteModal
).
toHaveBeenCalled
();
expect
(
window
.
location
.
pathname
).
toBe
(
`
${
gon
.
relative_url_root
}
dashboard/snippets`
);
});
it
(
'
redirects to dashboard/snippets for personal snippet
'
,
async
()
=>
{
await
createDeleteSnippet
();
expect
(
wrapper
.
vm
.
closeDeleteModal
).
toHaveBeenCalled
();
expect
(
window
.
location
.
pathname
).
toBe
(
`
${
gon
.
relative_url_root
}
dashboard/snippets`
);
});
it
(
'
redirects to project snippets for project snippet
'
,
()
=>
{
it
(
'
redirects to project snippets for project snippet
'
,
async
()
=>
{
const
fullPath
=
'
foo/bar
'
;
return
createDeleteSnippet
({
await
createDeleteSnippet
({
project
:
{
fullPath
,
},
}).
then
(()
=>
{
expect
(
wrapper
.
vm
.
closeDeleteModal
).
toHaveBeenCalled
();
expect
(
window
.
location
.
pathname
).
toBe
(
`
${
fullPath
}
/-/snippets`
);
});
expect
(
wrapper
.
vm
.
closeDeleteModal
).
toHaveBeenCalled
();
expect
(
window
.
location
.
pathname
).
toBe
(
`
${
fullPath
}
/-/snippets`
);
});
});
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/static_site_editor/components/edit_meta_controls_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlDropdownItem
,
GlFormInput
,
GlFormTextarea
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
EditMetaControls
from
'
~/static_site_editor/components/edit_meta_controls.vue
'
;
import
{
mergeRequestMeta
,
mergeRequestTemplates
}
from
'
../mock_data
'
;
...
...
@@ -38,11 +39,11 @@ describe('~/static_site_editor/components/edit_meta_controls.vue', () => {
const
findGlFormTextAreaDescription
=
()
=>
wrapper
.
find
(
GlFormTextarea
);
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
buildWrapper
();
buildMocks
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
afterEach
(()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/static_site_editor/components/edit_meta_modal_spec.js
View file @
ff36ae26
import
{
GlModal
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
MockAdapter
from
'
axios-mock-adapter
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
useLocalStorageSpy
}
from
'
helpers/local_storage_helper
'
;
import
axios
from
'
~/lib/utils/axios_utils
'
;
import
EditMetaControls
from
'
~/static_site_editor/components/edit_meta_controls.vue
'
;
...
...
@@ -50,14 +51,14 @@ describe('~/static_site_editor/components/edit_meta_modal.vue', () => {
const
findEditMetaControls
=
()
=>
wrapper
.
find
(
EditMetaControls
);
const
findLocalStorageSync
=
()
=>
wrapper
.
find
(
LocalStorageSync
);
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
localStorage
.
setItem
(
MR_META_LOCAL_STORAGE_KEY
);
buildMockAxios
();
buildWrapper
();
buildMockRefs
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
afterEach
(()
=>
{
...
...
@@ -77,7 +78,7 @@ describe('~/static_site_editor/components/edit_meta_modal.vue', () => {
findLocalStorageSync
().
vm
.
$emit
(
'
input
'
,
localStorageMeta
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findEditMetaControls
().
props
()).
toEqual
(
localStorageMeta
);
});
...
...
@@ -134,13 +135,13 @@ describe('~/static_site_editor/components/edit_meta_modal.vue', () => {
it
(
'
sets the currentTemplate on the changeTemplate event
'
,
async
()
=>
{
findEditMetaControls
().
vm
.
$emit
(
'
changeTemplate
'
,
template1
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findEditMetaControls
().
props
().
currentTemplate
).
toBe
(
template1
);
findEditMetaControls
().
vm
.
$emit
(
'
changeTemplate
'
,
null
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findEditMetaControls
().
props
().
currentTemplate
).
toBe
(
null
);
});
...
...
@@ -148,7 +149,7 @@ describe('~/static_site_editor/components/edit_meta_modal.vue', () => {
it
(
'
updates the description on the changeTemplate event
'
,
async
()
=>
{
findEditMetaControls
().
vm
.
$emit
(
'
changeTemplate
'
,
template1
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findEditMetaControls
().
props
().
description
).
toEqual
(
template1
.
content
);
});
...
...
@@ -164,7 +165,7 @@ describe('~/static_site_editor/components/edit_meta_modal.vue', () => {
findEditMetaControls
().
vm
.
$emit
(
'
updateSettings
'
,
newMeta
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
findLocalStorageSync
().
props
(
'
value
'
)).
toEqual
(
newMeta
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/static_site_editor/pages/home_spec.js
View file @
ff36ae26
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
mockTracking
,
unmockTracking
}
from
'
helpers/tracking_helper
'
;
import
EditArea
from
'
~/static_site_editor/components/edit_area.vue
'
;
import
EditMetaModal
from
'
~/static_site_editor/components/edit_meta_modal.vue
'
;
...
...
@@ -179,7 +180,7 @@ describe('static_site_editor/pages/home', () => {
});
describe
(
'
when preparing submission
'
,
()
=>
{
it
(
'
calls the show method when the edit-area submit event is emitted
'
,
()
=>
{
it
(
'
calls the show method when the edit-area submit event is emitted
'
,
async
()
=>
{
buildWrapper
();
const
mockInstance
=
{
show
:
jest
.
fn
()
};
...
...
@@ -187,9 +188,8 @@ describe('static_site_editor/pages/home', () => {
findEditArea
().
vm
.
$emit
(
'
submit
'
,
{
content
});
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
mockInstance
.
show
).
toHaveBeenCalled
();
});
await
nextTick
();
expect
(
mockInstance
.
show
).
toHaveBeenCalled
();
});
});
...
...
@@ -200,13 +200,13 @@ describe('static_site_editor/pages/home', () => {
.
mockRejectedValueOnce
(
new
Error
(
submitChangesError
));
};
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
setupMutateMock
();
buildWrapper
({
content
});
findEditMetaModal
().
vm
.
$emit
(
'
primary
'
,
mergeRequestMeta
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
displays submit changes error message
'
,
()
=>
{
...
...
@@ -221,12 +221,11 @@ describe('static_site_editor/pages/home', () => {
expect
(
mutateMock
).
toHaveBeenCalled
();
});
it
(
'
hides submit changes error message when dismiss button is clicked
'
,
()
=>
{
it
(
'
hides submit changes error message when dismiss button is clicked
'
,
async
()
=>
{
findSubmitChangesError
().
vm
.
$emit
(
'
dismiss
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
findSubmitChangesError
().
exists
()).
toBe
(
false
);
});
await
nextTick
();
expect
(
findSubmitChangesError
().
exists
()).
toBe
(
false
);
});
});
...
...
@@ -234,7 +233,7 @@ describe('static_site_editor/pages/home', () => {
const
newContent
=
`new
${
content
}
`
;
const
formattedMarkdown
=
`formatted
${
content
}
`
;
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
mutateMock
.
mockResolvedValueOnce
(
hasSubmittedChangesMutationPayload
).
mockResolvedValueOnce
({
data
:
{
submitContentChanges
:
savedContentMeta
,
...
...
@@ -249,7 +248,7 @@ describe('static_site_editor/pages/home', () => {
findEditMetaModal
().
vm
.
$emit
(
'
primary
'
,
mergeRequestMeta
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
dispatches hasSubmittedChanges mutation
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/terraform/components/states_table_actions_spec.js
View file @
ff36ae26
import
{
GlDropdown
,
GlModal
,
GlSprintf
}
from
'
@gitlab/ui
'
;
import
{
createLocalVue
,
shallowMount
}
from
'
@vue/test-utils
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
{
nextTick
}
from
'
vue
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
InitCommandModal
from
'
~/terraform/components/init_command_modal.vue
'
;
...
...
@@ -58,7 +59,7 @@ describe('StatesTableActions', () => {
);
};
const
createComponent
=
(
propsData
=
defaultProps
)
=>
{
const
createComponent
=
async
(
propsData
=
defaultProps
)
=>
{
const
apolloProvider
=
createMockApolloProvider
();
toast
=
jest
.
fn
();
...
...
@@ -71,7 +72,7 @@ describe('StatesTableActions', () => {
stubs
:
{
GlDropdown
,
GlModal
,
GlSprintf
},
});
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
findActionsDropdown
=
()
=>
wrapper
.
findComponent
(
GlDropdown
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/terraform/components/states_table_spec.js
View file @
ff36ae26
import
{
GlIcon
,
GlLoadingIcon
,
GlTooltip
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
useFakeDate
}
from
'
helpers/fake_date
'
;
import
StatesTable
from
'
~/terraform/components/states_table.vue
'
;
import
StateActions
from
'
~/terraform/components/states_table_actions.vue
'
;
...
...
@@ -106,9 +107,9 @@ describe('StatesTable', () => {
],
};
const
createComponent
=
(
propsData
=
defaultProps
)
=>
{
const
createComponent
=
async
(
propsData
=
defaultProps
)
=>
{
wrapper
=
mount
(
StatesTable
,
{
propsData
});
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
const
findActions
=
()
=>
wrapper
.
findAll
(
StateActions
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/tooltips/components/tooltips_spec.js
View file @
ff36ae26
import
{
GlTooltip
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
{
useMockMutationObserver
}
from
'
helpers/mock_dom_observer
'
;
import
Tooltips
from
'
~/tooltips/components/tooltips.vue
'
;
...
...
@@ -46,7 +47,7 @@ describe('tooltips/components/tooltips.vue', () => {
it
(
'
attaches tooltips to the targets specified
'
,
async
()
=>
{
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
props
(
'
target
'
)).
toBe
(
target
);
});
...
...
@@ -56,7 +57,7 @@ describe('tooltips/components/tooltips.vue', () => {
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
exists
()).
toBe
(
false
);
});
...
...
@@ -65,7 +66,7 @@ describe('tooltips/components/tooltips.vue', () => {
wrapper
.
vm
.
addTooltips
([
target
]);
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
findAll
(
GlTooltip
)).
toHaveLength
(
1
);
});
...
...
@@ -73,7 +74,7 @@ describe('tooltips/components/tooltips.vue', () => {
it
(
'
sets tooltip content from title attribute
'
,
async
()
=>
{
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
text
()).
toBe
(
target
.
getAttribute
(
'
title
'
));
});
...
...
@@ -85,7 +86,7 @@ describe('tooltips/components/tooltips.vue', () => {
});
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
html
()).
toContain
(
target
.
getAttribute
(
'
title
'
));
});
...
...
@@ -94,7 +95,7 @@ describe('tooltips/components/tooltips.vue', () => {
const
config
=
{
show
:
true
};
target
=
createTooltipTarget
();
wrapper
.
vm
.
addTooltips
([
target
],
config
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
props
()).
toMatchObject
(
config
);
});
...
...
@@ -110,7 +111,7 @@ describe('tooltips/components/tooltips.vue', () => {
target
=
createTooltipTarget
({
[
attribute
]:
value
});
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
props
(
prop
)).
toBe
(
value
);
},
...
...
@@ -124,10 +125,10 @@ describe('tooltips/components/tooltips.vue', () => {
it
(
'
removes all tooltips when elements is nil
'
,
async
()
=>
{
wrapper
.
vm
.
addTooltips
([
createTooltipTarget
(),
createTooltipTarget
()]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
vm
.
dispose
();
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
allTooltips
()).
toHaveLength
(
0
);
});
...
...
@@ -136,10 +137,10 @@ describe('tooltips/components/tooltips.vue', () => {
const
target
=
createTooltipTarget
();
wrapper
.
vm
.
addTooltips
([
target
,
createTooltipTarget
()]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
vm
.
dispose
(
target
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
allTooltips
()).
toHaveLength
(
1
);
});
...
...
@@ -154,13 +155,13 @@ describe('tooltips/components/tooltips.vue', () => {
const
target
=
createTooltipTarget
();
wrapper
.
vm
.
addTooltips
([
target
,
createTooltipTarget
()]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
triggerMutate
(
document
.
body
,
{
entry
:
{
removedNodes
:
[
target
]
},
options
:
{
childList
:
true
},
});
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
allTooltips
()).
toHaveLength
(
1
);
});
...
...
@@ -175,7 +176,7 @@ describe('tooltips/components/tooltips.vue', () => {
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
vm
.
triggerEvent
(
target
,
event
);
...
...
@@ -195,14 +196,14 @@ describe('tooltips/components/tooltips.vue', () => {
wrapper
.
vm
.
addTooltips
([
target
]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
text
()).
toBe
(
currentTitle
);
target
.
setAttribute
(
'
title
'
,
newTitle
);
wrapper
.
vm
.
fixTitle
(
target
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
GlTooltip
).
text
()).
toBe
(
newTitle
);
});
...
...
@@ -225,7 +226,7 @@ describe('tooltips/components/tooltips.vue', () => {
buildWrapper
();
wrapper
.
vm
.
addTooltips
([
createTooltipTarget
()]);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
findComponent
(
GlTooltip
).
vm
.
$emit
(
'
hidden
'
);
expect
(
wrapper
.
emitted
(
'
hidden
'
)).
toHaveLength
(
1
);
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/user_lists/components/add_user_modal_spec.js
View file @
ff36ae26
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
nextTick
}
from
'
vue
'
;
import
AddUserModal
from
'
~/user_lists/components/add_user_modal.vue
'
;
describe
(
'
Add User Modal
'
,
()
=>
{
...
...
@@ -30,7 +31,7 @@ describe('Add User Modal', () => {
it
(
'
should clear the input after emitting
'
,
async
()
=>
{
click
(
'
confirm-add-user-ids
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
'
#add-user-ids
'
).
element
.
value
).
toBe
(
''
);
});
...
...
@@ -42,7 +43,7 @@ describe('Add User Modal', () => {
it
(
'
should clear the input after cancelling
'
,
async
()
=>
{
click
(
'
cancel-add-user-ids
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
wrapper
.
find
(
'
#add-user-ids
'
).
element
.
value
).
toBe
(
''
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/user_lists/components/edit_user_list_spec.js
View file @
ff36ae26
import
{
GlAlert
,
GlLoadingIcon
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
Api
from
'
~/api
'
;
...
...
@@ -77,11 +77,11 @@ describe('user_lists/components/edit_user_list', () => {
});
describe
(
'
update
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
Api
.
fetchFeatureFlagUserList
.
mockResolvedValue
({
data
:
userList
});
factory
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
should link to the documentation
'
,
()
=>
{
...
...
@@ -99,11 +99,11 @@ describe('user_lists/components/edit_user_list', () => {
});
describe
(
'
success
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
Api
.
updateFeatureFlagUserList
.
mockResolvedValue
({
data
:
userList
});
setInputValue
(
'
test
'
);
clickSave
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
should create a user list with the entered name
'
,
()
=>
{
...
...
@@ -139,7 +139,7 @@ describe('user_lists/components/edit_user_list', () => {
it
(
'
should dismiss the error if dismiss is clicked
'
,
async
()
=>
{
alert
.
find
(
'
button
'
).
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
alert
.
exists
()).
toBe
(
false
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/user_lists/components/new_user_list_spec.js
View file @
ff36ae26
import
{
GlAlert
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
Api
from
'
~/api
'
;
...
...
@@ -43,11 +43,11 @@ describe('user_lists/components/new_user_list', () => {
describe
(
'
create
'
,
()
=>
{
describe
(
'
success
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
Api
.
createFeatureFlagUserList
.
mockResolvedValue
({
data
:
userList
});
setInputValue
(
'
test
'
);
click
(
'
save-user-list
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
should create a user list with the entered name
'
,
()
=>
{
...
...
@@ -82,7 +82,7 @@ describe('user_lists/components/new_user_list', () => {
it
(
'
should dismiss the error when the dismiss button is clicked
'
,
async
()
=>
{
alert
.
find
(
'
button
'
).
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
alert
.
exists
()).
toBe
(
false
);
});
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/user_lists/components/user_list_spec.js
View file @
ff36ae26
import
{
GlAlert
,
GlEmptyState
,
GlLoadingIcon
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
{
uniq
}
from
'
lodash
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
Api
from
'
~/api
'
;
import
UserList
from
'
~/user_lists/components/user_list.vue
'
;
...
...
@@ -57,12 +57,12 @@ describe('User List', () => {
describe
(
'
success
'
,
()
=>
{
let
userIds
;
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
userIds
=
parseUserIds
(
userList
.
user_xids
);
Api
.
fetchFeatureFlagUserList
.
mockResolvedValueOnce
({
data
:
userList
});
factory
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
requests the user list on mount
'
,
()
=>
{
...
...
@@ -101,10 +101,10 @@ describe('User List', () => {
beforeEach
(
async
()
=>
{
Api
.
updateFeatureFlagUserList
.
mockResolvedValue
(
userList
);
click
(
'
add-users
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
wrapper
.
find
(
'
#add-user-ids
'
).
setValue
(
`
${
stringifyUserIds
(
newIds
)}
,`
);
click
(
'
confirm-add-user-ids
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
[[,
{
user_xids
:
receivedUserIds
}]]
=
Api
.
updateFeatureFlagUserList
.
mock
.
calls
;
parsedReceivedUserIds
=
parseUserIds
(
receivedUserIds
);
});
...
...
@@ -140,7 +140,7 @@ describe('User List', () => {
beforeEach
(
async
()
=>
{
Api
.
updateFeatureFlagUserList
.
mockResolvedValue
(
userList
);
click
(
'
delete-user-id
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
[[,
{
user_xids
:
receivedUserIds
}]]
=
Api
.
updateFeatureFlagUserList
.
mock
.
calls
;
});
...
...
@@ -159,11 +159,11 @@ describe('User List', () => {
describe
(
'
error
'
,
()
=>
{
const
findAlert
=
()
=>
wrapper
.
find
(
GlAlert
);
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
Api
.
fetchFeatureFlagUserList
.
mockRejectedValue
();
factory
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
displays the alert message
'
,
()
=>
{
...
...
@@ -175,18 +175,18 @@ describe('User List', () => {
const
alert
=
findAlert
();
alert
.
find
(
'
button
'
).
trigger
(
'
click
'
);
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
alert
.
exists
()).
toBe
(
false
);
});
});
describe
(
'
empty list
'
,
()
=>
{
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
Api
.
fetchFeatureFlagUserList
.
mockResolvedValueOnce
({
data
:
{
...
userList
,
user_xids
:
''
}
});
factory
();
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
displays an empty state
'
,
()
=>
{
...
...
This diff is collapsed.
Click to expand it.
spec/frontend/user_lists/components/user_lists_table_spec.js
View file @
ff36ae26
import
{
GlModal
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
*
as
timeago
from
'
timeago.js
'
;
import
{
nextTick
}
from
'
vue
'
;
import
UserListsTable
from
'
~/user_lists/components/user_lists_table.vue
'
;
import
{
userList
}
from
'
../../feature_flags/mock_data
'
;
...
...
@@ -56,43 +57,40 @@ describe('User Lists Table', () => {
});
describe
(
'
delete button
'
,
()
=>
{
it
(
'
should display the confirmation modal
'
,
()
=>
{
it
(
'
should display the confirmation modal
'
,
async
()
=>
{
const
modal
=
wrapper
.
find
(
GlModal
);
wrapper
.
find
(
'
[data-testid="delete-user-list"]
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
modal
.
text
()).
toContain
(
`Delete
${
userList
.
name
}
?`
);
expect
(
modal
.
text
()).
toContain
(
`User list
${
userList
.
name
}
will be removed.`
);
});
await
nextTick
();
expect
(
modal
.
text
()).
toContain
(
`Delete
${
userList
.
name
}
?`
);
expect
(
modal
.
text
()).
toContain
(
`User list
${
userList
.
name
}
will be removed.`
);
});
});
describe
(
'
confirmation modal
'
,
()
=>
{
let
modal
;
beforeEach
(()
=>
{
beforeEach
(
async
()
=>
{
modal
=
wrapper
.
find
(
GlModal
);
wrapper
.
find
(
'
button
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
});
it
(
'
should emit delete with list on confirmation
'
,
()
=>
{
it
(
'
should emit delete with list on confirmation
'
,
async
()
=>
{
modal
.
find
(
'
[data-testid="modal-confirm"]
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
wrapper
.
emitted
(
'
delete
'
)).
toEqual
([[
userLists
[
0
]]]);
});
await
nextTick
();
expect
(
wrapper
.
emitted
(
'
delete
'
)).
toEqual
([[
userLists
[
0
]]]);
});
it
(
'
should not emit delete with list when not confirmed
'
,
()
=>
{
it
(
'
should not emit delete with list when not confirmed
'
,
async
()
=>
{
modal
.
find
(
'
button
'
).
trigger
(
'
click
'
);
return
wrapper
.
vm
.
$nextTick
().
then
(()
=>
{
expect
(
wrapper
.
emitted
(
'
delete
'
)).
toBeUndefined
();
});
await
nextTick
();
expect
(
wrapper
.
emitted
(
'
delete
'
)).
toBeUndefined
();
});
});
});
This diff is collapsed.
Click to expand it.
spec/frontend/whats_new/components/app_spec.js
View file @
ff36ae26
import
{
GlDrawer
,
GlInfiniteScroll
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
{
mockTracking
,
unmockTracking
,
triggerEvent
}
from
'
helpers/tracking_helper
'
;
import
{
createMockDirective
,
getBinding
}
from
'
helpers/vue_mock_directive
'
;
...
...
@@ -67,7 +67,7 @@ describe('App', () => {
{
title
:
'
Whats New Drawer
'
,
url
:
'
www.url.com
'
,
release
:
3.11
},
];
wrapper
.
vm
.
$store
.
state
.
drawerBodyHeight
=
MOCK_DRAWER_BODY_HEIGHT
;
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
};
afterEach
(()
=>
{
...
...
@@ -108,7 +108,7 @@ describe('App', () => {
it
.
each
([
true
,
false
])(
'
passes open property
'
,
async
(
openState
)
=>
{
wrapper
.
vm
.
$store
.
state
.
open
=
openState
;
await
wrapper
.
vm
.
$
nextTick
();
await
nextTick
();
expect
(
getDrawer
().
props
(
'
open
'
)).
toBe
(
openState
);
});
...
...
This diff is collapsed.
Click to expand it.
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