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
30233179
Commit
30233179
authored
Mar 31, 2022
by
Kushal Pandya
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '355130-clean-up-board-code' into 'master'
Clean up board code See merge request gitlab-org/gitlab!83805
parents
fa70c25b
6aead966
Changes
47
Show whitespace changes
Inline
Side-by-side
Showing
47 changed files
with
231 additions
and
659 deletions
+231
-659
app/assets/javascripts/boards/components/board_card_inner.vue
...assets/javascripts/boards/components/board_card_inner.vue
+1
-1
app/assets/javascripts/boards/components/board_form.vue
app/assets/javascripts/boards/components/board_form.vue
+1
-1
app/assets/javascripts/boards/components/board_list.vue
app/assets/javascripts/boards/components/board_list.vue
+1
-1
app/assets/javascripts/boards/components/board_list_header.vue
...ssets/javascripts/boards/components/board_list_header.vue
+2
-2
app/assets/javascripts/boards/components/boards_selector.vue
app/assets/javascripts/boards/components/boards_selector.vue
+7
-6
app/assets/javascripts/boards/components/issue_time_estimate.vue
...ets/javascripts/boards/components/issue_time_estimate.vue
+1
-1
app/assets/javascripts/boards/components/item_count.vue
app/assets/javascripts/boards/components/item_count.vue
+1
-1
app/assets/javascripts/boards/components/toggle_focus.vue
app/assets/javascripts/boards/components/toggle_focus.vue
+0
-1
app/assets/javascripts/boards/config_toggle.js
app/assets/javascripts/boards/config_toggle.js
+0
-25
app/assets/javascripts/boards/index.js
app/assets/javascripts/boards/index.js
+0
-3
app/assets/javascripts/boards/mount_filtered_search_issue_boards.js
.../javascripts/boards/mount_filtered_search_issue_boards.js
+0
-42
app/assets/javascripts/boards/mount_multiple_boards_switcher.js
...sets/javascripts/boards/mount_multiple_boards_switcher.js
+0
-50
app/assets/javascripts/boards/new_board.js
app/assets/javascripts/boards/new_board.js
+0
-29
app/assets/javascripts/boards/toggle_epics_swimlanes.js
app/assets/javascripts/boards/toggle_epics_swimlanes.js
+0
-1
app/assets/javascripts/boards/toggle_focus.js
app/assets/javascripts/boards/toggle_focus.js
+0
-18
app/assets/javascripts/boards/toggle_labels.js
app/assets/javascripts/boards/toggle_labels.js
+0
-1
app/assets/stylesheets/page_bundles/boards.scss
app/assets/stylesheets/page_bundles/boards.scss
+1
-1
app/controllers/groups/boards_controller.rb
app/controllers/groups/boards_controller.rb
+0
-2
app/controllers/projects/boards_controller.rb
app/controllers/projects/boards_controller.rb
+0
-2
app/helpers/boards_helper.rb
app/helpers/boards_helper.rb
+0
-14
app/views/shared/boards/_switcher.html.haml
app/views/shared/boards/_switcher.html.haml
+0
-12
app/views/shared/issuable/_search_bar.html.haml
app/views/shared/issuable/_search_bar.html.haml
+167
-190
ee/app/assets/javascripts/boards/components/board_settings_wip_limit.vue
...avascripts/boards/components/board_settings_wip_limit.vue
+5
-3
ee/app/assets/javascripts/boards/components/issue_card_weight.vue
...ssets/javascripts/boards/components/issue_card_weight.vue
+1
-5
ee/app/assets/javascripts/boards/epic_filtered_search.js
ee/app/assets/javascripts/boards/epic_filtered_search.js
+0
-31
ee/app/assets/javascripts/boards/toggle_epics_swimlanes.js
ee/app/assets/javascripts/boards/toggle_epics_swimlanes.js
+0
-23
ee/app/assets/javascripts/boards/toggle_labels.js
ee/app/assets/javascripts/boards/toggle_labels.js
+0
-14
ee/app/controllers/groups/epic_boards_controller.rb
ee/app/controllers/groups/epic_boards_controller.rb
+0
-2
ee/app/helpers/ee/boards_helper.rb
ee/app/helpers/ee/boards_helper.rb
+0
-10
ee/spec/features/boards/boards_spec.rb
ee/spec/features/boards/boards_spec.rb
+7
-7
ee/spec/features/boards/group_boards/board_deletion_spec.rb
ee/spec/features/boards/group_boards/board_deletion_spec.rb
+4
-6
ee/spec/features/boards/group_boards/multiple_boards_spec.rb
ee/spec/features/boards/group_boards/multiple_boards_spec.rb
+2
-4
ee/spec/features/boards/scoped_issue_board_spec.rb
ee/spec/features/boards/scoped_issue_board_spec.rb
+5
-7
ee/spec/features/boards/sidebar_spec.rb
ee/spec/features/boards/sidebar_spec.rb
+1
-1
ee/spec/features/epic_boards/epic_boards_spec.rb
ee/spec/features/epic_boards/epic_boards_spec.rb
+1
-1
ee/spec/features/epic_boards/multiple_epic_boards_spec.rb
ee/spec/features/epic_boards/multiple_epic_boards_spec.rb
+1
-1
ee/spec/frontend/boards/components/board_settings_wip_limit_spec.js
...ontend/boards/components/board_settings_wip_limit_spec.js
+5
-5
ee/spec/frontend/boards/components/toggle_epics_swimlanes_spec.js
...frontend/boards/components/toggle_epics_swimlanes_spec.js
+0
-52
ee/spec/frontend/boards/toggle_labels_spec.js
ee/spec/frontend/boards/toggle_labels_spec.js
+0
-57
ee/spec/helpers/boards_helper_spec.rb
ee/spec/helpers/boards_helper_spec.rb
+0
-11
spec/features/boards/boards_spec.rb
spec/features/boards/boards_spec.rb
+1
-1
spec/features/boards/focus_mode_spec.rb
spec/features/boards/focus_mode_spec.rb
+1
-1
spec/features/boards/multi_select_spec.rb
spec/features/boards/multi_select_spec.rb
+3
-3
spec/frontend/boards/components/boards_selector_spec.js
spec/frontend/boards/components/boards_selector_spec.js
+3
-3
spec/frontend/boards/components/issue_time_estimate_spec.js
spec/frontend/boards/components/issue_time_estimate_spec.js
+5
-3
spec/frontend/boards/components/item_count_spec.js
spec/frontend/boards/components/item_count_spec.js
+3
-3
spec/support/shared_examples/boards/multiple_issue_boards_shared_examples.rb
..._examples/boards/multiple_issue_boards_shared_examples.rb
+1
-1
No files found.
app/assets/javascripts/boards/components/board_card_inner.vue
View file @
30233179
...
@@ -240,7 +240,7 @@ export default {
...
@@ -240,7 +240,7 @@ export default {
class=
"board-card-footer gl-display-flex gl-justify-content-space-between gl-align-items-flex-end"
class=
"board-card-footer gl-display-flex gl-justify-content-space-between gl-align-items-flex-end"
>
>
<div
<div
class=
"gl-display-flex align-items-start flex-wrap-reverse board-card-number-container gl-overflow-hidden
js-board-card-number-container
"
class=
"gl-display-flex align-items-start flex-wrap-reverse board-card-number-container gl-overflow-hidden"
>
>
<gl-loading-icon
v-if=
"item.isLoading"
size=
"md"
class=
"mt-3"
/>
<gl-loading-icon
v-if=
"item.isLoading"
size=
"md"
class=
"mt-3"
/>
<span
<span
...
...
app/assets/javascripts/boards/components/board_form.vue
View file @
30233179
...
@@ -289,7 +289,7 @@ export default {
...
@@ -289,7 +289,7 @@ export default {
<p
v-if=
"isDeleteForm"
data-testid=
"delete-confirmation-message"
>
<p
v-if=
"isDeleteForm"
data-testid=
"delete-confirmation-message"
>
{{
$options
.
i18n
.
deleteConfirmationMessage
}}
{{
$options
.
i18n
.
deleteConfirmationMessage
}}
</p>
</p>
<form
v-else
class=
"js-board-config-modal"
data-testid=
"board-form-wrapper"
@
submit
.
prevent
>
<form
v-else
data-testid=
"board-form-wrapper"
@
submit
.
prevent
>
<div
v-if=
"!readonly"
class=
"gl-mb-5"
data-testid=
"board-form"
>
<div
v-if=
"!readonly"
class=
"gl-mb-5"
data-testid=
"board-form"
>
<label
class=
"gl-font-weight-bold gl-font-lg"
for=
"board-new-name"
>
<label
class=
"gl-font-weight-bold gl-font-lg"
for=
"board-new-name"
>
{{
$options
.
i18n
.
titleFieldLabel
}}
{{
$options
.
i18n
.
titleFieldLabel
}}
...
...
app/assets/javascripts/boards/components/board_list.vue
View file @
30233179
...
@@ -287,7 +287,7 @@ export default {
...
@@ -287,7 +287,7 @@ export default {
:data-board-type=
"list.listType"
:data-board-type=
"list.listType"
:class=
"
{ 'bg-danger-100': boardItemsSizeExceedsMax }"
:class=
"
{ 'bg-danger-100': boardItemsSizeExceedsMax }"
draggable=".board-card"
draggable=".board-card"
class="board-list gl-w-full gl-h-full gl-list-style-none gl-mb-0 gl-p-2
js-board-list
"
class="board-list gl-w-full gl-h-full gl-list-style-none gl-mb-0 gl-p-2"
data-testid="tree-root-wrapper"
data-testid="tree-root-wrapper"
@start="handleDragOnStart"
@start="handleDragOnStart"
@end="handleDragOnEnd"
@end="handleDragOnEnd"
...
...
app/assets/javascripts/boards/components/board_list_header.vue
View file @
30233179
...
@@ -262,7 +262,7 @@ export default {
...
@@ -262,7 +262,7 @@ export default {
'gl-py-2': list.collapsed
&&
isSwimlanesHeader,
'gl-py-2': list.collapsed
&&
isSwimlanesHeader,
'gl-flex-direction-column': list.collapsed,
'gl-flex-direction-column': list.collapsed,
}"
}"
class="board-title gl-m-0 gl-display-flex gl-align-items-center gl-font-base gl-px-3
js-board-handle
"
class="board-title gl-m-0 gl-display-flex gl-align-items-center gl-font-base gl-px-3"
>
>
<gl-button
<gl-button
v-gl-tooltip
.
hover
v-gl-tooltip
.
hover
...
@@ -443,7 +443,7 @@ export default {
...
@@ -443,7 +443,7 @@ export default {
ref=
"settingsBtn"
ref=
"settingsBtn"
v-gl-tooltip
.
hover
v-gl-tooltip
.
hover
:aria-label=
"$options.i18n.listSettings"
:aria-label=
"$options.i18n.listSettings"
class=
"no-drag
js-board-settings-button
"
class=
"no-drag"
:title=
"$options.i18n.listSettings"
:title=
"$options.i18n.listSettings"
icon=
"settings"
icon=
"settings"
@
click=
"openSidebarSettings"
@
click=
"openSidebarSettings"
...
...
app/assets/javascripts/boards/components/boards_selector.vue
View file @
30233179
...
@@ -239,11 +239,12 @@ export default {
...
@@ -239,11 +239,12 @@ export default {
</
script
>
</
script
>
<
template
>
<
template
>
<div
class=
"boards-switcher
js-boards-selector gl-mr-3
"
>
<div
class=
"boards-switcher
gl-mr-3"
data-testid=
"boards-selector
"
>
<span
class=
"boards-selector-wrapper
js-boards-selector-wrapper
"
>
<span
class=
"boards-selector-wrapper"
>
<gl-dropdown
<gl-dropdown
data-testid=
"boards-dropdown"
data-qa-selector=
"boards_dropdown"
data-qa-selector=
"boards_dropdown"
toggle-class=
"dropdown-menu-toggle
js-dropdown-toggle
"
toggle-class=
"dropdown-menu-toggle"
menu-class=
"flex-column dropdown-extended-height"
menu-class=
"flex-column dropdown-extended-height"
:loading=
"isBoardLoading"
:loading=
"isBoardLoading"
:text=
"board.name"
:text=
"board.name"
...
@@ -276,8 +277,8 @@ export default {
...
@@ -276,8 +277,8 @@ export default {
<gl-dropdown-item
<gl-dropdown-item
v-for=
"recentBoard in recentBoards"
v-for=
"recentBoard in recentBoards"
:key=
"`recent-$
{recentBoard.id}`"
:key=
"`recent-$
{recentBoard.id}`"
class="js-dropdown-item"
:href="`${boardBaseUrl}/${recentBoard.id}`"
:href="`${boardBaseUrl}/${recentBoard.id}`"
data-testid="dropdown-item"
>
>
{{
recentBoard
.
name
}}
{{
recentBoard
.
name
}}
</gl-dropdown-item>
</gl-dropdown-item>
...
@@ -292,8 +293,8 @@ export default {
...
@@ -292,8 +293,8 @@ export default {
<gl-dropdown-item
<gl-dropdown-item
v-for=
"otherBoard in filteredBoards"
v-for=
"otherBoard in filteredBoards"
:key=
"otherBoard.id"
:key=
"otherBoard.id"
class=
"js-dropdown-item"
:href=
"`${boardBaseUrl}/${otherBoard.id}`"
:href=
"`${boardBaseUrl}/${otherBoard.id}`"
data-testid=
"dropdown-item"
>
>
{{ otherBoard.name }}
{{ otherBoard.name }}
</gl-dropdown-item>
</gl-dropdown-item>
...
@@ -331,7 +332,7 @@ export default {
...
@@ -331,7 +332,7 @@ export default {
<gl-dropdown-item
<gl-dropdown-item
v-if=
"showDelete"
v-if=
"showDelete"
v-gl-modal-directive=
"'board-config-modal'"
v-gl-modal-directive=
"'board-config-modal'"
class=
"text-danger
js-delete-board
"
class=
"text-danger"
@
click.prevent=
"showPage('delete')"
@
click.prevent=
"showPage('delete')"
>
>
{{ s__('IssueBoards|Delete board') }}
{{ s__('IssueBoards|Delete board') }}
...
...
app/assets/javascripts/boards/components/issue_time_estimate.vue
View file @
30233179
...
@@ -43,7 +43,7 @@ export default {
...
@@ -43,7 +43,7 @@ export default {
<gl-tooltip
<gl-tooltip
:target=
"() => $refs.issueTimeEstimate"
:target=
"() => $refs.issueTimeEstimate"
placement=
"bottom"
placement=
"bottom"
class=
"js-
issue-time-estimate"
data-testid=
"
issue-time-estimate"
>
>
<span
class=
"gl-font-weight-bold gl-display-block"
>
{{
$options
.
i18n
.
timeEstimate
}}
</span>
<span
class=
"gl-font-weight-bold gl-display-block"
>
{{
$options
.
i18n
.
timeEstimate
}}
</span>
{{
title
}}
{{
title
}}
...
...
app/assets/javascripts/boards/components/item_count.vue
View file @
30233179
...
@@ -29,7 +29,7 @@ export default {
...
@@ -29,7 +29,7 @@ export default {
<span
:class=
"
{ 'text-danger': issuesExceedMax }" data-testid="board-items-count">
<span
:class=
"
{ 'text-danger': issuesExceedMax }" data-testid="board-items-count">
{{
itemsSize
}}
{{
itemsSize
}}
</span>
</span>
<span
v-if=
"isMaxLimitSet"
class=
"
js-
max-issue-size"
>
<span
v-if=
"isMaxLimitSet"
class=
"max-issue-size"
>
{{
maxIssueCount
}}
{{
maxIssueCount
}}
</span>
</span>
</div>
</div>
...
...
app/assets/javascripts/boards/components/toggle_focus.vue
View file @
30233179
...
@@ -38,7 +38,6 @@ export default {
...
@@ -38,7 +38,6 @@ export default {
v-gl-tooltip
v-gl-tooltip
category=
"tertiary"
category=
"tertiary"
:icon=
"isFullscreen ? 'minimize' : 'maximize'"
:icon=
"isFullscreen ? 'minimize' : 'maximize'"
class=
"js-focus-mode-btn"
data-qa-selector=
"focus_mode_button"
data-qa-selector=
"focus_mode_button"
:title=
"$options.i18n.toggleFocusMode"
:title=
"$options.i18n.toggleFocusMode"
:aria-label=
"$options.i18n.toggleFocusMode"
:aria-label=
"$options.i18n.toggleFocusMode"
...
...
app/assets/javascripts/boards/config_toggle.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
{
parseBoolean
}
from
'
~/lib/utils/common_utils
'
;
import
ConfigToggle
from
'
./components/config_toggle.vue
'
;
export
default
()
=>
{
const
el
=
document
.
querySelector
(
'
.js-board-config
'
);
if
(
!
el
)
{
return
;
}
// eslint-disable-next-line no-new
new
Vue
({
el
,
name
:
'
ConfigToggleRoot
'
,
render
(
h
)
{
return
h
(
ConfigToggle
,
{
props
:
{
canAdminList
:
parseBoolean
(
el
.
dataset
.
canAdminList
),
hasScope
:
parseBoolean
(
el
.
dataset
.
hasScope
),
},
});
},
});
};
app/assets/javascripts/boards/index.js
View file @
30233179
...
@@ -13,7 +13,6 @@ import {
...
@@ -13,7 +13,6 @@ import {
}
from
'
~/lib/utils/common_utils
'
;
}
from
'
~/lib/utils/common_utils
'
;
import
{
queryToObject
}
from
'
~/lib/utils/url_utility
'
;
import
{
queryToObject
}
from
'
~/lib/utils/url_utility
'
;
import
{
fullBoardId
}
from
'
./boards_util
'
;
import
{
fullBoardId
}
from
'
./boards_util
'
;
import
initNewBoard
from
'
./new_board
'
;
import
{
gqlClient
}
from
'
./graphql
'
;
import
{
gqlClient
}
from
'
./graphql
'
;
Vue
.
use
(
VueApollo
);
Vue
.
use
(
VueApollo
);
...
@@ -112,6 +111,4 @@ export default () => {
...
@@ -112,6 +111,4 @@ export default () => {
});
});
mountBoardApp
(
$boardApp
);
mountBoardApp
(
$boardApp
);
initNewBoard
();
};
};
app/assets/javascripts/boards/mount_filtered_search_issue_boards.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
IssueBoardFilteredSearch
from
'
ee_else_ce/boards/components/issue_board_filtered_search.vue
'
;
import
store
from
'
~/boards/stores
'
;
import
{
convertObjectPropsToCamelCase
}
from
'
~/lib/utils/common_utils
'
;
import
{
queryToObject
}
from
'
~/lib/utils/url_utility
'
;
export
default
(
apolloProvider
,
isSignedIn
,
releasesFetchPath
,
epicFeatureAvailable
,
iterationFeatureAvailable
,
)
=>
{
const
el
=
document
.
getElementById
(
'
js-issue-board-filtered-search
'
);
const
rawFilterParams
=
queryToObject
(
window
.
location
.
search
,
{
gatherArrays
:
true
});
const
initialFilterParams
=
{
...
convertObjectPropsToCamelCase
(
rawFilterParams
,
{}),
};
if
(
!
el
)
{
return
null
;
}
return
new
Vue
({
el
,
name
:
'
BoardFilteredSearchRoot
'
,
provide
:
{
initialFilterParams
,
isSignedIn
,
releasesFetchPath
,
epicFeatureAvailable
,
iterationFeatureAvailable
,
},
store
,
// TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/324094
apolloProvider
,
render
:
(
createElement
)
=>
createElement
(
IssueBoardFilteredSearch
,
{
props
:
{
fullPath
:
store
.
state
?.
fullPath
||
''
,
boardType
:
store
.
state
?.
boardType
||
''
},
}),
});
};
app/assets/javascripts/boards/mount_multiple_boards_switcher.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
BoardsSelector
from
'
ee_else_ce/boards/components/boards_selector.vue
'
;
import
store
from
'
~/boards/stores
'
;
import
createDefaultClient
from
'
~/lib/graphql
'
;
import
{
parseBoolean
}
from
'
~/lib/utils/common_utils
'
;
Vue
.
use
(
VueApollo
);
const
apolloProvider
=
new
VueApollo
({
defaultClient
:
createDefaultClient
(),
});
export
default
(
params
=
{})
=>
{
const
boardsSwitcherElement
=
document
.
getElementById
(
'
js-multiple-boards-switcher
'
);
const
{
dataset
}
=
boardsSwitcherElement
;
return
new
Vue
({
el
:
boardsSwitcherElement
,
name
:
'
BoardsSelectorRoot
'
,
components
:
{
BoardsSelector
,
},
apolloProvider
,
store
,
provide
:
{
fullPath
:
params
.
fullPath
,
rootPath
:
params
.
rootPath
,
allowScopedLabels
:
params
.
allowScopedLabels
,
labelsManagePath
:
params
.
labelsManagePath
,
allowLabelCreate
:
parseBoolean
(
dataset
.
canAdminBoard
),
},
data
()
{
const
boardsSelectorProps
=
{
...
dataset
,
hasMissingBoards
:
parseBoolean
(
dataset
.
hasMissingBoards
),
canAdminBoard
:
parseBoolean
(
dataset
.
canAdminBoard
),
multipleIssueBoardsAvailable
:
parseBoolean
(
dataset
.
multipleIssueBoardsAvailable
),
scopedIssueBoardFeatureEnabled
:
parseBoolean
(
dataset
.
scopedIssueBoardFeatureEnabled
),
weights
:
JSON
.
parse
(
dataset
.
weights
),
};
return
{
boardsSelectorProps
};
},
render
(
createElement
)
{
return
createElement
(
BoardsSelector
,
{
props
:
this
.
boardsSelectorProps
,
});
},
});
};
app/assets/javascripts/boards/new_board.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
{
parseBoolean
}
from
'
~/lib/utils/common_utils
'
;
import
{
getExperimentVariant
}
from
'
~/experimentation/utils
'
;
import
{
CANDIDATE_VARIANT
}
from
'
~/experimentation/constants
'
;
import
NewBoardButton
from
'
./components/new_board_button.vue
'
;
export
default
()
=>
{
if
(
getExperimentVariant
(
'
prominent_create_board_btn
'
)
!==
CANDIDATE_VARIANT
)
{
return
;
}
const
el
=
document
.
querySelector
(
'
.js-new-board
'
);
if
(
!
el
)
{
return
;
}
// eslint-disable-next-line no-new
new
Vue
({
el
,
provide
:
{
multipleIssueBoardsAvailable
:
parseBoolean
(
el
.
dataset
.
multipleIssueBoardsAvailable
),
canAdminBoard
:
parseBoolean
(
el
.
dataset
.
canAdminBoard
),
},
render
(
h
)
{
return
h
(
NewBoardButton
);
},
});
};
app/assets/javascripts/boards/toggle_epics_swimlanes.js
deleted
100644 → 0
View file @
fa70c25b
export
default
()
=>
{};
app/assets/javascripts/boards/toggle_focus.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
ToggleFocus
from
'
./components/toggle_focus.vue
'
;
export
default
()
=>
{
const
issueBoardsContentSelector
=
'
.content-wrapper > .js-focus-mode-board
'
;
return
new
Vue
({
el
:
'
#js-toggle-focus-btn
'
,
name
:
'
ToggleFocusRoot
'
,
render
(
h
)
{
return
h
(
ToggleFocus
,
{
props
:
{
issueBoardsContentSelector
,
},
});
},
});
};
app/assets/javascripts/boards/toggle_labels.js
deleted
100644 → 0
View file @
fa70c25b
export
default
()
=>
{};
app/assets/stylesheets/page_bundles/boards.scss
View file @
30233179
...
@@ -198,7 +198,7 @@
...
@@ -198,7 +198,7 @@
border-bottom
:
1px
solid
var
(
--
gray-100
,
$gray-100
);
border-bottom
:
1px
solid
var
(
--
gray-100
,
$gray-100
);
height
:
3rem
;
height
:
3rem
;
.
js-
max-issue-size
:
:
before
{
.
max-issue-size
:
:
before
{
content
:
'/'
;
content
:
'/'
;
}
}
}
}
...
...
app/controllers/groups/boards_controller.rb
View file @
30233179
...
@@ -43,8 +43,6 @@ class Groups::BoardsController < Groups::ApplicationController
...
@@ -43,8 +43,6 @@ class Groups::BoardsController < Groups::ApplicationController
def
assign_endpoint_vars
def
assign_endpoint_vars
@boards_endpoint
=
group_boards_path
(
group
)
@boards_endpoint
=
group_boards_path
(
group
)
@namespace_path
=
group
.
to_param
@labels_endpoint
=
group_labels_path
(
group
)
end
end
def
authorize_read_board!
def
authorize_read_board!
...
...
app/controllers/projects/boards_controller.rb
View file @
30233179
...
@@ -44,8 +44,6 @@ class Projects::BoardsController < Projects::ApplicationController
...
@@ -44,8 +44,6 @@ class Projects::BoardsController < Projects::ApplicationController
def
assign_endpoint_vars
def
assign_endpoint_vars
@boards_endpoint
=
project_boards_path
(
project
)
@boards_endpoint
=
project_boards_path
(
project
)
@bulk_issues_path
=
bulk_update_project_issues_path
(
project
)
@bulk_issues_path
=
bulk_update_project_issues_path
(
project
)
@namespace_path
=
project
.
namespace
.
full_path
@labels_endpoint
=
project_labels_path
(
project
)
end
end
def
authorize_read_board!
def
authorize_read_board!
...
...
app/helpers/boards_helper.rb
View file @
30233179
...
@@ -127,20 +127,6 @@ module BoardsHelper
...
@@ -127,20 +127,6 @@ module BoardsHelper
can?
(
current_user
,
:admin_issue
,
current_board_parent
)
can?
(
current_user
,
:admin_issue
,
current_board_parent
)
end
end
def
board_list_data
include_descendant_groups
=
@group
&
.
present?
{
toggle:
"dropdown"
,
list_labels_path:
labels_filter_path_with_defaults
(
only_group_labels:
true
,
include_ancestor_groups:
true
),
labels:
labels_filter_path_with_defaults
(
only_group_labels:
true
,
include_descendant_groups:
include_descendant_groups
),
labels_endpoint:
@labels_endpoint
,
namespace_path:
@namespace_path
,
project_path:
@project
&
.
path
,
group_path:
@group
&
.
path
}
end
def
serializer
def
serializer
CurrentBoardSerializer
.
new
CurrentBoardSerializer
.
new
end
end
...
...
app/views/shared/boards/_switcher.html.haml
deleted
100644 → 0
View file @
fa70c25b
-
parent
=
board
.
resource_parent
-
milestone_filter_opts
=
{
format: :json
}
-
milestone_filter_opts
=
milestone_filter_opts
.
merge
(
only_group_milestones:
true
)
if
board
.
group_board?
-
weights
=
Gitlab
.
ee?
?
([
Issue
::
WEIGHT_ANY
]
+
Issue
.
weight_options
)
:
[]
#js-multiple-boards-switcher
.inline.boards-switcher
{
data:
{
milestone_path:
milestones_filter_path
(
milestone_filter_opts
),
board_base_url:
board_base_url
,
has_missing_boards:
(
!
multiple_boards_available?
&&
current_board_parent
.
boards
.
size
>
1
).
to_s
,
can_admin_board:
can?
(
current_user
,
:admin_issue_board
,
parent
).
to_s
,
multiple_issue_boards_available:
parent
.
multiple_issue_boards_available?
.
to_s
,
scoped_issue_board_feature_enabled:
Gitlab
.
ee?
&&
parent
.
feature_available?
(
:scoped_issue_board
)
?
'true'
:
'false'
,
weights:
weights
.
to_json
}
}
app/views/shared/issuable/_search_bar.html.haml
View file @
30233179
-
type
=
local_assigns
.
fetch
(
:type
)
-
type
=
local_assigns
.
fetch
(
:type
)
-
board
=
local_assigns
.
fetch
(
:board
,
nil
)
-
show_sorting_dropdown
=
local_assigns
.
fetch
(
:show_sorting_dropdown
,
true
)
-
show_sorting_dropdown
=
local_assigns
.
fetch
(
:show_sorting_dropdown
,
true
)
-
disable_target_branch
=
local_assigns
.
fetch
(
:disable_target_branch
,
false
)
-
disable_target_branch
=
local_assigns
.
fetch
(
:disable_target_branch
,
false
)
-
placeholder
=
local_assigns
[
:placeholder
]
||
_
(
'Search or filter results...'
)
-
placeholder
=
local_assigns
[
:placeholder
]
||
_
(
'Search or filter results...'
)
-
block_css_class
=
type
!=
:productivity_analytics
?
'row-content-block second-block'
:
''
-
block_css_class
=
type
!=
:productivity_analytics
?
'row-content-block second-block'
:
''
-
is_epic_board
=
board
&
.
to_type
==
"EpicBoard"
-
if
is_epic_board
-
user_can_admin_list
=
can?
(
current_user
,
:admin_epic_board_list
,
board
.
resource_parent
)
-
elsif
board
-
user_can_admin_list
=
can?
(
current_user
,
:admin_issue_board_list
,
board
.
resource_parent
)
.issues-filters
.issues-filters
.issues-details-filters.filtered-search-block.d-flex.flex-column.flex-lg-row
{
class:
block_css_class
}
.issues-details-filters.filtered-search-block.d-flex.flex-column.flex-lg-row
{
class:
block_css_class
}
.d-flex.flex-column.flex-md-row.flex-grow-1.mb-lg-0.mb-md-2.mb-sm-0.w-100
.d-flex.flex-column.flex-md-row.flex-grow-1.mb-lg-0.mb-md-2.mb-sm-0.w-100
-
if
type
==
:boards
=
render
"shared/boards/switcher"
,
board:
board
.js-new-board
{
data:
{
multiple_issue_boards_available:
parent
.
multiple_issue_boards_available?
.
to_s
,
can_admin_board:
can?
(
current_user
,
:admin_issue_board
,
parent
).
to_s
,
}
}
=
form_tag
page_filter_path
,
method: :get
,
class:
'filter-form js-filter-form w-100'
do
=
form_tag
page_filter_path
,
method: :get
,
class:
'filter-form js-filter-form w-100'
do
-
if
params
[
:search
].
present?
-
if
params
[
:search
].
present?
=
hidden_field_tag
:search
,
params
[
:search
]
=
hidden_field_tag
:search
,
params
[
:search
]
...
@@ -25,11 +15,6 @@
...
@@ -25,11 +15,6 @@
-
checkbox_id
=
'check-all-issues'
-
checkbox_id
=
'check-all-issues'
%label
.gl-sr-only
{
for:
checkbox_id
}=
_
(
'Select all'
)
%label
.gl-sr-only
{
for:
checkbox_id
}=
_
(
'Select all'
)
=
check_box_tag
checkbox_id
,
nil
,
false
,
class:
"check-all-issues left"
=
check_box_tag
checkbox_id
,
nil
,
false
,
class:
"check-all-issues left"
-
if
is_epic_board
#js-board-filtered-search
{
data:
{
full_path:
@group
&
.
full_path
}
}
-
elsif
board
#js-issue-board-filtered-search
-
else
.issues-other-filters.filtered-search-wrapper.d-flex.flex-column.flex-md-row
.issues-other-filters.filtered-search-wrapper.d-flex.flex-column.flex-md-row
.filtered-search-box
.filtered-search-box
-
if
type
!=
:boards
-
if
type
!=
:boards
...
@@ -213,13 +198,5 @@
...
@@ -213,13 +198,5 @@
%button
.clear-search.hidden
{
type:
'button'
}
%button
.clear-search.hidden
{
type:
'button'
}
=
sprite_icon
(
'close'
,
size:
16
,
css_class:
'clear-search-icon'
)
=
sprite_icon
(
'close'
,
size:
16
,
css_class:
'clear-search-icon'
)
.filter-dropdown-container.gl-display-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-align-items-flex-start
.filter-dropdown-container.gl-display-flex.gl-flex-direction-column.gl-md-flex-direction-row.gl-align-items-flex-start
-
if
type
==
:boards
-
if
type
!=
:productivity_analytics
&&
show_sorting_dropdown
#js-board-labels-toggle
-
if
current_user
#js-board-epics-swimlanes-toggle
.js-board-config
{
data:
{
can_admin_list:
user_can_admin_list
.
to_s
,
has_scope:
board
.
scoped?
.
to_s
}
}
-
if
user_can_admin_list
.js-create-column-trigger
{
data:
board_list_data
}
#js-toggle-focus-btn
-
elsif
type
!=
:productivity_analytics
&&
show_sorting_dropdown
=
render
'shared/issuable/sort_dropdown'
=
render
'shared/issuable/sort_dropdown'
ee/app/assets/javascripts/boards/components/board_settings_wip_limit.vue
View file @
30233179
...
@@ -107,8 +107,9 @@ export default {
...
@@ -107,8 +107,9 @@ export default {
<div
class=
"gl-display-flex gl-justify-content-space-between gl-align-items-center gl-mb-2"
>
<div
class=
"gl-display-flex gl-justify-content-space-between gl-align-items-center gl-mb-2"
>
<label
class=
"m-0"
>
{{
$options
.
i18n
.
wipLimitText
}}
</label>
<label
class=
"m-0"
>
{{
$options
.
i18n
.
wipLimitText
}}
</label>
<gl-button
<gl-button
class=
"
js-edit-button
gl-h-full gl-border-0 text-dark"
class=
"gl-h-full gl-border-0 text-dark"
variant=
"link"
variant=
"link"
data-testid=
"edit-button"
@
click=
"showInput"
@
click=
"showInput"
>
{{
$options
.
i18n
.
editLinkText
}}
</gl-button
>
{{
$options
.
i18n
.
editLinkText
}}
</gl-button
>
>
...
@@ -128,12 +129,13 @@ export default {
...
@@ -128,12 +129,13 @@ export default {
@
blur=
"offFocus"
@
blur=
"offFocus"
/>
/>
<div
v-else
class=
"gl-display-flex gl-align-items-center"
>
<div
v-else
class=
"gl-display-flex gl-align-items-center"
>
<p
class=
"
js-wip-limit bold gl-m-0 text-secondary
"
>
{{
activeListWipLimit
}}
</p>
<p
class=
"
bold gl-m-0 text-secondary"
data-testid=
"wip-limit
"
>
{{
activeListWipLimit
}}
</p>
<template
v-if=
"wipLimitIsSet"
>
<template
v-if=
"wipLimitIsSet"
>
<span
class=
"m-1"
>
-
</span>
<span
class=
"m-1"
>
-
</span>
<gl-button
<gl-button
class=
"
js-remove-limit
gl-h-full gl-border-0 text-secondary"
class=
"gl-h-full gl-border-0 text-secondary"
variant=
"link"
variant=
"link"
data-testid=
"remove-limit"
@
click=
"clearWipLimit"
@
click=
"clearWipLimit"
>
{{
$options
.
i18n
.
removeLimitText
}}
</gl-button
>
{{
$options
.
i18n
.
removeLimitText
}}
</gl-button
>
>
...
...
ee/app/assets/javascripts/boards/components/issue_card_weight.vue
View file @
30233179
...
@@ -30,11 +30,7 @@ export default {
...
@@ -30,11 +30,7 @@ export default {
>
>
<gl-icon
name=
"weight"
class=
"board-card-info-icon gl-mr-2"
/>
<gl-icon
name=
"weight"
class=
"board-card-info-icon gl-mr-2"
/>
<span
data-testid=
"board-card-weight"
class=
"board-card-info-text"
>
{{
weight
}}
</span>
<span
data-testid=
"board-card-weight"
class=
"board-card-info-text"
>
{{
weight
}}
</span>
<gl-tooltip
<gl-tooltip
:target=
"() => $refs.itemWeight"
placement=
"bottom"
container=
"body"
:target=
"() => $refs.itemWeight"
placement=
"bottom"
container=
"body"
class=
"js-item-weight"
>
{{
__
(
'
Weight
'
)
}}
<br
/><span
class=
"text-tertiary"
>
{{
weight
}}
</span>
>
{{
__
(
'
Weight
'
)
}}
<br
/><span
class=
"text-tertiary"
>
{{
weight
}}
</span>
</gl-tooltip>
</gl-tooltip>
</component>
</component>
...
...
ee/app/assets/javascripts/boards/epic_filtered_search.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
EpicFilteredSearch
from
'
ee_component/boards/components/epic_filtered_search.vue
'
;
import
store
from
'
~/boards/stores
'
;
import
{
convertObjectPropsToCamelCase
}
from
'
~/lib/utils/common_utils
'
;
import
{
queryToObject
}
from
'
~/lib/utils/url_utility
'
;
export
default
(
apolloProvider
)
=>
{
const
el
=
document
.
getElementById
(
'
js-board-filtered-search
'
);
const
rawFilterParams
=
queryToObject
(
window
.
location
.
search
,
{
gatherArrays
:
true
});
const
initialFilterParams
=
{
...
convertObjectPropsToCamelCase
(
rawFilterParams
,
{}),
};
if
(
!
el
)
{
return
null
;
}
return
new
Vue
({
el
,
name
:
'
EpicBoardFilteredSearchRoot
'
,
provide
:
{
initialFilterParams
,
},
store
,
// TODO: https://gitlab.com/gitlab-org/gitlab/-/issues/324094
apolloProvider
,
render
:
(
createElement
)
=>
createElement
(
EpicFilteredSearch
,
{
props
:
{
fullPath
:
store
.
state
?.
fullPath
||
''
,
boardType
:
store
.
state
?.
boardType
||
''
},
}),
});
};
ee/app/assets/javascripts/boards/toggle_epics_swimlanes.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
store
from
'
~/boards/stores
'
;
import
ToggleEpicsSwimlanes
from
'
./components/toggle_epics_swimlanes.vue
'
;
export
default
()
=>
{
const
el
=
document
.
getElementById
(
'
js-board-epics-swimlanes-toggle
'
);
if
(
!
el
)
{
return
null
;
}
return
new
Vue
({
el
,
name
:
'
ToggleEpicsSwimlanesRoot
'
,
components
:
{
ToggleEpicsSwimlanes
,
},
store
,
render
(
createElement
)
{
return
createElement
(
ToggleEpicsSwimlanes
);
},
});
};
ee/app/assets/javascripts/boards/toggle_labels.js
deleted
100644 → 0
View file @
fa70c25b
import
Vue
from
'
vue
'
;
import
store
from
'
~/boards/stores
'
;
import
ToggleLabels
from
'
./components/toggle_labels.vue
'
;
export
default
()
=>
new
Vue
({
el
:
document
.
getElementById
(
'
js-board-labels-toggle
'
),
name
:
'
ToggleLabelsRoot
'
,
components
:
{
ToggleLabels
,
},
store
,
render
:
(
createElement
)
=>
createElement
(
'
toggle-labels
'
),
});
ee/app/controllers/groups/epic_boards_controller.rb
View file @
30233179
...
@@ -63,8 +63,6 @@ class Groups::EpicBoardsController < Groups::ApplicationController
...
@@ -63,8 +63,6 @@ class Groups::EpicBoardsController < Groups::ApplicationController
def
assign_endpoint_vars
def
assign_endpoint_vars
@boards_endpoint
=
group_epic_boards_path
(
group
)
@boards_endpoint
=
group_epic_boards_path
(
group
)
@namespace_path
=
group
.
to_param
@labels_endpoint
=
group_labels_path
(
group
)
end
end
def
authorize_read_board!
def
authorize_read_board!
...
...
ee/app/helpers/ee/boards_helper.rb
View file @
30233179
...
@@ -4,12 +4,6 @@ module EE
...
@@ -4,12 +4,6 @@ module EE
module
BoardsHelper
module
BoardsHelper
extend
::
Gitlab
::
Utils
::
Override
extend
::
Gitlab
::
Utils
::
Override
override
:board_list_data
def
board_list_data
super
.
merge
(
list_milestone_path:
board_milestones_path
(
board
,
:json
),
list_assignees_path:
board_users_path
(
board
,
:json
))
end
# rubocop:disable Metrics/AbcSize
# rubocop:disable Metrics/AbcSize
override
:board_data
override
:board_data
def
board_data
def
board_data
...
@@ -27,10 +21,6 @@ module EE
...
@@ -27,10 +21,6 @@ module EE
labels:
board
.
labels
.
to_json
(
only:
[
:id
,
:title
,
:color
,
:text_color
]
),
labels:
board
.
labels
.
to_json
(
only:
[
:id
,
:title
,
:color
,
:text_color
]
),
board_weight:
board
.
weight
,
board_weight:
board
.
weight
,
show_promotion:
show_feature_promotion
,
show_promotion:
show_feature_promotion
,
can_update:
can_update?
.
to_s
,
can_admin_list:
can_admin_list?
.
to_s
,
can_admin_board:
can_admin_board?
.
to_s
,
disabled:
board
.
disabled_for?
(
current_user
).
to_s
,
emails_disabled:
current_board_parent
.
emails_disabled?
.
to_s
,
emails_disabled:
current_board_parent
.
emails_disabled?
.
to_s
,
weights:
::
Issue
.
weight_options
weights:
::
Issue
.
weight_options
}
}
...
...
ee/spec/features/boards/boards_spec.rb
View file @
30233179
...
@@ -147,7 +147,7 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -147,7 +147,7 @@ RSpec.describe 'Project issue boards', :js do
it
'displays issue and max issue size'
do
it
'displays issue and max issue size'
do
page
.
within
(
find
(
".board:nth-child(2)"
))
do
page
.
within
(
find
(
".board:nth-child(2)"
))
do
expect
(
page
.
find
(
'[data-testid="board-items-count"]'
)).
to
have_text
(
total_development_issues
)
expect
(
page
.
find
(
'[data-testid="board-items-count"]'
)).
to
have_text
(
total_development_issues
)
expect
(
page
.
find
(
'.
js-
max-issue-size'
)).
to
have_text
(
max_issue_count
)
expect
(
page
.
find
(
'.max-issue-size'
)).
to
have_text
(
max_issue_count
)
end
end
end
end
end
end
...
@@ -207,11 +207,11 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -207,11 +207,11 @@ RSpec.describe 'Project issue boards', :js do
end
end
it
"sets max issue count to zero"
do
it
"sets max issue count to zero"
do
page
.
find
(
'.js-remove-limit'
).
click
click_button
_
(
'Remove limit'
)
wait_for_requests
wait_for_requests
expect
(
page
.
find
(
'
.js-wip-limit
'
)).
to
have_text
(
"None"
)
expect
(
page
.
find
(
'
[data-testid="wip-limit"]
'
)).
to
have_text
(
"None"
)
end
end
end
end
...
@@ -235,7 +235,7 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -235,7 +235,7 @@ RSpec.describe 'Project issue boards', :js do
click_button
(
'List settings'
)
click_button
(
'List settings'
)
end
end
expect
(
page
.
find
(
'
.js-wip-limit
'
)).
to
have_text
(
max_issue_count
)
expect
(
page
.
find
(
'
[data-testid="wip-limit"]
'
)).
to
have_text
(
max_issue_count
)
end
end
end
end
...
@@ -253,7 +253,7 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -253,7 +253,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_requests
wait_for_requests
expect
(
page
.
find
(
'
.js-wip-limit
'
)).
to
have_text
(
max_issue_count
)
expect
(
page
.
find
(
'
[data-testid="wip-limit"]
'
)).
to
have_text
(
max_issue_count
)
end
end
context
"When user sets max issue count to 0"
do
context
"When user sets max issue count to 0"
do
...
@@ -270,7 +270,7 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -270,7 +270,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_requests
wait_for_requests
expect
(
page
.
find
(
'
.js-wip-limit
'
)).
to
have_text
(
"None"
)
expect
(
page
.
find
(
'
[data-testid="wip-limit"]
'
)).
to
have_text
(
"None"
)
end
end
end
end
end
end
...
@@ -285,7 +285,7 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -285,7 +285,7 @@ RSpec.describe 'Project issue boards', :js do
wait_for_requests
wait_for_requests
expect
(
page
.
find
(
'
.js-wip-limit
'
)).
to
have_text
(
1
)
expect
(
page
.
find
(
'
[data-testid="wip-limit"]
'
)).
to
have_text
(
1
)
end
end
end
end
end
end
...
...
ee/spec/features/boards/group_boards/board_deletion_spec.rb
View file @
30233179
...
@@ -20,18 +20,16 @@ RSpec.describe 'Group Boards', :js do
...
@@ -20,18 +20,16 @@ RSpec.describe 'Group Boards', :js do
wait_for_requests
wait_for_requests
find
(
:css
,
'.js-delete-board button'
).
click
click_button
s_
(
'IssueBoards|Delete board'
)
find
(
:css
,
'.board-config-modal .js-modal-action-primary'
).
click
find
(
:css
,
'.board-config-modal .js-modal-action-primary'
).
click
click_boards_dropdown
click_boards_dropdown
page
.
within
(
'.js-boards-selector'
)
do
expect
(
page
).
not_to
have_content
(
board_dev
.
name
)
expect
(
page
).
not_to
have_content
(
board_dev
.
name
)
expect
(
page
).
to
have_content
(
board_ux
.
name
)
expect
(
page
).
to
have_content
(
board_ux
.
name
)
end
end
end
def
click_boards_dropdown
def
click_boards_dropdown
find
(
:css
,
'.js-dropdown-toggle
'
).
click
find
(
'[data-testid="boards-dropdown"]
'
).
click
end
end
end
end
ee/spec/features/boards/group_boards/multiple_boards_spec.rb
View file @
30233179
...
@@ -27,11 +27,9 @@ RSpec.describe 'Multiple Issue Boards', :js do
...
@@ -27,11 +27,9 @@ RSpec.describe 'Multiple Issue Boards', :js do
click_button
board
.
name
click_button
board
.
name
page
.
within
(
'.js-boards-selector .dropdown-menu'
)
do
expect
(
page
).
not_to
have_content
(
'Create new board'
)
expect
(
page
).
not_to
have_content
(
'Create new board'
)
expect
(
page
).
not_to
have_content
(
'Delete board'
)
expect
(
page
).
not_to
have_content
(
'Delete board'
)
end
end
end
it
'does not show license warning when there is one board created'
do
it
'does not show license warning when there is one board created'
do
visit
boards_path
visit
boards_path
...
...
ee/spec/features/boards/scoped_issue_board_spec.rb
View file @
30233179
...
@@ -112,7 +112,7 @@ RSpec.describe 'Scoped issue boards', :js do
...
@@ -112,7 +112,7 @@ RSpec.describe 'Scoped issue boards', :js do
visit
group_boards_path
(
group
)
visit
group_boards_path
(
group
)
wait_for_requests
wait_for_requests
expect
(
page
).
to
have_
css
(
'.js-boards-selector
'
)
expect
(
page
).
to
have_
selector
(
'[data-testid="boards-selector"]
'
)
click_on_create_new_board
click_on_create_new_board
click_button
'Expand'
click_button
'Expand'
...
@@ -572,13 +572,11 @@ RSpec.describe 'Scoped issue boards', :js do
...
@@ -572,13 +572,11 @@ RSpec.describe 'Scoped issue boards', :js do
it
"doesn't show the input when creating a board"
do
it
"doesn't show the input when creating a board"
do
click_on_create_new_board
click_on_create_new_board
page
.
within
'.js-board-config-modal'
do
# To make sure the form is shown
# To make sure the form is shown
expect
(
page
).
to
have_field
(
'board-new-name'
)
expect
(
page
).
to
have_field
(
'board-new-name'
)
expect
(
page
).
not_to
have_button
(
'Expand'
)
expect
(
page
).
not_to
have_button
(
'Expand'
)
end
end
end
it
"doesn't show the button to edit scope"
do
it
"doesn't show the button to edit scope"
do
expect
(
page
).
not_to
have_button
(
'View Scope'
)
expect
(
page
).
not_to
have_button
(
'View Scope'
)
...
@@ -681,7 +679,7 @@ RSpec.describe 'Scoped issue boards', :js do
...
@@ -681,7 +679,7 @@ RSpec.describe 'Scoped issue boards', :js do
end
end
def
click_on_create_new_board
def
click_on_create_new_board
page
.
within
'
.js-boards-selector
'
do
page
.
within
'
[data-testid="boards-selector"]
'
do
find
(
'.dropdown-menu-toggle'
).
click
find
(
'.dropdown-menu-toggle'
).
click
wait_for_requests
wait_for_requests
...
...
ee/spec/features/boards/sidebar_spec.rb
View file @
30233179
...
@@ -377,7 +377,7 @@ RSpec.describe 'Issue Boards', :js do
...
@@ -377,7 +377,7 @@ RSpec.describe 'Issue Boards', :js do
end
end
context
'when opening sidebars'
do
context
'when opening sidebars'
do
let
(
:settings_button
)
{
find
(
'.js-board-settings-button
'
)
}
let
(
:settings_button
)
{
find
_button
_
(
'List settings
'
)
}
it
'closes card sidebar when opening settings sidebar'
do
it
'closes card sidebar when opening settings sidebar'
do
click_card
(
card1
)
click_card
(
card1
)
...
...
ee/spec/features/epic_boards/epic_boards_spec.rb
View file @
30233179
...
@@ -363,7 +363,7 @@ RSpec.describe 'epic boards', :js do
...
@@ -363,7 +363,7 @@ RSpec.describe 'epic boards', :js do
end
end
def
click_on_create_new_board
def
click_on_create_new_board
page
.
within
'
.js-boards-selector
'
do
page
.
within
'
[data-testid="boards-selector"]
'
do
find
(
'.dropdown-menu-toggle'
).
click
find
(
'.dropdown-menu-toggle'
).
click
wait_for_requests
wait_for_requests
...
...
ee/spec/features/epic_boards/multiple_epic_boards_spec.rb
View file @
30233179
...
@@ -87,7 +87,7 @@ RSpec.describe 'epic boards', :js do
...
@@ -87,7 +87,7 @@ RSpec.describe 'epic boards', :js do
wait_for_requests
wait_for_requests
dropdown_selector
=
'
.js-boards-selector
.dropdown-menu'
dropdown_selector
=
'
[data-testid="boards-selector"]
.dropdown-menu'
page
.
within
(
dropdown_selector
)
do
page
.
within
(
dropdown_selector
)
do
yield
yield
end
end
...
...
ee/spec/frontend/boards/components/board_settings_wip_limit_spec.js
View file @
30233179
import
{
GlFormInput
}
from
'
@gitlab/ui
'
;
import
{
GlFormInput
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
{
noop
}
from
'
lodash
'
;
import
{
noop
}
from
'
lodash
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
Vuex
from
'
vuex
'
;
import
BoardSettingsWipLimit
from
'
ee_component/boards/components/board_settings_wip_limit.vue
'
;
import
BoardSettingsWipLimit
from
'
ee_component/boards/components/board_settings_wip_limit.vue
'
;
import
{
shallowMountExtended
}
from
'
helpers/vue_test_utils_helper
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
waitForPromises
from
'
helpers/wait_for_promises
'
;
import
{
mockLabelList
}
from
'
jest/boards/mock_data
'
;
import
{
mockLabelList
}
from
'
jest/boards/mock_data
'
;
...
@@ -15,9 +15,9 @@ describe('BoardSettingsWipLimit', () => {
...
@@ -15,9 +15,9 @@ describe('BoardSettingsWipLimit', () => {
const
listId
=
mockLabelList
.
id
;
const
listId
=
mockLabelList
.
id
;
const
currentWipLimit
=
1
;
// Needs to be other than null to trigger requests
const
currentWipLimit
=
1
;
// Needs to be other than null to trigger requests
const
clickEdit
=
()
=>
wrapper
.
find
(
'
.js-
edit-button
'
).
vm
.
$emit
(
'
click
'
);
const
clickEdit
=
()
=>
wrapper
.
find
ByTestId
(
'
edit-button
'
).
vm
.
$emit
(
'
click
'
);
const
findRemoveWipLimit
=
()
=>
wrapper
.
find
(
'
.js-
remove-limit
'
);
const
findRemoveWipLimit
=
()
=>
wrapper
.
find
ByTestId
(
'
remove-limit
'
);
const
findWipLimit
=
()
=>
wrapper
.
find
(
'
.js-
wip-limit
'
);
const
findWipLimit
=
()
=>
wrapper
.
find
ByTestId
(
'
wip-limit
'
);
const
findInput
=
()
=>
wrapper
.
findComponent
(
GlFormInput
);
const
findInput
=
()
=>
wrapper
.
findComponent
(
GlFormInput
);
const
createComponent
=
({
const
createComponent
=
({
...
@@ -33,7 +33,7 @@ describe('BoardSettingsWipLimit', () => {
...
@@ -33,7 +33,7 @@ describe('BoardSettingsWipLimit', () => {
actions
:
storeActions
,
actions
:
storeActions
,
});
});
wrapper
=
shallowMount
(
BoardSettingsWipLimit
,
{
wrapper
=
shallowMount
Extended
(
BoardSettingsWipLimit
,
{
propsData
:
props
,
propsData
:
props
,
store
,
store
,
data
()
{
data
()
{
...
...
ee/spec/frontend/boards/components/toggle_epics_swimlanes_spec.js
deleted
100644 → 0
View file @
fa70c25b
import
{
GlDropdown
,
GlDropdownItem
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
Vue
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
ToggleEpicsSwimlanes
from
'
ee/boards/components/toggle_epics_swimlanes.vue
'
;
Vue
.
use
(
Vuex
);
describe
(
'
ToggleEpicsSwimlanes
'
,
()
=>
{
let
store
;
let
wrapper
;
const
createComponent
=
()
=>
{
wrapper
=
mount
(
ToggleEpicsSwimlanes
,
{
store
});
};
afterEach
(()
=>
{
wrapper
.
destroy
();
});
beforeEach
(()
=>
{
store
=
new
Vuex
.
Store
({
state
:
{
isShowingEpicsSwimlanes
:
false
}
});
createComponent
();
});
describe
(
'
dropdownLabel
'
,
()
=>
{
it
(
'
displays "None" when isShowingEpicsSwimlanes is false
'
,
()
=>
{
expect
(
wrapper
.
findComponent
(
GlDropdown
).
props
(
'
text
'
)).
toEqual
(
'
None
'
);
});
it
(
'
returns "Epics" when isShowingEpicsSwimlanes is true
'
,
()
=>
{
store
=
new
Vuex
.
Store
({
state
:
{
isShowingEpicsSwimlanes
:
true
}
});
createComponent
();
expect
(
wrapper
.
findComponent
(
GlDropdown
).
props
(
'
text
'
)).
toEqual
(
'
Epic
'
);
});
});
describe
(
'
template
'
,
()
=>
{
it
(
'
renders .board-swimlanes-toggle-wrapper container
'
,
()
=>
{
expect
(
wrapper
.
find
(
'
[data-testid="toggle-swimlanes"]
'
).
exists
()).
toBe
(
true
);
});
it
(
'
renders "Group by" label
'
,
()
=>
{
expect
(
wrapper
.
find
(
'
[data-testid="toggle-swimlanes-label"]
'
).
text
()).
toEqual
(
'
Group by
'
);
});
it
(
'
renders dropdown with 2 options
'
,
()
=>
{
expect
(
wrapper
.
findComponent
(
GlDropdown
).
exists
()).
toBe
(
true
);
expect
(
wrapper
.
findAllComponents
(
GlDropdownItem
).
length
).
toEqual
(
2
);
});
});
});
ee/spec/frontend/boards/toggle_labels_spec.js
deleted
100644 → 0
View file @
fa70c25b
import
{
GlToggle
}
from
'
@gitlab/ui
'
;
import
{
shallowMount
}
from
'
@vue/test-utils
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vuex
from
'
vuex
'
;
import
ToggleLabels
from
'
ee/boards/components/toggle_labels.vue
'
;
import
LocalStorageSync
from
'
~/vue_shared/components/local_storage_sync.vue
'
;
Vue
.
use
(
Vuex
);
describe
(
'
ToggleLabels component
'
,
()
=>
{
let
wrapper
;
let
setShowLabels
;
function
createComponent
(
state
=
{})
{
setShowLabels
=
jest
.
fn
();
return
shallowMount
(
ToggleLabels
,
{
store
:
new
Vuex
.
Store
({
state
:
{
isShowingLabels
:
true
,
...
state
,
},
actions
:
{
setShowLabels
,
},
}),
stubs
:
{
LocalStorageSync
,
},
});
}
afterEach
(()
=>
{
wrapper
.
destroy
();
wrapper
=
null
;
});
it
(
'
onStorageUpdate parses empty value as false
'
,
async
()
=>
{
wrapper
=
createComponent
();
const
localStorageSync
=
wrapper
.
findComponent
(
LocalStorageSync
);
localStorageSync
.
vm
.
$emit
(
'
input
'
,
''
);
await
nextTick
();
expect
(
setShowLabels
).
toHaveBeenCalledWith
(
expect
.
any
(
Object
),
false
);
});
it
(
'
sets GlToggle value from store.isShowingLabels
'
,
()
=>
{
wrapper
=
createComponent
({
isShowingLabels
:
true
});
expect
(
wrapper
.
findComponent
(
GlToggle
).
props
(
'
value
'
)).
toEqual
(
true
);
wrapper
=
createComponent
({
isShowingLabels
:
false
});
expect
(
wrapper
.
findComponent
(
GlToggle
).
props
(
'
value
'
)).
toEqual
(
false
);
});
});
ee/spec/helpers/boards_helper_spec.rb
View file @
30233179
...
@@ -8,17 +8,6 @@ RSpec.describe BoardsHelper do
...
@@ -8,17 +8,6 @@ RSpec.describe BoardsHelper do
let_it_be_with_refind
(
:project
)
{
create
(
:project
)
}
let_it_be_with_refind
(
:project
)
{
create
(
:project
)
}
let_it_be
(
:project_board
)
{
create
(
:board
,
project:
project
)
}
let_it_be
(
:project_board
)
{
create
(
:board
,
project:
project
)
}
describe
'#board_list_data'
do
let
(
:results
)
{
helper
.
board_list_data
}
it
'contains an endpoint to get users list'
do
assign
(
:board
,
project_board
)
assign
(
:project
,
project
)
expect
(
results
).
to
include
(
list_assignees_path:
"/-/boards/
#{
project_board
.
id
}
/users.json"
)
end
end
describe
'#current_board_json'
do
describe
'#current_board_json'
do
let
(
:board_json
)
{
helper
.
current_board_json
}
let
(
:board_json
)
{
helper
.
current_board_json
}
let
(
:label1
)
{
create
(
:label
,
name:
"feijoa"
)
}
let
(
:label1
)
{
create
(
:label
,
name:
"feijoa"
)
}
...
...
spec/features/boards/boards_spec.rb
View file @
30233179
...
@@ -282,7 +282,7 @@ RSpec.describe 'Project issue boards', :js do
...
@@ -282,7 +282,7 @@ RSpec.describe 'Project issue boards', :js do
it
'shows issue count on the list'
do
it
'shows issue count on the list'
do
page
.
within
(
find
(
".board:nth-child(2)"
))
do
page
.
within
(
find
(
".board:nth-child(2)"
))
do
expect
(
page
.
find
(
'[data-testid="board-items-count"]'
)).
to
have_text
(
total_planning_issues
)
expect
(
page
.
find
(
'[data-testid="board-items-count"]'
)).
to
have_text
(
total_planning_issues
)
expect
(
page
).
not_to
have_selector
(
'.
js-
max-issue-size'
)
expect
(
page
).
not_to
have_selector
(
'.max-issue-size'
)
end
end
end
end
end
end
...
...
spec/features/boards/focus_mode_spec.rb
View file @
30233179
...
@@ -12,6 +12,6 @@ RSpec.describe 'Issue Boards focus mode', :js do
...
@@ -12,6 +12,6 @@ RSpec.describe 'Issue Boards focus mode', :js do
end
end
it
'shows focus mode button to anonymous users'
do
it
'shows focus mode button to anonymous users'
do
expect
(
page
).
to
have_
selector
(
'.js-focus-mode-btn
'
)
expect
(
page
).
to
have_
button
_
(
'Toggle focus mode
'
)
end
end
end
end
spec/features/boards/multi_select_spec.rb
View file @
30233179
...
@@ -72,7 +72,7 @@ RSpec.describe 'Multi Select Issue', :js do
...
@@ -72,7 +72,7 @@ RSpec.describe 'Multi Select Issue', :js do
wait_for_requests
wait_for_requests
page
.
within
(
all
(
'.
js-
board-list'
)[
2
])
do
page
.
within
(
all
(
'.board-list'
)[
2
])
do
expect
(
find
(
'.board-card:nth-child(1)'
)).
to
have_content
(
issue1
.
title
)
expect
(
find
(
'.board-card:nth-child(1)'
)).
to
have_content
(
issue1
.
title
)
expect
(
find
(
'.board-card:nth-child(2)'
)).
to
have_content
(
issue2
.
title
)
expect
(
find
(
'.board-card:nth-child(2)'
)).
to
have_content
(
issue2
.
title
)
end
end
...
@@ -87,7 +87,7 @@ RSpec.describe 'Multi Select Issue', :js do
...
@@ -87,7 +87,7 @@ RSpec.describe 'Multi Select Issue', :js do
wait_for_requests
wait_for_requests
page
.
within
(
all
(
'.
js-
board-list'
)[
2
])
do
page
.
within
(
all
(
'.board-list'
)[
2
])
do
expect
(
find
(
'.board-card:nth-child(1)'
)).
to
have_content
(
issue1
.
title
)
expect
(
find
(
'.board-card:nth-child(1)'
)).
to
have_content
(
issue1
.
title
)
expect
(
find
(
'.board-card:nth-child(2)'
)).
to
have_content
(
issue2
.
title
)
expect
(
find
(
'.board-card:nth-child(2)'
)).
to
have_content
(
issue2
.
title
)
expect
(
find
(
'.board-card:nth-child(3)'
)).
to
have_content
(
issue3
.
title
)
expect
(
find
(
'.board-card:nth-child(3)'
)).
to
have_content
(
issue3
.
title
)
...
@@ -102,7 +102,7 @@ RSpec.describe 'Multi Select Issue', :js do
...
@@ -102,7 +102,7 @@ RSpec.describe 'Multi Select Issue', :js do
wait_for_requests
wait_for_requests
page
.
within
(
all
(
'.
js-
board-list'
)[
1
])
do
page
.
within
(
all
(
'.board-list'
)[
1
])
do
expect
(
find
(
'.board-card:nth-child(1)'
)).
to
have_content
(
issue1
.
title
)
expect
(
find
(
'.board-card:nth-child(1)'
)).
to
have_content
(
issue1
.
title
)
expect
(
find
(
'.board-card:nth-child(2)'
)).
to
have_content
(
issue2
.
title
)
expect
(
find
(
'.board-card:nth-child(2)'
)).
to
have_content
(
issue2
.
title
)
expect
(
find
(
'.board-card:nth-child(3)'
)).
to
have_content
(
issue5
.
title
)
expect
(
find
(
'.board-card:nth-child(3)'
)).
to
have_content
(
issue5
.
title
)
...
...
spec/frontend/boards/components/boards_selector_spec.js
View file @
30233179
import
{
GlDropdown
,
GlLoadingIcon
,
GlDropdownSectionHeader
}
from
'
@gitlab/ui
'
;
import
{
GlDropdown
,
GlLoadingIcon
,
GlDropdownSectionHeader
}
from
'
@gitlab/ui
'
;
import
{
mount
}
from
'
@vue/test-utils
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
Vue
,
{
nextTick
}
from
'
vue
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
VueApollo
from
'
vue-apollo
'
;
import
Vuex
from
'
vuex
'
;
import
Vuex
from
'
vuex
'
;
...
@@ -14,6 +13,7 @@ import groupRecentBoardsQuery from '~/boards/graphql/group_recent_boards.query.g
...
@@ -14,6 +13,7 @@ import groupRecentBoardsQuery from '~/boards/graphql/group_recent_boards.query.g
import
projectRecentBoardsQuery
from
'
~/boards/graphql/project_recent_boards.query.graphql
'
;
import
projectRecentBoardsQuery
from
'
~/boards/graphql/project_recent_boards.query.graphql
'
;
import
defaultStore
from
'
~/boards/stores
'
;
import
defaultStore
from
'
~/boards/stores
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
createMockApollo
from
'
helpers/mock_apollo_helper
'
;
import
{
mountExtended
}
from
'
helpers/vue_test_utils_helper
'
;
import
{
import
{
mockGroupBoardResponse
,
mockGroupBoardResponse
,
mockProjectBoardResponse
,
mockProjectBoardResponse
,
...
@@ -60,7 +60,7 @@ describe('BoardsSelector', () => {
...
@@ -60,7 +60,7 @@ describe('BoardsSelector', () => {
searchBoxInput
.
trigger
(
'
input
'
);
searchBoxInput
.
trigger
(
'
input
'
);
};
};
const
getDropdownItems
=
()
=>
wrapper
.
findAll
(
'
.js-
dropdown-item
'
);
const
getDropdownItems
=
()
=>
wrapper
.
findAll
ByTestId
(
'
dropdown-item
'
);
const
getDropdownHeaders
=
()
=>
wrapper
.
findAllComponents
(
GlDropdownSectionHeader
);
const
getDropdownHeaders
=
()
=>
wrapper
.
findAllComponents
(
GlDropdownSectionHeader
);
const
getLoadingIcon
=
()
=>
wrapper
.
findComponent
(
GlLoadingIcon
);
const
getLoadingIcon
=
()
=>
wrapper
.
findComponent
(
GlLoadingIcon
);
const
findDropdown
=
()
=>
wrapper
.
findComponent
(
GlDropdown
);
const
findDropdown
=
()
=>
wrapper
.
findComponent
(
GlDropdown
);
...
@@ -100,7 +100,7 @@ describe('BoardsSelector', () => {
...
@@ -100,7 +100,7 @@ describe('BoardsSelector', () => {
[
groupRecentBoardsQuery
,
groupRecentBoardsQueryHandlerSuccess
],
[
groupRecentBoardsQuery
,
groupRecentBoardsQueryHandlerSuccess
],
]);
]);
wrapper
=
mount
(
BoardsSelector
,
{
wrapper
=
mount
Extended
(
BoardsSelector
,
{
store
,
store
,
apolloProvider
:
fakeApollo
,
apolloProvider
:
fakeApollo
,
propsData
:
{
propsData
:
{
...
...
spec/frontend/boards/components/issue_time_estimate_spec.js
View file @
30233179
...
@@ -5,6 +5,8 @@ import IssueTimeEstimate from '~/boards/components/issue_time_estimate.vue';
...
@@ -5,6 +5,8 @@ import IssueTimeEstimate from '~/boards/components/issue_time_estimate.vue';
describe
(
'
Issue Time Estimate component
'
,
()
=>
{
describe
(
'
Issue Time Estimate component
'
,
()
=>
{
let
wrapper
;
let
wrapper
;
const
findIssueTimeEstimate
=
()
=>
wrapper
.
find
(
'
[data-testid="issue-time-estimate"]
'
);
afterEach
(()
=>
{
afterEach
(()
=>
{
wrapper
.
destroy
();
wrapper
.
destroy
();
});
});
...
@@ -26,7 +28,7 @@ describe('Issue Time Estimate component', () => {
...
@@ -26,7 +28,7 @@ describe('Issue Time Estimate component', () => {
});
});
it
(
'
renders expanded time estimate in tooltip
'
,
()
=>
{
it
(
'
renders expanded time estimate in tooltip
'
,
()
=>
{
expect
(
wrapper
.
find
(
'
.js-issue-time-estimate
'
).
text
()).
toContain
(
'
2 weeks 3 days 1 minute
'
);
expect
(
findIssueTimeEstimate
(
).
text
()).
toContain
(
'
2 weeks 3 days 1 minute
'
);
});
});
it
(
'
prevents tooltip xss
'
,
async
()
=>
{
it
(
'
prevents tooltip xss
'
,
async
()
=>
{
...
@@ -42,7 +44,7 @@ describe('Issue Time Estimate component', () => {
...
@@ -42,7 +44,7 @@ describe('Issue Time Estimate component', () => {
expect
(
alertSpy
).
not
.
toHaveBeenCalled
();
expect
(
alertSpy
).
not
.
toHaveBeenCalled
();
expect
(
wrapper
.
find
(
'
time
'
).
text
().
trim
()).
toEqual
(
'
0m
'
);
expect
(
wrapper
.
find
(
'
time
'
).
text
().
trim
()).
toEqual
(
'
0m
'
);
expect
(
wrapper
.
find
(
'
.js-issue-time-estimate
'
).
text
()).
toContain
(
'
0m
'
);
expect
(
findIssueTimeEstimate
(
).
text
()).
toContain
(
'
0m
'
);
});
});
});
});
...
@@ -63,7 +65,7 @@ describe('Issue Time Estimate component', () => {
...
@@ -63,7 +65,7 @@ describe('Issue Time Estimate component', () => {
});
});
it
(
'
renders expanded time estimate in tooltip
'
,
()
=>
{
it
(
'
renders expanded time estimate in tooltip
'
,
()
=>
{
expect
(
wrapper
.
find
(
'
.js-issue-time-estimate
'
).
text
()).
toContain
(
'
104 hours 1 minute
'
);
expect
(
findIssueTimeEstimate
(
).
text
()).
toContain
(
'
104 hours 1 minute
'
);
});
});
});
});
});
});
spec/frontend/boards/components/item_count_spec.js
View file @
30233179
...
@@ -29,7 +29,7 @@ describe('IssueCount', () => {
...
@@ -29,7 +29,7 @@ describe('IssueCount', () => {
});
});
it
(
'
does not contains maxIssueCount in the template
'
,
()
=>
{
it
(
'
does not contains maxIssueCount in the template
'
,
()
=>
{
expect
(
vm
.
find
(
'
.
js-
max-issue-size
'
).
exists
()).
toBe
(
false
);
expect
(
vm
.
find
(
'
.max-issue-size
'
).
exists
()).
toBe
(
false
);
});
});
});
});
...
@@ -50,7 +50,7 @@ describe('IssueCount', () => {
...
@@ -50,7 +50,7 @@ describe('IssueCount', () => {
});
});
it
(
'
contains maxIssueCount in the template
'
,
()
=>
{
it
(
'
contains maxIssueCount in the template
'
,
()
=>
{
expect
(
vm
.
find
(
'
.
js-
max-issue-size
'
).
text
()).
toEqual
(
String
(
maxIssueCount
));
expect
(
vm
.
find
(
'
.max-issue-size
'
).
text
()).
toEqual
(
String
(
maxIssueCount
));
});
});
it
(
'
does not have text-danger class when issueSize is less than maxIssueCount
'
,
()
=>
{
it
(
'
does not have text-danger class when issueSize is less than maxIssueCount
'
,
()
=>
{
...
@@ -75,7 +75,7 @@ describe('IssueCount', () => {
...
@@ -75,7 +75,7 @@ describe('IssueCount', () => {
});
});
it
(
'
contains maxIssueCount in the template
'
,
()
=>
{
it
(
'
contains maxIssueCount in the template
'
,
()
=>
{
expect
(
vm
.
find
(
'
.
js-
max-issue-size
'
).
text
()).
toEqual
(
String
(
maxIssueCount
));
expect
(
vm
.
find
(
'
.max-issue-size
'
).
text
()).
toEqual
(
String
(
maxIssueCount
));
});
});
it
(
'
has text-danger class
'
,
()
=>
{
it
(
'
has text-danger class
'
,
()
=>
{
...
...
spec/support/shared_examples/boards/multiple_issue_boards_shared_examples.rb
View file @
30233179
...
@@ -138,7 +138,7 @@ RSpec.shared_examples 'multiple issue boards' do
...
@@ -138,7 +138,7 @@ RSpec.shared_examples 'multiple issue boards' do
wait_for_requests
wait_for_requests
dropdown_selector
=
'
.js-boards-selector
.dropdown-menu'
dropdown_selector
=
'
[data-testid="boards-selector"]
.dropdown-menu'
page
.
within
(
dropdown_selector
)
do
page
.
within
(
dropdown_selector
)
do
yield
yield
end
end
...
...
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