Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
A
admin-fe
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Maxim Filippov
admin-fe
Commits
11255be5
Commit
11255be5
authored
5 years ago
by
Angelina Filippova
Browse files
Options
Downloads
Patches
Plain Diff
Update tests for applying actions on multiple users
parent
90553ba7
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/views/users/components/DropdownMenu.vue
+3
-3
3 additions, 3 deletions
src/views/users/components/DropdownMenu.vue
test/views/users/dropdownMenu.test.js
+210
-25
210 additions, 25 deletions
test/views/users/dropdownMenu.test.js
with
213 additions
and
28 deletions
src/views/users/components/DropdownMenu.vue
+
3
−
3
View file @
11255be5
...
...
@@ -7,7 +7,7 @@
{{
$t
(
'
users.grantAdmin
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"revokeRight
To
MultipleUsers('admin')"
>
@
click.native=
"revokeRight
From
MultipleUsers('admin')"
>
{{
$t
(
'
users.revokeAdmin
'
)
}}
</el-dropdown-item>
<el-dropdown-item
...
...
@@ -15,7 +15,7 @@
{{
$t
(
'
users.grantModerator
'
)
}}
</el-dropdown-item>
<el-dropdown-item
@
click.native=
"revokeRight
To
MultipleUsers('moderator')"
>
@
click.native=
"revokeRight
From
MultipleUsers('moderator')"
>
{{
$t
(
'
users.revokeModerator
'
)
}}
</el-dropdown-item>
<el-dropdown-item
...
...
@@ -149,7 +149,7 @@ export default {
grantRight
(
right
)
)
},
revokeRight
To
MultipleUsers
(
right
)
{
revokeRight
From
MultipleUsers
(
right
)
{
const
{
revokeRight
}
=
this
.
mappers
()
this
.
confirmMessage
(
`Are you sure you want to revoke
${
right
}
rights from all selected users?`
,
...
...
This diff is collapsed.
Click to expand it.
test/views/users/dropdownMenu.test.js
+
210
−
25
View file @
11255be5
...
...
@@ -22,10 +22,9 @@ describe('Apply users actions to multiple users', () => {
store
=
new
Vuex
.
Store
(
cloneDeep
(
storeConfig
))
store
.
dispatch
(
'
FetchUsers
'
,
{
page
:
1
})
await
flushPromises
()
global
.
confirm
=
()
=>
true
})
it
(
'
calls function that grants admin and moderator
rights to multiple users
'
,
async
(
done
)
=>
{
it
(
'
grants admin
rights to multiple users
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
...
...
@@ -43,13 +42,63 @@ describe('Apply users actions to multiple users', () => {
expect
(
wrapper
.
vm
.
grantRightToMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
grantRightToMultipleUsers
).
toHaveBeenCalledWith
(
'
admin
'
)
const
grantRight
=
wrapper
.
vm
.
mappers
().
grantRight
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
user3
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
user1
.
roles
.
admin
).
toBe
(
true
)
expect
(
user2
.
roles
.
admin
).
toBe
(
false
)
expect
(
user3
.
roles
.
admin
).
toBe
(
false
)
grantRight
(
'
admin
'
)()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
updatedUser3
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
updatedUser1
.
roles
.
admin
).
toBe
(
true
)
expect
(
updatedUser2
.
roles
.
admin
).
toBe
(
false
)
expect
(
updatedUser3
.
roles
.
admin
).
toBe
(
true
)
done
()
})
it
(
'
grants moderator rights to multiple users
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
sync
:
false
,
propsData
:
{
selectedUsers
:
users
}
})
await
flushPromises
()
const
grantRightToMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
grantRightToMultipleUsers
:
grantRightToMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(3)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
grantRightToMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
grantRightToMultipleUsers
).
toHaveBeenCalledWith
(
'
moderator
'
)
const
grantRight
=
wrapper
.
vm
.
mappers
().
grantRight
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
user3
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
user1
.
roles
.
moderator
).
toBe
(
false
)
expect
(
user2
.
roles
.
moderator
).
toBe
(
false
)
expect
(
user3
.
roles
.
moderator
).
toBe
(
false
)
grantRight
(
'
moderator
'
)()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
updatedUser3
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
updatedUser1
.
roles
.
moderator
).
toBe
(
true
)
expect
(
updatedUser2
.
roles
.
moderator
).
toBe
(
false
)
expect
(
updatedUser3
.
roles
.
moderator
).
toBe
(
true
)
done
()
})
it
(
'
calls function that revokes admin and moderator
rights
to
multiple users
'
,
async
(
done
)
=>
{
it
(
'
revokes admin
rights
from
multiple users
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
...
...
@@ -60,20 +109,49 @@ describe('Apply users actions to multiple users', () => {
})
await
flushPromises
()
const
revokeRight
To
MultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
revokeRight
To
MultipleUsers
:
revokeRight
To
MultipleUsersStub
})
const
revokeRight
From
MultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
revokeRight
From
MultipleUsers
:
revokeRight
From
MultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(2)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
revokeRightToMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
revokeRightToMultipleUsers
).
toHaveBeenCalledWith
(
'
admin
'
)
expect
(
wrapper
.
vm
.
revokeRightFromMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
revokeRightFromMultipleUsers
).
toHaveBeenCalledWith
(
'
admin
'
)
const
revokeRight
=
wrapper
.
vm
.
mappers
().
revokeRight
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
user1
.
roles
.
admin
).
toBe
(
true
)
expect
(
user2
.
roles
.
admin
).
toBe
(
false
)
revokeRight
(
'
admin
'
)()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
updatedUser1
.
roles
.
admin
).
toBe
(
false
)
expect
(
updatedUser2
.
roles
.
admin
).
toBe
(
false
)
done
()
})
it
(
'
calls a function that revokes moderator rights from multiple users
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
sync
:
false
,
propsData
:
{
selectedUsers
:
users
}
})
await
flushPromises
()
const
revokeRightFromMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
revokeRightFromMultipleUsers
:
revokeRightFromMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(4)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
revokeRight
To
MultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
revokeRight
To
MultipleUsers
).
toHaveBeenCalledWith
(
'
moderator
'
)
expect
(
wrapper
.
vm
.
revokeRight
From
MultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
revokeRight
From
MultipleUsers
).
toHaveBeenCalledWith
(
'
moderator
'
)
done
()
})
it
(
'
calls function that activates, deactivates and dele
tes multiple accounts
'
,
async
(
done
)
=>
{
it
(
'
activa
tes multiple accounts
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
...
...
@@ -86,23 +164,90 @@ describe('Apply users actions to multiple users', () => {
const
activateMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
activateMultipleUsers
:
activateMultipleUsersStub
})
const
deactivateMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
deactivateMultipleUsers
:
deactivateMultipleUsersStub
})
const
deleteMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
deleteMultipleUsers
:
deleteMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(5)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
activateMultipleUsers
).
toHaveBeenCalled
()
const
activate
=
wrapper
.
vm
.
mappers
().
activate
const
user
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
user
.
deactivated
).
toBe
(
true
)
activate
()
await
flushPromises
()
const
updatedUser
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
updatedUser
.
deactivated
).
toBe
(
false
)
done
()
})
it
(
'
deactivates multiple accounts
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
sync
:
false
,
propsData
:
{
selectedUsers
:
users
}
})
await
flushPromises
()
const
deactivateMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
deactivateMultipleUsers
:
deactivateMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(6)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
deactivateMultipleUsers
).
toHaveBeenCalled
()
const
deactivate
=
wrapper
.
vm
.
mappers
().
deactivate
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
expect
(
user1
.
deactivated
).
toBe
(
false
)
expect
(
user2
.
deactivated
).
toBe
(
false
)
deactivate
()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
expect
(
updatedUser1
.
deactivated
).
toBe
(
true
)
expect
(
updatedUser2
.
deactivated
).
toBe
(
true
)
done
()
})
it
(
'
deletes multiple accounts
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
sync
:
false
,
propsData
:
{
selectedUsers
:
users
}
})
await
flushPromises
()
const
deleteMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
deleteMultipleUsers
:
deleteMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(7)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
deleteMultipleUsers
).
toHaveBeenCalled
()
const
remove
=
wrapper
.
vm
.
mappers
().
remove
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
user3
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
user1
.
deactivated
).
toBe
(
false
)
expect
(
user2
.
deactivated
).
toBe
(
false
)
expect
(
user3
.
deactivated
).
toBe
(
true
)
remove
()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
updatedUser3
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
updatedUser1
.
deactivated
).
toBe
(
true
)
expect
(
updatedUser2
.
deactivated
).
toBe
(
true
)
expect
(
updatedUser3
.
deactivated
).
toBe
(
true
)
done
()
})
it
(
'
calls function that applies and remov
es tags fr
om
multiple accounts
'
,
async
(
done
)
=>
{
it
(
'
appli
es tags f
o
r multiple accounts
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
...
...
@@ -115,32 +260,72 @@ describe('Apply users actions to multiple users', () => {
const
addTagForMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
addTagForMultipleUsers
:
addTagForMultipleUsersStub
})
const
removeTagFromMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
removeTagFromMultipleUsers
:
removeTagFromMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(8) button:nth-child(1)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
addTagForMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
addTagForMultipleUsers
).
toHaveBeenCalledWith
(
'
force_nsfw
'
)
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(9) button:nth-child(2)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalledWith
(
'
strip_media
'
)
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(10) button:nth-child(1)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
addTagForMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
addTagForMultipleUsers
).
toHaveBeenCalledWith
(
'
force_unlisted
'
)
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(11) button:nth-child(2)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalledWith
(
'
sandbox
'
)
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(12) button:nth-child(1)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
addTagForMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
addTagForMultipleUsers
).
toHaveBeenCalledWith
(
'
disable_remote_subscription
'
)
const
addTag
=
wrapper
.
vm
.
mappers
().
addTag
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
expect
(
user1
.
tags
.
length
).
toBe
(
0
)
expect
(
user2
.
tags
.
length
).
toBe
(
1
)
addTag
(
'
strip_media
'
)()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
0
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
1
]
expect
(
updatedUser1
.
tags
.
length
).
toBe
(
1
)
expect
(
updatedUser2
.
tags
.
length
).
toBe
(
2
)
done
()
})
it
(
'
removes tags from multiple accounts
'
,
async
(
done
)
=>
{
const
wrapper
=
mount
(
DropdownMenu
,
{
store
,
localVue
,
sync
:
false
,
propsData
:
{
selectedUsers
:
users
}
})
await
flushPromises
()
const
removeTagFromMultipleUsersStub
=
jest
.
fn
()
wrapper
.
setMethods
({
removeTagFromMultipleUsers
:
removeTagFromMultipleUsersStub
})
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(9) button:nth-child(2)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalledWith
(
'
strip_media
'
)
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(11) button:nth-child(2)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalledWith
(
'
sandbox
'
)
wrapper
.
find
(
`.el-dropdown-menu__item:nth-child(13) button:nth-child(2)`
).
trigger
(
'
click
'
)
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalled
()
expect
(
wrapper
.
vm
.
removeTagFromMultipleUsers
).
toHaveBeenCalledWith
(
'
disable_any_subscription
'
)
const
removeTag
=
wrapper
.
vm
.
mappers
().
removeTag
const
user1
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
user2
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
user1
.
tags
.
length
).
toBe
(
1
)
expect
(
user2
.
tags
.
length
).
toBe
(
1
)
removeTag
(
'
strip_media
'
)()
await
flushPromises
()
const
updatedUser1
=
store
.
state
.
users
.
fetchedUsers
[
1
]
const
updatedUser2
=
store
.
state
.
users
.
fetchedUsers
[
2
]
expect
(
updatedUser1
.
tags
.
length
).
toBe
(
1
)
expect
(
updatedUser2
.
tags
.
length
).
toBe
(
0
)
done
()
})
})
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment