334 lines
9.5 KiB
JavaScript
334 lines
9.5 KiB
JavaScript
import {expect, test, describe, vi, beforeEach} from "vitest"
|
||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||
import { createStore } from 'vuex'
|
||
import {store as users} from "@/store/modules/users"
|
||
import axios from "axios";
|
||
|
||
vi.mock('axios')
|
||
|
||
const defaultUsers = [
|
||
{
|
||
"id": 1,
|
||
"serviceId": [1, 3],
|
||
"firstName": "Leanne 1",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
},
|
||
{
|
||
"id": 2,
|
||
"serviceId": [1],
|
||
"firstName": "Leanne 2",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
},
|
||
{
|
||
"id": 3,
|
||
"serviceId": [2, 3],
|
||
"firstName": "Leanne 3",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
},
|
||
{
|
||
"id": 4,
|
||
"serviceId": [3],
|
||
"firstName": "Leanne 4",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
},
|
||
{
|
||
"id": 5,
|
||
"serviceId": [4, 5],
|
||
"firstName": "Leanne 5",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
},
|
||
]
|
||
|
||
describe("tests users store with vuex", () => {
|
||
const store = createStore({
|
||
plugins: [],
|
||
modules: {
|
||
users
|
||
},
|
||
})
|
||
|
||
beforeEach(() => {
|
||
store.dispatch('users/resetStore')
|
||
})
|
||
|
||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||
|
||
axios.get.mockResolvedValue({
|
||
data: defaultUsers,
|
||
})
|
||
|
||
test('Upload Users', async () => {
|
||
|
||
const users = store.getters['users/users']
|
||
|
||
expect(users).toEqual([]) // empty users array of store
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
|
||
const uploadUsers = store.getters['users/users']
|
||
|
||
expect(uploadUsers).not.toBe([]) // full services array of store
|
||
expect(uploadUsers.length).toBeGreaterThan(0) // full services array of store
|
||
|
||
})
|
||
|
||
test('Upload users with selected service to store', async () => {
|
||
|
||
await serviceOfUsers.getUsersByService(1, 'dev')
|
||
|
||
const expectedUsers = defaultUsers.filter(user => user.serviceId.includes(1))
|
||
|
||
const usersWithService = store.getters['users/usersWithService']
|
||
|
||
expect(expectedUsers).toEqual(usersWithService) // users array selected service
|
||
|
||
})
|
||
|
||
test('Upload users withhout selected service to store', async () => {
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
await serviceOfUsers.getUsersWithoutService(1)
|
||
|
||
const usersWithoutService = store.getters['users/usersWithoutService']
|
||
|
||
usersWithoutService.map(user => {
|
||
expect(user.serviceId).not.toBe(1)
|
||
})
|
||
|
||
})
|
||
|
||
test('Created and added new user layout to selected user in store', async () => {
|
||
|
||
const newUser = await serviceOfUsers.createNewUser()
|
||
|
||
const newUserStore = store.getters['users/selectedUser']
|
||
|
||
expect(newUserStore.id).toBe(-1) // new user layout check id
|
||
expect(newUserStore).toEqual(newUser) // new user layout equal
|
||
|
||
})
|
||
|
||
test('Get selected user from store', async () => {
|
||
|
||
await serviceOfUsers.createNewUser()
|
||
const selectedUser = await serviceOfUsers.getSelectedUser()
|
||
|
||
const selectedUserStore = store.getters['users/selectedUser']
|
||
|
||
expect(selectedUserStore).toEqual(selectedUser)
|
||
|
||
})
|
||
|
||
test('Set selected user in store', async () => {
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
await serviceOfUsers.createNewUser()
|
||
|
||
const selectedNewUserStore = store.getters['users/selectedUser']
|
||
|
||
expect(selectedNewUserStore.id).toBe(-1) // new user layout check id
|
||
|
||
const updatedUser = await serviceOfUsers.setSelectedUser(3)
|
||
const updatedUserStore = store.getters['users/selectedUser']
|
||
|
||
expect(updatedUserStore.id).toBe(3) // updated user check id
|
||
expect(updatedUserStore).toEqual(updatedUser)
|
||
|
||
})
|
||
|
||
test('Set status user in store', async () => {
|
||
|
||
const defaultUserStatus = store.getters['users/userStatus']
|
||
|
||
expect(defaultUserStatus).toBe('inactive')
|
||
|
||
const updatedUserStatus = await serviceOfUsers.setStatusUser('active')
|
||
const updatedUserStatusStore = store.getters['users/userStatus']
|
||
|
||
expect(updatedUserStatus).toBe('active')
|
||
expect(updatedUserStatusStore).toEqual(updatedUserStatus)
|
||
|
||
})
|
||
|
||
test('Added user to users with selected service of store', async () => {
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
await serviceOfUsers.addUserToService(5, 2)
|
||
|
||
const usersWithServices = store.getters['users/usersWithService']
|
||
|
||
// console.log('usersWithServices', usersWithServices)
|
||
|
||
const userAddedService = usersWithServices.find(user => user.id === 5)
|
||
|
||
expect(userAddedService).toBeDefined()
|
||
expect(userAddedService.serviceId.includes(2)).toBe(true)
|
||
|
||
})
|
||
|
||
test('Editing fields values in selected user', async () => {
|
||
|
||
const forEditUser =
|
||
{
|
||
"id": 5,
|
||
"serviceId": [4, 5],
|
||
"firstName": "Leanne 5",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
}
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
|
||
const users = store.getters['users/users']
|
||
const userBeforeEdit = users.find(user => user.id === 5)
|
||
|
||
expect(userBeforeEdit).toEqual(forEditUser)
|
||
|
||
await serviceOfUsers.setSelectedUser(5)
|
||
|
||
await serviceOfUsers.editUserByService({key: "firstName", value: "Leanne 5 edited"})
|
||
await serviceOfUsers.editUserByService({key: "lastName", value: "Graham edited"})
|
||
|
||
const editedUser = store.getters['users/selectedUser']
|
||
|
||
expect(editedUser.firstName).toEqual("Leanne 5 edited")
|
||
expect(editedUser.lastName).toEqual("Graham edited")
|
||
|
||
await serviceOfUsers.editUserByService({key: "firstName", value: "Leanne 5"}) // return to default value
|
||
await serviceOfUsers.editUserByService({key: "lastName", value: "Graham"}) // return to default value
|
||
|
||
})
|
||
|
||
test('Deleted user from users with selected service of store', async () => {
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
await serviceOfUsers.deleteUserFromService(5, 4)
|
||
|
||
const usersWithServices = store.getters['users/usersWithService']
|
||
const usersWithoutServices = store.getters['users/usersWithoutService']
|
||
|
||
const userWithService = usersWithServices.find(user => user.id === 5)
|
||
const userWithoutService = usersWithoutServices.find(user => user.id === 5)
|
||
|
||
expect(userWithService).toBeUndefined() // user with service deleted
|
||
expect(userWithoutService).toBeDefined() // user without service added
|
||
expect(userWithoutService.serviceId.includes(4)).toBe(false) // selected service was deleted from user serviceId
|
||
|
||
})
|
||
|
||
test('Saving new user to array users of selected service', async () => {
|
||
|
||
const newUser =
|
||
{
|
||
"id": -1,
|
||
"serviceId": [],
|
||
"firstName": "Leanne 5 New",
|
||
"lastName": "Graham New",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
}
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
store.dispatch('users/updateSelectedUser', newUser)
|
||
|
||
const users = store.getters['users/users']
|
||
const countUsers = users.length
|
||
|
||
await serviceOfUsers.saveUpdatedDataUser(3)
|
||
|
||
const usersWithService = store.getters['users/usersWithService']
|
||
const newUserAfterAdding = usersWithService.find(user => user.id === countUsers + 1) // Пока не получаем нового юзера с бэка, поэтому задаём id по количеству всех юзеров
|
||
|
||
expect(newUserAfterAdding).toBeDefined()
|
||
|
||
expect(newUserAfterAdding.id).toEqual(countUsers + 1)
|
||
expect(newUserAfterAdding.firstName).toEqual("Leanne 5 New")
|
||
expect(newUserAfterAdding.lastName).toEqual("Graham New")
|
||
|
||
})
|
||
|
||
test('Saving edited user to array users of selected service', async () => {
|
||
|
||
const editedUser =
|
||
{
|
||
"id": 3,
|
||
"serviceId": [2, 3],
|
||
"firstName": "Leanne 3 Edited",
|
||
"lastName": "Graham Edited",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
}
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
store.dispatch('users/updateSelectedUser', editedUser)
|
||
|
||
await serviceOfUsers.saveUpdatedDataUser(2)
|
||
|
||
const usersWithService = store.getters['users/usersWithService']
|
||
const userAfterUpdating = usersWithService.find(user => user.id === 3)
|
||
|
||
// console.log('userAfterUpdating', userAfterUpdating)
|
||
|
||
expect(userAfterUpdating).toBeDefined()
|
||
|
||
expect(userAfterUpdating.id).toEqual(3)
|
||
expect(userAfterUpdating.firstName).toEqual("Leanne 3 Edited")
|
||
expect(userAfterUpdating.lastName).toEqual("Graham Edited")
|
||
|
||
})
|
||
|
||
test('Reset store', async () => {
|
||
|
||
const selectedUser =
|
||
{
|
||
"id": 5,
|
||
"serviceId": [4, 5],
|
||
"firstName": "Leanne 5",
|
||
"lastName": "Graham",
|
||
"email": "test@mail.ru",
|
||
"role": "admin",
|
||
}
|
||
|
||
await serviceOfUsers.getUsers('dev')
|
||
await serviceOfUsers.setSelectedUser(5)
|
||
await serviceOfUsers.setStatusUser('active')
|
||
|
||
const selectedUserStore = store.getters['users/selectedUser']
|
||
const users = store.getters['users/users']
|
||
const userStatus = store.getters['users/userStatus']
|
||
|
||
expect(selectedUser).toEqual(selectedUserStore) // User is selected
|
||
expect(users).not.toStrictEqual([]) // Not empty users
|
||
expect(userStatus).toEqual('active') // New user status
|
||
|
||
await serviceOfUsers.resetStore()
|
||
|
||
const resetSelectedUser = store.getters['users/selectedUser']
|
||
const resetUsers = store.getters['users/users']
|
||
const resetUserStatus = store.getters['users/userStatus']
|
||
|
||
// console.log('Reset store 11 test', resetSelectedService)
|
||
|
||
expect(resetSelectedUser).toBe(null) // After reset store
|
||
expect(resetUsers).toStrictEqual([]) // After reset store
|
||
expect(resetUserStatus).toEqual('inactive') // After reset store
|
||
|
||
})
|
||
|
||
})
|
||
|
||
|