admin-fe/test/views/users/dropdownMenu.test.js
2019-05-14 02:45:24 +03:00

146 lines
5.5 KiB
JavaScript

import Vuex from 'vuex'
import { mount, createLocalVue, config } from '@vue/test-utils'
import Element from 'element-ui'
import DropdownMenu from '@/views/users/components/DropdownMenu'
import storeConfig from './store.conf'
import { cloneDeep } from 'lodash'
import flushPromises from 'flush-promises'
import { users } from '@/api/__mocks__/users.js'
config.mocks["$t"] = () => {}
const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(Element)
jest.mock('@/api/users')
describe('Apply users actions to multiple users', () => {
let store
beforeEach(async() => {
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) => {
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(1)`).trigger('click')
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')
done()
})
it('calls function that revokes admin and moderator rights to multiple users', async (done) => {
const wrapper = mount(DropdownMenu, {
store,
localVue,
sync: false,
propsData: {
selectedUsers: users
}
})
await flushPromises()
const revokeRightToMultipleUsersStub = jest.fn()
wrapper.setMethods({ revokeRightToMultipleUsers: revokeRightToMultipleUsersStub })
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(4)`).trigger('click')
expect(wrapper.vm.revokeRightToMultipleUsers).toHaveBeenCalled()
expect(wrapper.vm.revokeRightToMultipleUsers).toHaveBeenCalledWith('moderator')
done()
})
it('calls function that activates, deactivates and deletes multiple accounts', async (done) => {
const wrapper = mount(DropdownMenu, {
store,
localVue,
sync: false,
propsData: {
selectedUsers: users
}
})
await flushPromises()
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()
wrapper.find(`.el-dropdown-menu__item:nth-child(7)`).trigger('click')
expect(wrapper.vm.deleteMultipleUsers).toHaveBeenCalled()
done()
})
it('calls function that applies and removes tags from multiple accounts', async (done) => {
const wrapper = mount(DropdownMenu, {
store,
localVue,
sync: false,
propsData: {
selectedUsers: users
}
})
await flushPromises()
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')
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')
done()
})
})