diff --git a/src/views/users/components/DropdownMenu.vue b/src/views/users/components/DropdownMenu.vue
index 68526186..4edda779 100644
--- a/src/views/users/components/DropdownMenu.vue
+++ b/src/views/users/components/DropdownMenu.vue
@@ -7,7 +7,7 @@
{{ $t('users.grantAdmin') }}
+ @click.native="revokeRightFromMultipleUsers('admin')">
{{ $t('users.revokeAdmin') }}
+ @click.native="revokeRightFromMultipleUsers('moderator')">
{{ $t('users.revokeModerator') }}
{
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,26 @@ describe('Apply users actions to multiple users', () => {
expect(wrapper.vm.grantRightToMultipleUsers).toHaveBeenCalled()
expect(wrapper.vm.grantRightToMultipleUsers).toHaveBeenCalledWith('admin')
- 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.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('calls function that revokes admin and moderator rights to multiple users', async (done) => {
+ it('grants moderator rights to multiple users', async (done) => {
const wrapper = mount(DropdownMenu, {
store,
localVue,
@@ -60,20 +72,86 @@ describe('Apply users actions to multiple users', () => {
})
await flushPromises()
- const revokeRightToMultipleUsersStub = jest.fn()
- wrapper.setMethods({ revokeRightToMultipleUsers: revokeRightToMultipleUsersStub })
+ const grantRightToMultipleUsersStub = jest.fn()
+ wrapper.setMethods({ grantRightToMultipleUsers: grantRightToMultipleUsersStub })
- wrapper.find(`.el-dropdown-menu__item:nth-child(2)`).trigger('click')
- expect(wrapper.vm.revokeRightToMultipleUsers).toHaveBeenCalled()
- expect(wrapper.vm.revokeRightToMultipleUsers).toHaveBeenCalledWith('admin')
+ wrapper.find(`.el-dropdown-menu__item:nth-child(3)`).trigger('click')
+ expect(wrapper.vm.grantRightToMultipleUsers).toHaveBeenCalled()
+ expect(wrapper.vm.grantRightToMultipleUsers).toHaveBeenCalledWith('moderator')
- wrapper.find(`.el-dropdown-menu__item:nth-child(4)`).trigger('click')
- expect(wrapper.vm.revokeRightToMultipleUsers).toHaveBeenCalled()
- expect(wrapper.vm.revokeRightToMultipleUsers).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 activates, deactivates and deletes multiple accounts', async (done) => {
+ it('revokes admin 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(2)`).trigger('click')
+ 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.revokeRightFromMultipleUsers).toHaveBeenCalled()
+ expect(wrapper.vm.revokeRightFromMultipleUsers).toHaveBeenCalledWith('moderator')
+ done()
+ })
+
+ it('activates 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()
- wrapper.find(`.el-dropdown-menu__item:nth-child(6)`).trigger('click')
- expect(wrapper.vm.deactivateMultipleUsers).toHaveBeenCalled()
+ const activate = wrapper.vm.mappers().activate
+ const user = store.state.users.fetchedUsers[2]
+ expect(user.deactivated).toBe(true)
+ activate()
+ await flushPromises()
- wrapper.find(`.el-dropdown-menu__item:nth-child(7)`).trigger('click')
- expect(wrapper.vm.deleteMultipleUsers).toHaveBeenCalled()
+ const updatedUser = store.state.users.fetchedUsers[2]
+ expect(updatedUser.deactivated).toBe(false)
done()
})
- it('calls function that applies and removes tags from multiple accounts', async (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('applies tags for 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()
})
})