movied users from old project to new project anover repository, updated tests, cleared warns and errors in tests
This commit is contained in:
@@ -43,8 +43,8 @@ describe('test for AdapterOfUsers', () => {
|
||||
axios.post.mockResolvedValue({
|
||||
data: apiUser,
|
||||
})
|
||||
|
||||
const user = await adapterOfUsers.createUser()
|
||||
|
||||
const user = await adapterOfUsers.createUser(appUser)
|
||||
expect(user).toEqual(appUser)
|
||||
})
|
||||
|
||||
|
||||
@@ -1,67 +1,232 @@
|
||||
import {describe, expect, test, beforeEach} from "vitest";
|
||||
import { expect, test, describe, vi, beforeEach} from "vitest"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import {createStore} from 'vuex'
|
||||
import {addedService, updatedService, removedNewService, deletedService} from '@services/serviceOfServices/helpers.js'
|
||||
import { createStore } from 'vuex'
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import axios from "axios";
|
||||
|
||||
class AdapterOfServices {
|
||||
constructor() {
|
||||
vi.mock('axios')
|
||||
|
||||
const defaultServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"created_at": "2024-03-07T11:43:51.026265459+03:00",
|
||||
"updated_at": "2024-03-07T13:35:12.506368972+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 2",
|
||||
"port": 4548,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"site_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 2",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 3",
|
||||
"port": 2527,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"site_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 3...",
|
||||
"is_online": true
|
||||
}
|
||||
]
|
||||
|
||||
async getServices() {
|
||||
return [{id: 1, name: 'service1'}, {id: 2, name: 'service2'}]
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"created_at": "2024-03-07T11:43:51.026265459+03:00",
|
||||
"updated_at": "2024-03-07T13:35:12.506368972+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 2",
|
||||
"port": 4548,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 2",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 3",
|
||||
"port": 2527,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 3...",
|
||||
"is_online": true
|
||||
}
|
||||
}
|
||||
|
||||
const services = {
|
||||
namespaced: true,
|
||||
state: {
|
||||
servicesList: [],
|
||||
},
|
||||
mutations: {
|
||||
setServicesList(state, services) {
|
||||
state.servicesList = services
|
||||
},
|
||||
},
|
||||
getters: {
|
||||
servicesList: state => {
|
||||
return state.servicesList
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
resetStore({state}) {
|
||||
state.servicesList = []
|
||||
},
|
||||
saveServices({commit}, services) {
|
||||
commit('setServicesList', services)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
describe('tests for ServiceOfServices', () => {
|
||||
const adapterOfServices = new AdapterOfServices()
|
||||
]
|
||||
|
||||
describe("tests services of services", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
services
|
||||
},
|
||||
})
|
||||
|
||||
beforeEach( async() => {
|
||||
await store.dispatch('services/resetStore')
|
||||
beforeEach(() => {
|
||||
store.dispatch('services/resetStore')
|
||||
})
|
||||
|
||||
test('init', () => {
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
expect(serviceOfServices).toBeDefined()
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultServices,
|
||||
})
|
||||
|
||||
test('test of fetchServicesList', async () => {
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
test('Upload services', async () => {
|
||||
|
||||
await serviceOfServices.fetchServices()
|
||||
const services = store.getters['services/services']
|
||||
|
||||
const usersList = store.getters['services/servicesList']
|
||||
expect(services).toEqual([]) // empty services array of store
|
||||
|
||||
const uploadServices = await serviceOfServices.fetchServices()
|
||||
|
||||
expect(uploadServices).toEqual(resServices) // full services array of store
|
||||
|
||||
expect(usersList).toEqual([{id: 1, name: 'service1'}, {id: 2, name: 'service2'}])
|
||||
})
|
||||
|
||||
test('Added new service layout to services', async () => {
|
||||
const expectedserviceData = {"port": "", "name": "", id: -1}
|
||||
|
||||
const newService = await serviceOfServices.addNewServiceLayout()
|
||||
|
||||
expect({newService}).toEqual({newService: expectedserviceData})
|
||||
})
|
||||
|
||||
test('Added new service to array services of service with func addedService', async () => {
|
||||
const newService = {
|
||||
id: 4,
|
||||
created_at: "2024-03-07T11:43:51.027148541+03:00",
|
||||
updated_at: "2024-03-07T13:35:24.919273428+03:00",
|
||||
deleted_at: null,
|
||||
name: 'test add new service',
|
||||
port: 2534,
|
||||
device_ip: '172.25.78.151',
|
||||
proxy_ip: '172.25.78.151',
|
||||
internet_uri: '',
|
||||
description: 'test add new service description',
|
||||
is_online: true
|
||||
}
|
||||
|
||||
const updatedServices = addedService(newService, resServices)
|
||||
|
||||
expect(updatedServices[0].name).toEqual('test add new service')
|
||||
expect(updatedServices[0].description).toEqual('test add new service description')
|
||||
expect(updatedServices[0].port).toEqual(2534)
|
||||
})
|
||||
|
||||
test('Set isSaveData - if need save service', async () => {
|
||||
|
||||
const isSaveData = false
|
||||
|
||||
expect(isSaveData).toEqual(false) // default value is false
|
||||
|
||||
const isSaveDataChanged = await serviceOfServices.setIsSaveServices(true)
|
||||
|
||||
expect(isSaveDataChanged).toEqual(true) // if need save service - true
|
||||
|
||||
})
|
||||
|
||||
test('Saving service after editing with func updateService', async () => {
|
||||
|
||||
const selectedEditedService =
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "edited test name",
|
||||
"port": 5555,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "edited description field",
|
||||
"is_online": true
|
||||
}
|
||||
|
||||
const updatedServices = updatedService(selectedEditedService, resServices)
|
||||
|
||||
const editedService = updatedServices.find(service => service.id === 3)
|
||||
|
||||
expect(editedService.name).toEqual('edited test name')
|
||||
expect(editedService.port).toEqual(5555)
|
||||
expect(editedService.description).toEqual('edited description field')
|
||||
|
||||
})
|
||||
|
||||
test('Updated services after deleting new service with only layout with func removedNewService', async () => {
|
||||
|
||||
store.commit('services/setServices', resServices)
|
||||
|
||||
const newService = await serviceOfServices.addNewServiceLayout()
|
||||
|
||||
const servicesWithNewServiceLayout = addedService(newService, resServices)
|
||||
const forDeleteService = servicesWithNewServiceLayout.find(service => service.id === -1)
|
||||
|
||||
expect(forDeleteService).toBeDefined() // before delete service
|
||||
|
||||
const updatedServices = removedNewService(servicesWithNewServiceLayout)
|
||||
|
||||
const deletedServiceStore = updatedServices.find(service => service.id === -1)
|
||||
|
||||
expect(deletedServiceStore).toBeUndefined() // after delete service
|
||||
|
||||
})
|
||||
|
||||
test('Updated services after deleting selected service with func deletedService', async () => {
|
||||
|
||||
const deleteServiceId = 3
|
||||
|
||||
const forDeleteService = resServices.find(service => service.id === 3)
|
||||
|
||||
expect(forDeleteService).toBeDefined() // before delete service
|
||||
|
||||
const updatedServices = deletedService(deleteServiceId, resServices)
|
||||
|
||||
const deletedServiceStore = updatedServices.find(service => service.id === 3)
|
||||
|
||||
expect(deletedServiceStore).toBeUndefined() // after delete service
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
@@ -1,36 +1,245 @@
|
||||
import {describe, expect, test, beforeEach} from "vitest";
|
||||
import {expect, test, describe, vi, beforeEach} from "vitest"
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
import {adapterOfUsers, store} from './MockData.js'
|
||||
import {appUser} from '@mocks/users.js'
|
||||
import {
|
||||
addedUser,
|
||||
getUserById,
|
||||
usersWithThisService,
|
||||
usersWithoutThisService,
|
||||
addServiceIdToUser,
|
||||
deleteServiceIdFromUser,
|
||||
updatedUser,
|
||||
removedNewUser,
|
||||
deletedUser
|
||||
} from '@services/serviceOfUsers/helpers.js'
|
||||
import { createStore } from 'vuex'
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import axios from "axios";
|
||||
|
||||
describe('test for ServiceOfUsers', () => {
|
||||
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 services of users", () => {
|
||||
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)
|
||||
|
||||
beforeEach( async() => {
|
||||
await store.dispatch('users/resetStore')
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultUsers,
|
||||
})
|
||||
|
||||
test('init', () => {
|
||||
expect(serviceOfUsers).toBeDefined()
|
||||
test('Upload users by selected service', async () => {
|
||||
|
||||
const uploadUsers = await serviceOfUsers.getUsersByService(1, 'dev')
|
||||
|
||||
const expectedUsers = defaultUsers.filter(user => user.serviceId.includes(1))
|
||||
|
||||
expect(expectedUsers).toEqual(uploadUsers) // users array selected service
|
||||
|
||||
})
|
||||
|
||||
test('saveSiteUsers', async () => {
|
||||
await serviceOfUsers.saveSiteUsers([appUser])
|
||||
const storeUsers = store.getters['users/siteUsers']
|
||||
expect(storeUsers).toEqual([appUser])
|
||||
test('Upload users without selected service', async () => {
|
||||
|
||||
const uploadUsers = usersWithoutThisService(1, defaultUsers)
|
||||
|
||||
const expectedUsers = defaultUsers.filter(user => !user.serviceId.includes(1))
|
||||
|
||||
expect(expectedUsers).toEqual(uploadUsers) // users array without selected service
|
||||
|
||||
})
|
||||
|
||||
test('saveUsersWithoutSite', async () => {
|
||||
await serviceOfUsers.saveUsersWithoutSite([appUser])
|
||||
const storeUsers = store.getters['users/usersWithoutSite']
|
||||
expect(storeUsers).toEqual([appUser])
|
||||
test('Added new user layout to user editor', async () => {
|
||||
const newUser = {id: -1, firstName: '',lastName: '', role: '', email: '', password: '', serviceId: []}
|
||||
|
||||
const expectUser = await serviceOfUsers.createNewUser()
|
||||
|
||||
expect({newUser: expectUser}).toEqual({newUser})
|
||||
})
|
||||
|
||||
test('fetchUsersByService', async () => {
|
||||
const serviceId = 1
|
||||
await serviceOfUsers.fetchUsersByService(serviceId)
|
||||
const storeUsers = store.getters['users/siteUsers']
|
||||
expect(storeUsers).toEqual([appUser])
|
||||
test('Added user to array users of selected service', async () => {
|
||||
|
||||
const newUser = {
|
||||
"id": 6,
|
||||
"serviceId": [4, 5],
|
||||
"first_name": "Leanne 5",
|
||||
"last_name": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
const updatedUsers = addedUser(newUser, defaultUsers)
|
||||
|
||||
const addedNewUser = updatedUsers.find(user => user.id === 6)
|
||||
|
||||
expect(addedNewUser).toEqual(newUser)
|
||||
})
|
||||
|
||||
test('Get user by id from array users', async () => {
|
||||
|
||||
const selectedIdUser = 3
|
||||
|
||||
const selectedUser = getUserById(selectedIdUser, defaultUsers)
|
||||
|
||||
expect(selectedUser.id).toEqual(selectedIdUser)
|
||||
})
|
||||
|
||||
test('Filtered users of selected service', async () => {
|
||||
|
||||
const selectedIdService = 3
|
||||
|
||||
const usersWithSelectedService = usersWithThisService(selectedIdService, defaultUsers)
|
||||
|
||||
expect(usersWithSelectedService).toHaveLength(3)
|
||||
|
||||
usersWithSelectedService.map((user) => {
|
||||
return expect(user.serviceId.includes(selectedIdService)).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
test('Filtered users of not selected service', async () => {
|
||||
|
||||
const selectedIdService = 3
|
||||
|
||||
const usersWithSelectedService = usersWithoutThisService(selectedIdService, defaultUsers)
|
||||
|
||||
expect(usersWithSelectedService).toHaveLength(2)
|
||||
|
||||
usersWithSelectedService.map((user) => {
|
||||
return expect(!user.serviceId.includes(selectedIdService)).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
test('Added selected service to user with func addServiceIdToUser', async () => {
|
||||
|
||||
const updatedUsers = addServiceIdToUser(4, 2, defaultUsers)
|
||||
|
||||
const selectedUserWithoutService = defaultUsers.find(user => user.id === 4).serviceId.includes(2)
|
||||
const selectedUserWithService = updatedUsers.find(user => user.id === 4).serviceId.includes(2)
|
||||
|
||||
expect(selectedUserWithoutService).toBe(false)
|
||||
expect(selectedUserWithService).toBe(true)
|
||||
})
|
||||
|
||||
test('Deleted user from array users of selected service with func deleteServiceIdFromUser', async () => {
|
||||
|
||||
const updatedUsers = deleteServiceIdFromUser(3, 2, defaultUsers)
|
||||
|
||||
const selectedUserWithoutService = defaultUsers.find(user => user.id === 3).serviceId.includes(2)
|
||||
const selectedUserWithService = updatedUsers.find(user => user.id === 3).serviceId.includes(2)
|
||||
|
||||
expect(selectedUserWithoutService).toBe(true)
|
||||
expect(selectedUserWithService).toBe(false)
|
||||
|
||||
})
|
||||
|
||||
test('Edited user updated in array users', async () => {
|
||||
|
||||
const editerUser =
|
||||
{
|
||||
"id": 3,
|
||||
"serviceId": [2, 3],
|
||||
"first_name": "Leanne 3 updated", // edited field
|
||||
"last_name": "Graham updated", // edited field
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
const beforeEditUser = defaultUsers.find(user => user.id === 3)
|
||||
|
||||
expect(beforeEditUser.first_name).not.toEqual('Leanne 3 updated') // check that user was not edited
|
||||
expect(beforeEditUser.last_name).not.toEqual('Graham updated') // check that user was not edited
|
||||
|
||||
const updatedUsers = updatedUser(editerUser, defaultUsers)
|
||||
|
||||
const getEditedUser = updatedUsers.find(user => user.id === 3)
|
||||
|
||||
expect(getEditedUser.first_name).toEqual('Leanne 3 updated') // check that user was edited
|
||||
expect(getEditedUser.last_name).toEqual('Graham updated') // check that user was edited
|
||||
|
||||
})
|
||||
|
||||
test('Removed new user layout from array users', async () => {
|
||||
|
||||
const newUser = {id: -1, first_name: '',last_name: '', role: '', email: '', password: '', serviceId: []}
|
||||
|
||||
const updatedUsers = addedUser(newUser, defaultUsers)
|
||||
const beforeDeleteUser = updatedUsers.find(user => user.id === -1)
|
||||
|
||||
expect(beforeDeleteUser).toBeDefined() // before delete user
|
||||
|
||||
const afterDeleteUser = removedNewUser(updatedUsers)
|
||||
const deletedServiceStore = afterDeleteUser.find(service => service.id === -1)
|
||||
|
||||
expect(deletedServiceStore).toBeUndefined() // after delete user
|
||||
|
||||
})
|
||||
|
||||
test('Updated users after deleting selected user with func deletedUser', async () => {
|
||||
|
||||
const deleteUserId = 3
|
||||
|
||||
const forDeleteUser = defaultUsers.find(user => user.id === 3)
|
||||
|
||||
expect(forDeleteUser).toBeDefined() // before delete user
|
||||
|
||||
const updatedUsers = deletedUser(deleteUserId, defaultUsers)
|
||||
|
||||
const afterDeletingUser = updatedUsers.find(user => user.id === 3)
|
||||
|
||||
expect(afterDeletingUser).toBeUndefined() // after delete user
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { expect, test, describe, vi, beforeEach} from "vitest"
|
||||
import {expect, test, describe, vi, beforeEach} from "vitest"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import {addedService, updatedService, removedNewService, deletedService} from '@services/serviceOfServices/helpers.js'
|
||||
import { createStore } from 'vuex'
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import axios from "axios";
|
||||
@@ -125,7 +126,7 @@ describe("tests services store with vuex", () => {
|
||||
})
|
||||
|
||||
test('Added new service layout to services of store', async () => {
|
||||
const expectedSiteData = {"port": "", "name": "", id: -1}
|
||||
const expectedserviceData = {"port": "", "name": "", id: -1}
|
||||
|
||||
await serviceOfServices.addNewServiceLayout()
|
||||
|
||||
@@ -138,11 +139,38 @@ describe("tests services store with vuex", () => {
|
||||
services
|
||||
}
|
||||
).toEqual({
|
||||
selectedService: expectedSiteData,
|
||||
services: [expectedSiteData]
|
||||
selectedService: expectedserviceData,
|
||||
services: [expectedserviceData]
|
||||
})
|
||||
})
|
||||
|
||||
test('Added new service to services of store', async () => {
|
||||
const newService = {
|
||||
id: 4,
|
||||
created_at: "2024-03-07T11:43:51.027148541+03:00",
|
||||
updated_at: "2024-03-07T13:35:24.919273428+03:00",
|
||||
deleted_at: null,
|
||||
name: 'test add new service',
|
||||
port: 2534,
|
||||
device_ip: '172.25.78.151',
|
||||
proxy_ip: '172.25.78.151',
|
||||
internet_uri: '',
|
||||
description: 'test add new service description',
|
||||
is_online: true
|
||||
}
|
||||
|
||||
store.commit('services/setServices', resServices)
|
||||
|
||||
const updatedServices = addedService(newService, store.getters['services/services'])
|
||||
store.commit('services/setServices', updatedServices)
|
||||
|
||||
const services = store.getters['services/services']
|
||||
|
||||
expect(services[0].name).toEqual('test add new service')
|
||||
expect(services[0].description).toEqual('test add new service description')
|
||||
expect(services[0].port).toEqual(2534)
|
||||
})
|
||||
|
||||
test('Selected service - for edit fields values in this service', async () => {
|
||||
|
||||
const editedService =
|
||||
@@ -168,6 +196,20 @@ describe("tests services store with vuex", () => {
|
||||
|
||||
})
|
||||
|
||||
test('Set isSaveData - if need save service', async () => {
|
||||
|
||||
const isSaveData = store.getters['services/isSaveData']
|
||||
|
||||
expect(isSaveData).toEqual(false) // default value is false
|
||||
|
||||
await serviceOfServices.setIsSaveServices(true)
|
||||
|
||||
const isSaveDataChanged = store.getters['services/isSaveData']
|
||||
|
||||
expect(isSaveDataChanged).toEqual(true) // if need save service - true
|
||||
|
||||
})
|
||||
|
||||
test('Edited fields values in selected service of store', async () => {
|
||||
|
||||
const selectedForEditService =
|
||||
@@ -195,56 +237,168 @@ describe("tests services store with vuex", () => {
|
||||
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
// console.log('Edited fields 4 test', selectedService)
|
||||
|
||||
expect(selectedService.name).toEqual('edited test name')
|
||||
expect(selectedService.port).toEqual(5555)
|
||||
expect(selectedService.description).toEqual('edited description field')
|
||||
|
||||
})
|
||||
|
||||
// test("test uploadAndSelectService function", async () => {
|
||||
// const mockData = [
|
||||
// {
|
||||
// "id": 1,
|
||||
// "created_at": "2024-02-22T17:08:37.715772388+03:00",
|
||||
// "updated_at": "2024-02-26T14:11:38.64094899+03:00",
|
||||
// "deleted_at": null,
|
||||
// "name": "jsonplaceholder.typicode.com",
|
||||
// "port": 9965,
|
||||
// "proxy_ip": "172.25.78.153",
|
||||
// "site_ip": "172.25.78.153",
|
||||
// "internet_uri": "localhost",
|
||||
// "description": "localhost",
|
||||
// "is_online": true
|
||||
// }
|
||||
// ]
|
||||
test('Updated services in store after editing selected service', async () => {
|
||||
|
||||
const editedService =
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "edited and updated test service",
|
||||
"port": 3436,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "edited and updated test service description",
|
||||
"is_online": true
|
||||
}
|
||||
|
||||
store.commit('services/setServices', resServices)
|
||||
|
||||
// axios.get.mockResolvedValue({
|
||||
// data: mockData,
|
||||
// })
|
||||
const defaultServices = store.getters['services/services']
|
||||
const forEditService = defaultServices.find(service => service.id === 3)
|
||||
|
||||
// await store.dispatch('services/uploadSites')
|
||||
// store.dispatch('services/uploadAndSelectService', 1)
|
||||
expect(forEditService.name).toEqual('new 3') // default value
|
||||
expect(forEditService.description).toEqual('new site 3...') // default value
|
||||
expect(forEditService.port).toEqual(2527) // default value
|
||||
|
||||
// const selectedSite = store.getters['services/selectedSite']
|
||||
// const selectedSiteState = store.getters['services/selectedSiteState']
|
||||
const updatedServices = updatedService(editedService, defaultServices)
|
||||
store.commit('services/setServices', updatedServices)
|
||||
|
||||
// expect(selectedSite).toEqual({
|
||||
// "id": 1,
|
||||
// "created_at": "2024-02-22T17:08:37.715772388+03:00",
|
||||
// "updated_at": "2024-02-26T14:11:38.64094899+03:00",
|
||||
// "deleted_at": null,
|
||||
// "name": "jsonplaceholder.typicode.com",
|
||||
// "port": 9965,
|
||||
// "proxy_ip": "172.25.78.153",
|
||||
// "device_ip": "172.25.78.153",
|
||||
// "internet_uri": "localhost",
|
||||
// "description": "localhost",
|
||||
// "is_online": true
|
||||
// })
|
||||
// expect(selectedSiteState).toEqual('active')
|
||||
// })
|
||||
const services = store.getters['services/services']
|
||||
const editedServiceStore = services.find(service => service.id === 3)
|
||||
|
||||
expect(editedServiceStore.name).toEqual('edited and updated test service')
|
||||
expect(editedServiceStore.description).toEqual('edited and updated test service description')
|
||||
expect(editedServiceStore.port).toEqual(3436)
|
||||
|
||||
})
|
||||
|
||||
test('Canceled selected service in store', async () => {
|
||||
|
||||
const selectedForEditService =
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 3",
|
||||
"port": 2527,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 3...",
|
||||
"is_online": true
|
||||
}
|
||||
|
||||
await serviceOfServices.selectService(selectedForEditService)
|
||||
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
expect(selectedService.name).not.toBe(null) // Service is selected
|
||||
expect(selectedService.id).toEqual(3) // Service is selected
|
||||
expect(selectedService.name).toEqual('new 3') // Service is selected
|
||||
|
||||
await serviceOfServices.cancelSelectedService(3)
|
||||
|
||||
const cancelSelectedService = store.getters['services/selectedService']
|
||||
|
||||
expect(cancelSelectedService).toBe(null) // Canceled selected Service
|
||||
|
||||
})
|
||||
|
||||
test('Updated services in store after deleting new service with only layout', async () => {
|
||||
|
||||
store.commit('services/setServices', resServices)
|
||||
|
||||
await serviceOfServices.addNewServiceLayout()
|
||||
|
||||
const servicesWithNewServiceLayout = store.getters['services/services']
|
||||
const forDeleteService = servicesWithNewServiceLayout.find(service => service.id === -1)
|
||||
|
||||
expect(forDeleteService).toBeDefined() // before delete service
|
||||
|
||||
const updatedServices = removedNewService(servicesWithNewServiceLayout)
|
||||
store.commit('services/setServices', updatedServices)
|
||||
|
||||
const services = store.getters['services/services']
|
||||
const deletedServiceStore = services.find(service => service.id === -1)
|
||||
|
||||
expect(deletedServiceStore).toBeUndefined() // after delete service
|
||||
|
||||
})
|
||||
|
||||
test('Updated services in store after deleting selected service', async () => {
|
||||
|
||||
const deleteServiceId = 3
|
||||
|
||||
store.commit('services/setServices', resServices)
|
||||
|
||||
const defaultServices = store.getters['services/services']
|
||||
const forDeleteService = defaultServices.find(service => service.id === 3)
|
||||
|
||||
expect(forDeleteService).toBeDefined() // before delete service
|
||||
|
||||
const updatedServices = deletedService(deleteServiceId, defaultServices)
|
||||
store.commit('services/setServices', updatedServices)
|
||||
|
||||
const services = store.getters['services/services']
|
||||
const deletedServiceStore = services.find(service => service.id === 3)
|
||||
|
||||
expect(deletedServiceStore).toBeUndefined() // after delete service
|
||||
|
||||
})
|
||||
|
||||
test('Reset store', async () => {
|
||||
|
||||
const selectedForEditService =
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 3",
|
||||
"port": 2527,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 3...",
|
||||
"is_online": true
|
||||
}
|
||||
|
||||
await serviceOfServices.selectService(selectedForEditService)
|
||||
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
expect(selectedService.name).not.toBe(null) // Service is selected
|
||||
expect(selectedService.id).toEqual(3) // Service is selected
|
||||
expect(selectedService.name).toEqual('new 3') // Service is selected
|
||||
|
||||
await serviceOfServices.addNewServiceLayout()
|
||||
|
||||
const services = store.getters['services/services']
|
||||
|
||||
expect(services.name).not.toStrictEqual([]) // Not empty services
|
||||
expect(services[0].id).toEqual(-1) // New Service
|
||||
|
||||
await serviceOfServices.resetStore()
|
||||
|
||||
const resetSelectedService = store.getters['services/selectedService']
|
||||
const resetServices = store.getters['services/services']
|
||||
|
||||
// console.log('Reset store 11 test', resetSelectedService)
|
||||
|
||||
expect(resetSelectedService).toBe(null) // After reset store
|
||||
expect(resetServices).toStrictEqual([]) // After reset store
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -1,12 +1,56 @@
|
||||
import { expect, test, describe, vi, beforeEach} from "vitest";
|
||||
|
||||
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')
|
||||
|
||||
describe("tests services store with vuex", () => {
|
||||
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: {
|
||||
@@ -18,37 +62,270 @@ describe("tests services store with vuex", () => {
|
||||
store.dispatch('users/resetStore')
|
||||
})
|
||||
|
||||
test('test fetchUsersList function', async () => {
|
||||
const mockData = [
|
||||
{
|
||||
"id": 1,
|
||||
"first_name": "Leanne",
|
||||
"last_name": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
"is_active": true
|
||||
}
|
||||
]
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: mockData,
|
||||
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)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
const expectedData = [
|
||||
{
|
||||
"id": 1,
|
||||
"first_name": "Leanne",
|
||||
"last_name": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
"is_active": true
|
||||
}
|
||||
]
|
||||
test('Created and added new user layout to selected user in store', async () => {
|
||||
|
||||
await store.dispatch('users/fetchUsersList', {siteId: 1, mode: "prod"})
|
||||
const sites = store.getters['users/usersList']
|
||||
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
|
||||
|
||||
expect(sites).toEqual(expectedData)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {describe, expect, test, beforeEach} from "vitest";
|
||||
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
|
||||
import {serviceOfUsers, serviceOfServices, store} from './MockData.js'
|
||||
import {appUser} from '@mocks/users.js'
|
||||
|
||||
|
||||
describe('tests for caseOfUsersInService', () => {
|
||||
@@ -17,12 +16,6 @@ describe('tests for caseOfUsersInService', () => {
|
||||
expect(caseOfUsersInService).toBeDefined()
|
||||
})
|
||||
|
||||
test('fetchUsersByService', async () => {
|
||||
await caseOfUsersInService.fetchUsersByService()
|
||||
const storeUsers = store.getters['users/siteUsers']
|
||||
expect(storeUsers).toEqual([appUser])
|
||||
})
|
||||
|
||||
// test('fetchUsersWithoutService', async () => {
|
||||
// await caseOfUsersInService.fetchUsersWithoutService()
|
||||
// const storeUsers = store.getters['users/usersWithoutSite']
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {test, describe, expect, vi } from 'vitest'
|
||||
import { mount} from '@vue/test-utils'
|
||||
import VTabulator from '@molecules/VTabulator/VTabulator.vue';
|
||||
import VTabulator from '@molecules/Tabulator/VTabulator.vue';
|
||||
|
||||
describe("tests VTabulator component", () => {
|
||||
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
import { mount, config} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import EditServiceCard from "@organisms/ServicesList/EditServiceCard.vue"
|
||||
import { createStore } from 'vuex'
|
||||
import axios from "axios";
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
|
||||
config.showDeprecationWarnings = false
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
|
||||
describe("tests EditServiceCard component", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
},
|
||||
})
|
||||
|
||||
const defaultServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultServices,
|
||||
})
|
||||
|
||||
beforeEach(async () => {
|
||||
await store.dispatch('services/resetStore')
|
||||
})
|
||||
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
test('EditServiceCard mounted with vuex', async () => {
|
||||
|
||||
store.commit('services/setSelectedService', resServices[0])
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
const wrapper = mount(EditServiceCard, {
|
||||
// shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
id: 1,
|
||||
},
|
||||
})
|
||||
|
||||
expect(selectedService).not.toBeNull()
|
||||
expect(selectedService.id).toBe(1)
|
||||
expect(wrapper.html()).toContain('flex justify-between items-center mb-2')
|
||||
expect(wrapper.html()).toContain('Онлайн')
|
||||
expect(wrapper.html()).toContain('Офлайн')
|
||||
expect(wrapper.text()).toContain('Сохранить')
|
||||
})
|
||||
|
||||
test("Cancel selected service in EditServiceCard", async () => {
|
||||
|
||||
config.showDeprecationWarnings = false
|
||||
|
||||
await serviceOfServices.fetchServices()
|
||||
|
||||
store.commit('services/setSelectedService', resServices[0])
|
||||
|
||||
const wrapper = mount(EditServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
id: 1,
|
||||
},
|
||||
})
|
||||
|
||||
wrapper.vm.cancelEditService()
|
||||
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
expect(selectedService).toBeNull()
|
||||
})
|
||||
|
||||
test("Editing selected service in EditServiceCard", async () => {
|
||||
|
||||
store.commit('services/setSelectedService', resServices[0])
|
||||
|
||||
const wrapper = mount(EditServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
id: 1,
|
||||
},
|
||||
})
|
||||
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
expect(selectedService.is_online).toEqual(true)
|
||||
|
||||
wrapper.vm.editData({key: 'is_online', value: false})
|
||||
|
||||
const selectedServiceAfterEditing = store.getters['services/selectedService']
|
||||
|
||||
expect(selectedServiceAfterEditing.is_online).toEqual(false)
|
||||
})
|
||||
|
||||
test("Set isSaveData for selected service in EditServiceCard", async () => {
|
||||
|
||||
store.commit('services/setSelectedService', resServices[0])
|
||||
|
||||
const wrapper = mount(EditServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
id: 1,
|
||||
},
|
||||
})
|
||||
|
||||
const isSaveData = store.getters['services/isSaveData']
|
||||
|
||||
expect(isSaveData).toEqual(false)
|
||||
|
||||
wrapper.vm.saveData()
|
||||
|
||||
const isSaveDataUpdated = store.getters['services/isSaveData']
|
||||
|
||||
expect(isSaveDataUpdated).toEqual(true)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -0,0 +1,306 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import ServiceCard from "@organisms/ServicesList/ServiceCard.vue"
|
||||
import { createStore} from 'vuex'
|
||||
import axios from "axios";
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
|
||||
describe("tests Service Card component", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
const defaultServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultServices,
|
||||
})
|
||||
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
|
||||
const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
|
||||
|
||||
beforeEach(() => {
|
||||
store.dispatch('services/resetStore')
|
||||
})
|
||||
|
||||
|
||||
test('Service Card mounted with vuex', async () => {
|
||||
const wrapper = mount(ServiceCard, {
|
||||
// shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
caseOfUsersInService,
|
||||
},
|
||||
})
|
||||
|
||||
// console.log('wrapper.html', wrapper.html())
|
||||
|
||||
await serviceOfServices.fetchServices()
|
||||
|
||||
store.commit('services/setServicesState', 'active')
|
||||
|
||||
const uploadServices = store.getters['services/services']
|
||||
// const servicesState = store.getters['services/servicesState']
|
||||
|
||||
expect(uploadServices).toEqual(resServices) // full services array of store
|
||||
|
||||
expect(wrapper.html()).toContain('block w-full p-6 bg-white')
|
||||
expect(wrapper.text()).toContain('статус')
|
||||
expect(wrapper.text()).toContain('Порт')
|
||||
})
|
||||
|
||||
test('View EditCard component after select service', async () => {
|
||||
|
||||
store.commit('services/setSelectedService', resServices[0])
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
const wrapper = mount(ServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
caseOfUsersInService,
|
||||
id: 1,
|
||||
},
|
||||
})
|
||||
|
||||
const wrapperHtml = wrapper.html()
|
||||
|
||||
expect(selectedService).not.toBeNull()
|
||||
expect(selectedService.id).toBe(1)
|
||||
expect(wrapperHtml).toContain('Сохранить')
|
||||
expect(wrapper.find('textarea[name="description"]'))
|
||||
})
|
||||
|
||||
test("Renders buttons - 'Отменить' and 'Удалить' in this service, after click to button delete service", async () => {
|
||||
|
||||
beforeEach(() => {
|
||||
store.dispatch('services/resetStore')
|
||||
})
|
||||
|
||||
const wrapper = mount(ServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
caseOfUsersInService,
|
||||
id: 1,
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isDelete: false,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
await wrapper.setData({ isDelete: true })
|
||||
|
||||
await wrapper.get('.ri-close-line').trigger('click')
|
||||
|
||||
expect(wrapper.html()).toContain('Отменить')
|
||||
expect(wrapper.html()).toContain('Удалить')
|
||||
})
|
||||
|
||||
test("Cancel Renders buttons - 'Отменить' and 'Удалить' in this service, after click to button cancel delete service", async () => {
|
||||
|
||||
beforeEach(() => {
|
||||
store.dispatch('services/resetStore')
|
||||
})
|
||||
|
||||
const wrapper = mount(ServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
caseOfUsersInService,
|
||||
id: 1,
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isDelete: true,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// console.log('wrapper.html', wrapper.html())
|
||||
|
||||
await wrapper.get('[test-id="canelButton"]').trigger('click')
|
||||
|
||||
expect(wrapper.html()).not.toContain('Отменить')
|
||||
expect(wrapper.html()).not.toContain('Удалить')
|
||||
})
|
||||
|
||||
test('Set setStatus for prop isOnline in ServiceCard', async () => {
|
||||
|
||||
const wrapper = mount(ServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
isOnline: false
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
status: {title: 'disable', color: 'bg-red-700'}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// console.log('wrapper.html', wrapper.vm.status)
|
||||
|
||||
const defaultStatus = wrapper.vm.status
|
||||
|
||||
expect(defaultStatus.title).toContain('disable')
|
||||
expect(defaultStatus.color).toContain('bg-red-700')
|
||||
|
||||
wrapper.vm.setStatus(true)
|
||||
|
||||
expect(wrapper.vm.status.title).toBe('enable')
|
||||
expect(wrapper.html()).toContain('bg-green-700')
|
||||
|
||||
})
|
||||
|
||||
test('For Editing selected user in ServiceCard', async () => {
|
||||
|
||||
const forEditService = {
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
}
|
||||
|
||||
|
||||
const wrapper = mount(ServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
caseOfUsersInService
|
||||
},
|
||||
})
|
||||
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
|
||||
expect(selectedService).toBeNull()
|
||||
|
||||
await wrapper.vm.editService(forEditService)
|
||||
|
||||
const selectedUserAfterEdit = store.getters['services/selectedService']
|
||||
const usersWithService = store.getters['users/usersWithService']
|
||||
|
||||
expect(selectedUserAfterEdit).not.toBeNull()
|
||||
expect(selectedUserAfterEdit.id).toBe(1)
|
||||
|
||||
usersWithService.map(user => {
|
||||
expect(user.serviceId.include(1)).toBe(true)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
test("View buttons - 'Отменить' and 'Удалить' after change isDelete for selected service in ServiceCard", async () => {
|
||||
|
||||
beforeEach(() => {
|
||||
store.dispatch('services/resetStore')
|
||||
})
|
||||
|
||||
const wrapper = mount(ServiceCard, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
id: 1,
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isDelete: false,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// console.log('wrapper.html', wrapper.html())
|
||||
|
||||
const defaultIsDelete = wrapper.vm.isDelete
|
||||
|
||||
expect(defaultIsDelete).toBe(false)
|
||||
|
||||
await wrapper.get('.ri-close-line').trigger('click') // Рендер отрисовывает только с помощью триггером
|
||||
// wrapper.vm.deleteService(true)
|
||||
|
||||
const updatedIsDelete = wrapper.vm.isDelete
|
||||
|
||||
// console.log('wrapper.html', wrapper.html())
|
||||
|
||||
expect(updatedIsDelete).toBe(true)
|
||||
|
||||
expect(wrapper.html()).toContain('Отменить')
|
||||
expect(wrapper.html()).toContain('Удалить')
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi } from 'vitest'
|
||||
import { toRefs } from 'vue'
|
||||
import ServicesList from "@organisms/ServicesList/ServicesList.vue"
|
||||
import { createStore } from 'vuex'
|
||||
import axios from "axios";
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services.js'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
|
||||
describe("tests Services List component", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
const defaultServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"created_at": "2024-03-07T11:43:51.026265459+03:00",
|
||||
"updated_at": "2024-03-07T13:35:12.506368972+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 2",
|
||||
"port": 4548,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"site_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 2",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 3",
|
||||
"port": 2527,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"site_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 3...",
|
||||
"is_online": true
|
||||
}
|
||||
]
|
||||
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"created_at": "2024-03-07T11:43:51.026265459+03:00",
|
||||
"updated_at": "2024-03-07T13:35:12.506368972+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 2",
|
||||
"port": 4548,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 2",
|
||||
"is_online": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"created_at": "2024-03-07T11:43:51.027148541+03:00",
|
||||
"updated_at": "2024-03-07T13:35:24.919273428+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "new 3",
|
||||
"port": 2527,
|
||||
"proxy_ip": "172.25.78.151",
|
||||
"device_ip": "172.25.78.151",
|
||||
"internet_uri": "",
|
||||
"description": "new site 3...",
|
||||
"is_online": true
|
||||
}
|
||||
]
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultServices,
|
||||
})
|
||||
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
|
||||
const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
|
||||
|
||||
test('Services List mounted with vuex', async () => {
|
||||
const wrapper = mount(ServicesList, {
|
||||
// shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfServices,
|
||||
caseOfUsersInService,
|
||||
},
|
||||
setup (props) {
|
||||
const {serviceOfServices} = toRefs(props)
|
||||
serviceOfServices.value.fetchServices()
|
||||
},
|
||||
})
|
||||
|
||||
// console.log('wrapper.vm', wrapper.vm)
|
||||
|
||||
await serviceOfServices.fetchServices()
|
||||
|
||||
const uploadServices = store.getters['services/services']
|
||||
|
||||
expect(uploadServices).toEqual(resServices) // full services array of store
|
||||
|
||||
expect(wrapper.html()).toContain('grid grid-cols-1')
|
||||
expect(wrapper.text()).toContain('Добавить сайт')
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
163
users-manage/tests/views/3_organisms/Users/UsersManager.test.js
Normal file
163
users-manage/tests/views/3_organisms/Users/UsersManager.test.js
Normal file
@@ -0,0 +1,163 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import {createStore} from "vuex"
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import UsersManager from '@organisms/UsersManager/UsersManager.vue'
|
||||
import axios from "axios"
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
describe("tests UsersManager component", () => {
|
||||
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
vi.mock('tabulator-tables', () => {
|
||||
const mockTabulator = vi.fn().mockImplementation(() => ({
|
||||
// Mock implementation details
|
||||
}));
|
||||
return { TabulatorFull: mockTabulator }; // Adjust based on what you're trying to mock
|
||||
});
|
||||
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
|
||||
|
||||
const mockData = [
|
||||
{
|
||||
"id": 1,
|
||||
"serviceId": [1, 3],
|
||||
"firstName": "Leanne 1",
|
||||
"lastName": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
},
|
||||
]
|
||||
axios.get.mockResolvedValue({
|
||||
data: mockData,
|
||||
})
|
||||
|
||||
beforeEach(async () => {
|
||||
store.dispatch('users/resetStore')
|
||||
})
|
||||
|
||||
|
||||
test('UsersManager mounted with vuex', async () => {
|
||||
const wrapper = mount(UsersManager, {
|
||||
global: {
|
||||
plugins: [store],
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
|
||||
expect(userStatus).toBe('inactive')
|
||||
expect(wrapper.html()).toContain('w-full flex justify-between grow gap-4')
|
||||
expect(wrapper.text()).toContain('Список пользователей')
|
||||
})
|
||||
|
||||
test('View UserEditor component, after click to create user button', async () => {
|
||||
|
||||
await serviceOfUsers.getUsersByService(1, 'dev')
|
||||
|
||||
const wrapper = mount(UsersManager, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
})
|
||||
|
||||
const buttonCreate = wrapper.find('[test-id="toggle-new-user"]')
|
||||
await buttonCreate.trigger('click')
|
||||
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
const wrapperHtml = wrapper.html()
|
||||
|
||||
expect(userStatus).toBe('create')
|
||||
expect(wrapperHtml).toContain('Создать пользователя')
|
||||
expect(wrapperHtml).toContain('Закрыть')
|
||||
expect(wrapper.find('[test-id="new-user-container"]'))
|
||||
|
||||
})
|
||||
|
||||
test('View UserEditor component, after click to select user button', async () => {
|
||||
|
||||
await serviceOfUsers.getUsersByService(1, 'dev')
|
||||
|
||||
const wrapper = mount(UsersManager, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers,
|
||||
caseOfUsersInService,
|
||||
},
|
||||
})
|
||||
|
||||
const buttonSelect = wrapper.find('[test-id="toggle-add-user"]')
|
||||
await buttonSelect.trigger('click')
|
||||
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
const wrapperHtml = wrapper.html()
|
||||
|
||||
expect(userStatus).toBe('select')
|
||||
expect(wrapperHtml).toContain('Выбрать пользователя')
|
||||
expect(wrapperHtml).toContain('Закрыть')
|
||||
expect(wrapper.find('[action="add"]'))
|
||||
})
|
||||
|
||||
test('Close UsersForSelection, after change userStatus', async () => {
|
||||
|
||||
await serviceOfUsers.getUsersByService(1, 'dev')
|
||||
|
||||
await serviceOfUsers.setStatusUser('select')
|
||||
|
||||
const wrapper = mount(UsersManager, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers,
|
||||
caseOfUsersInService,
|
||||
},
|
||||
})
|
||||
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
const wrapperHtml = wrapper.html()
|
||||
|
||||
expect(userStatus).toBe('select')
|
||||
expect(wrapperHtml).toContain('Выбрать пользователя')
|
||||
expect(wrapperHtml).toContain('Закрыть')
|
||||
expect(wrapper.find('[action="add"]'))
|
||||
|
||||
wrapper.vm.closeUserPanel()
|
||||
|
||||
const userStatusAfterClose = store.getters['users/userStatus']
|
||||
|
||||
expect(userStatusAfterClose).toBe('inactive')
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {test, describe, expect} from 'vitest'
|
||||
import { mount} from '@vue/test-utils'
|
||||
import UsersManagerContainer from '@organisms/UsersManager/UsersManagerContainer.vue';
|
||||
import UsersManagerContainer from '@organisms/UsersManager/Container.vue';
|
||||
|
||||
describe("tests UsersManagerContainer component", () => {
|
||||
test('mount test of UsersManagerContainer', async () => {
|
||||
@@ -0,0 +1,181 @@
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import {createStore, mapGetters} from "vuex"
|
||||
import { mount} from '@vue/test-utils'
|
||||
import UsersSelection from '@organisms/UsersManager/UsersForSelection.vue'
|
||||
import VTabulator from '@molecules/Tabulator/VTabulator.vue'
|
||||
import axios from "axios"
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
|
||||
|
||||
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 UsersForSelection component", () => {
|
||||
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
beforeEach(async () => {
|
||||
store.dispatch('users/resetStore')
|
||||
})
|
||||
|
||||
vi.mock('tabulator-tables', () => {
|
||||
const mockTabulator = vi.fn().mockImplementation(() => ({
|
||||
// Mock implementation details
|
||||
}))
|
||||
return { TabulatorFull: mockTabulator }; // Adjust based on what you're trying to mock
|
||||
})
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultUsers,
|
||||
})
|
||||
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
|
||||
|
||||
test('mount test of UsersManagerUsersTable', async () => {
|
||||
|
||||
const wrapper = mount(UsersSelection, {
|
||||
global: {
|
||||
plugins: [store],
|
||||
props: {
|
||||
caseOfUsersInService
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
expect(wrapper.exists()).toBe(true)
|
||||
})
|
||||
|
||||
test('Added user to selected Service', async () => {
|
||||
|
||||
const selectedService = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const addedUser = {
|
||||
"id": 3,
|
||||
"serviceId": [2, 3],
|
||||
"firstName": "Leanne 3",
|
||||
"lastName": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
await serviceOfServices.fetchServices()
|
||||
await serviceOfServices.selectService(selectedService[0])
|
||||
|
||||
await serviceOfUsers.getUsersByService(1, 'dev')
|
||||
await serviceOfUsers.setSelectedUser(addedUser.id)
|
||||
|
||||
const wrapper = mount(UsersSelection, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
components: {VTabulator},
|
||||
props: {
|
||||
serviceOfUsers,
|
||||
caseOfUsersInService,
|
||||
users: defaultUsers,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('users', ['selectedUser', 'usersWithoutService']),
|
||||
},
|
||||
})
|
||||
|
||||
const usersWithServices = store.getters['users/usersWithService']
|
||||
|
||||
const forDeleteUserFromService = usersWithServices.find(user => user.id === addedUser.id)
|
||||
|
||||
expect(forDeleteUserFromService).toBeUndefined()
|
||||
|
||||
wrapper.vm.addUser(addedUser)
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
const usersWithServicesAfterDelete = store.getters['users/usersWithService']
|
||||
const usersWithoutService = store.getters['users/usersWithoutService']
|
||||
|
||||
const userFromServiceAfterDelete = usersWithServicesAfterDelete.find(user => user.id === addedUser.id)
|
||||
const userWithoutServiceAfterDelete = usersWithoutService.find(user => user.id === addedUser.id)
|
||||
|
||||
expect(userFromServiceAfterDelete).toBeDefined()
|
||||
expect(userWithoutServiceAfterDelete).toBeUndefined()
|
||||
expect(userWithoutServiceAfterDelete.id).toEqual(addedUser.id)
|
||||
|
||||
}, 100)
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -0,0 +1,226 @@
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import {createStore, mapGetters} from "vuex"
|
||||
import { mount} from '@vue/test-utils'
|
||||
import UsersTable from '@organisms/UsersManager/UsersTable.vue'
|
||||
import VTabulator from '@molecules/Tabulator/VTabulator.vue'
|
||||
import axios from "axios"
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
|
||||
|
||||
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 UsersManagerUsersTable component", () => {
|
||||
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
beforeEach(async () => {
|
||||
store.dispatch('users/resetStore')
|
||||
})
|
||||
|
||||
vi.mock('tabulator-tables', () => {
|
||||
const mockTabulator = vi.fn().mockImplementation(() => ({
|
||||
// Mock implementation details
|
||||
}))
|
||||
return { TabulatorFull: mockTabulator }; // Adjust based on what you're trying to mock
|
||||
})
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultUsers,
|
||||
})
|
||||
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
|
||||
|
||||
test('mount test of UsersManagerUsersTable', async () => {
|
||||
|
||||
const wrapper = mount(UsersTable, {
|
||||
global: {
|
||||
plugins: [store],
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
expect(wrapper.exists()).toBe(true)
|
||||
})
|
||||
|
||||
test('For Editing select current user in UserEditor', async () => {
|
||||
|
||||
const forEditUser = {
|
||||
"id": 1,
|
||||
"serviceId": [1, 3],
|
||||
"firstName": "Leanne 1",
|
||||
"lastName": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
await serviceOfUsers.getUsers()
|
||||
|
||||
const wrapper = mount(UsersTable, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
components: {VTabulator},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('users', ['userStatus']),
|
||||
},
|
||||
})
|
||||
|
||||
const selectedUser = store.getters['users/selectedUser']
|
||||
|
||||
expect(selectedUser).toBeNull()
|
||||
expect(wrapper.vm.userStatus).toBe('inactive')
|
||||
|
||||
wrapper.vm.editUser(forEditUser)
|
||||
|
||||
const selectedUserAfterEdit = store.getters['users/selectedUser']
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
|
||||
expect(selectedUserAfterEdit).not.toBeNull()
|
||||
expect(selectedUserAfterEdit.id).toEqual(forEditUser.id)
|
||||
expect(userStatus).toBe('edit')
|
||||
})
|
||||
|
||||
test('Delete user from selected Service', async () => {
|
||||
|
||||
const selectedService = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const forDeleteUser = {
|
||||
"id": 2,
|
||||
"serviceId": [1],
|
||||
"firstName": "Leanne 2",
|
||||
"lastName": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
await serviceOfServices.fetchServices()
|
||||
await serviceOfServices.selectService(selectedService[0])
|
||||
|
||||
await serviceOfUsers.getUsersByService(1, 'dev')
|
||||
await serviceOfUsers.setSelectedUser(forDeleteUser.id)
|
||||
|
||||
const wrapper = mount(UsersTable, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
components: {VTabulator},
|
||||
props: {
|
||||
serviceOfUsers,
|
||||
caseOfUsersInService,
|
||||
users: defaultUsers,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('users', ['selectedUser']),
|
||||
},
|
||||
})
|
||||
|
||||
const usersWithServices = store.getters['users/usersWithService']
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
|
||||
const forDeleteUserFromService = usersWithServices.find(user => user.id === forDeleteUser.id)
|
||||
|
||||
expect(forDeleteUserFromService).not.toBeNull()
|
||||
expect(userStatus).toBe('inactive')
|
||||
|
||||
wrapper.vm.deleteUser(forDeleteUser)
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
const userStatusAfterDelete = store.getters['users/userStatus']
|
||||
const usersWithServicesAfterDelete = store.getters['users/usersWithService']
|
||||
const usersWithoutService = store.getters['users/usersWithoutService']
|
||||
|
||||
const userFromServiceAfterDelete = usersWithServicesAfterDelete.find(user => user.id === forDeleteUser.id)
|
||||
const userWithoutServiceAfterDelete = usersWithoutService.find(user => user.id === forDeleteUser.id)
|
||||
|
||||
expect(userStatusAfterDelete).toBe('select')
|
||||
expect(userFromServiceAfterDelete).toBeUndefined()
|
||||
expect(userWithoutServiceAfterDelete).toBeDefined()
|
||||
expect(userWithoutServiceAfterDelete.id).toEqual(forDeleteUser.id)
|
||||
|
||||
}, 100)
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {test, describe, expect} from 'vitest'
|
||||
import { mount} from '@vue/test-utils'
|
||||
import UsersManagerTitle from '@organisms/UsersManager/UsersManagerTitle.vue';
|
||||
import UsersManagerTitle from '@organisms/UsersManager/Title.vue';
|
||||
|
||||
describe("tests UsersManagerTitle component", () => {
|
||||
test('mount test of UsersManagerTitle', async () => {
|
||||
@@ -0,0 +1,323 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import UserEditor from '@organisms/UsersManager/UserEditor.vue';
|
||||
import { createStore, mapGetters } from 'vuex'
|
||||
import axios from "axios"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
|
||||
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
|
||||
|
||||
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 UserEditor component", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
services,
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
beforeEach( async () => {
|
||||
store.dispatch('users/resetStore')
|
||||
|
||||
})
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: defaultUsers,
|
||||
})
|
||||
|
||||
const adapterOfUsers = new AdapterOfUsers(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
|
||||
|
||||
test('UserEditor mounted with vuex', async () => {
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
})
|
||||
|
||||
expect(wrapper.exists()).toBe(true)
|
||||
})
|
||||
|
||||
test('Editing selected user in UserEditor', async () => {
|
||||
|
||||
store.dispatch('users/updateSelectedUser', defaultUsers[0])
|
||||
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
})
|
||||
|
||||
const selectedUser = store.getters['users/selectedUser']
|
||||
|
||||
expect(selectedUser.firstName).toBe('Leanne 1')
|
||||
|
||||
wrapper.vm.editData({key: 'firstName', value: 'test Editing'})
|
||||
|
||||
const selectedUserAfterEdit = store.getters['users/selectedUser']
|
||||
|
||||
expect(selectedUserAfterEdit.firstName).toBe('test Editing')
|
||||
|
||||
})
|
||||
|
||||
test('Saving after editing selected user in UserEditor', async () => {
|
||||
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const editedUser = {
|
||||
"id": 3,
|
||||
"serviceId": [1, 3],
|
||||
"firstName": "Leanne 3 edited",
|
||||
"lastName": "Graham edited",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
await serviceOfUsers.getUsersByService(resServices[0].id, 'dev')
|
||||
|
||||
store.dispatch('services/editSelectedService', resServices)
|
||||
store.dispatch('users/updateSelectedUser', editedUser)
|
||||
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('services', ["selectedService"]),
|
||||
...mapGetters('users', ['selectedUser']),
|
||||
},
|
||||
})
|
||||
|
||||
const selectedUser = store.getters['users/selectedUser']
|
||||
wrapper.vm.saveUser()
|
||||
|
||||
const updatedUsersWithService = store.getters['users/usersWithService']
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
|
||||
const updatedUser = updatedUsersWithService.find(user => user.id === selectedUser.id)
|
||||
|
||||
expect(userStatus).toBe('inactive')
|
||||
expect(updatedUser.firstName).toBe(editedUser.firstName)
|
||||
expect(updatedUser.lastName).toBe(editedUser.lastName)
|
||||
|
||||
})
|
||||
|
||||
test('Saving after creating new user in UserEditor', async () => {
|
||||
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const newUser = {
|
||||
"id": -1,
|
||||
"serviceId": [],
|
||||
"firstName": "Leanne 3 new",
|
||||
"lastName": "Graham new",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
await serviceOfUsers.getUsersByService(resServices[0].id, 'dev')
|
||||
|
||||
store.dispatch('services/editSelectedService', resServices)
|
||||
store.dispatch('users/updateSelectedUser', newUser)
|
||||
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('services', ["selectedService"]),
|
||||
...mapGetters('users', ['selectedUser']),
|
||||
},
|
||||
})
|
||||
|
||||
wrapper.vm.saveUser()
|
||||
|
||||
const updatedUsersWithService = store.getters['users/usersWithService']
|
||||
const userStatus = store.getters['users/userStatus']
|
||||
|
||||
const updatedUser = updatedUsersWithService[0]
|
||||
|
||||
expect(userStatus).toBe('inactive')
|
||||
expect(updatedUser.firstName).toBe(newUser.firstName)
|
||||
expect(updatedUser.lastName).toBe(newUser.lastName)
|
||||
|
||||
})
|
||||
|
||||
test('Get Password for selected user in UserEditor', async () => {
|
||||
|
||||
const editedUser = {
|
||||
"id": 3,
|
||||
"serviceId": [1, 3],
|
||||
"firstName": "Leanne 3 edited",
|
||||
"lastName": "Graham edited",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
}
|
||||
|
||||
store.dispatch('users/updateSelectedUser', editedUser)
|
||||
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
})
|
||||
|
||||
const selectedUser = store.getters['users/selectedUser']
|
||||
|
||||
expect(selectedUser).not.toHaveProperty('password')
|
||||
|
||||
wrapper.vm.getPassword()
|
||||
|
||||
const selectedUserAfterAddPass = store.getters['users/selectedUser']
|
||||
|
||||
expect(selectedUserAfterAddPass).toHaveProperty('password')
|
||||
})
|
||||
|
||||
test('toggle view field Password for selected user in UserEditor', async () => {
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showNewPassword: false,
|
||||
newPasswordType: 'password',
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// await wrapper.setData({ showNewPassword: true })
|
||||
// console.log('passwordField', passwordField.attributes().type)
|
||||
|
||||
wrapper.vm.togglePass()
|
||||
|
||||
expect(wrapper.vm.showNewPassword).toBe(true)
|
||||
expect(wrapper.vm.newPasswordType).toBe('text')
|
||||
|
||||
})
|
||||
|
||||
test('toggle view field RepeatPassword for selected user in UserEditor', async () => {
|
||||
const wrapper = mount(UserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
showRepeatPassword: false,
|
||||
repeatPasswordType: 'password',
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
wrapper.vm.toggleRepeatPass()
|
||||
|
||||
expect(wrapper.vm.showRepeatPassword).toBe(true)
|
||||
expect(wrapper.vm.repeatPasswordType).toBe('text')
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import UsersManager from '@organisms/UsersManager/UsersManager.vue';
|
||||
import axios from "axios";
|
||||
import {store, serviceOfUsers} from './StaticMocks.js'
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
|
||||
describe("tests SitesManagerPage component mounted with vuex", () => {
|
||||
|
||||
vi.mock('tabulator-tables', () => {
|
||||
const mockTabulator = vi.fn().mockImplementation(() => ({
|
||||
// Mock implementation details
|
||||
}));
|
||||
return { TabulatorFull: mockTabulator }; // Adjust based on what you're trying to mock
|
||||
});
|
||||
|
||||
beforeEach(async () => {
|
||||
store.dispatch('users/resetStore')
|
||||
|
||||
const mockData = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-02-22T17:08:37.715772388+03:00",
|
||||
"updated_at": "2024-02-26T14:11:38.64094899+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "172.25.78.153",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
}
|
||||
]
|
||||
axios.get.mockResolvedValue({
|
||||
data: mockData,
|
||||
})
|
||||
|
||||
await store.dispatch('services/uploadSites')
|
||||
|
||||
store.dispatch('services/uploadAndSelectService', 1)
|
||||
})
|
||||
|
||||
test('test UsersManager mounted with vuex', async () => {
|
||||
const wrapper = mount(UsersManager, {
|
||||
global: {
|
||||
plugins: [store],
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const componentState = wrapper.vm.componentState
|
||||
const gridCols = wrapper.vm.gridCols
|
||||
expect(componentState).toBe('view')
|
||||
expect(gridCols).toBe('grid-cols-1')
|
||||
})
|
||||
|
||||
test('test UsersManager create user button', async () => {
|
||||
const wrapper = mount(UsersManager, {
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
})
|
||||
|
||||
await wrapper.vm.openUserPanelOfCreate()
|
||||
|
||||
let componentState = wrapper.vm.componentState
|
||||
let gridCols = wrapper.vm.gridCols
|
||||
|
||||
let wrapperHtml = wrapper.html()
|
||||
expect(componentState).toBe('create')
|
||||
expect(gridCols).toBe('grid-cols-2')
|
||||
expect(wrapperHtml).toContain("new-user-container")
|
||||
|
||||
await wrapper.vm.openUserPanelOfSelect()
|
||||
wrapperHtml = wrapper.html()
|
||||
componentState = wrapper.vm.componentState
|
||||
gridCols = wrapper.vm.gridCols
|
||||
expect(componentState).toBe('select')
|
||||
expect(gridCols).toBe('grid-cols-2')
|
||||
expect(wrapperHtml).toContain("Выбрать пользователя")
|
||||
expect(wrapperHtml).toContain("Выбрать пользователя")
|
||||
|
||||
await wrapper.vm.closeUserPanel()
|
||||
wrapperHtml = wrapper.html()
|
||||
componentState = wrapper.vm.componentState
|
||||
gridCols = wrapper.vm.gridCols
|
||||
expect(componentState).toBe('view')
|
||||
expect(gridCols).toBe('grid-cols-1')
|
||||
expect(wrapperHtml).not.toContain("Выбрать пользователя")
|
||||
expect(wrapperHtml).not.toContain("new-user-container")
|
||||
})
|
||||
|
||||
test('test UsersManager select user button', async () => {
|
||||
const wrapper = mount(UsersManager, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
},
|
||||
props: {
|
||||
serviceOfUsers
|
||||
}
|
||||
})
|
||||
|
||||
await wrapper.vm.openUserPanelOfSelect()
|
||||
|
||||
const usersOffSite = store.getters['users/usersOffSite']
|
||||
|
||||
const componentState = wrapper.vm.componentState
|
||||
const gridCols = wrapper.vm.gridCols
|
||||
|
||||
expect(componentState).toBe('select')
|
||||
expect(gridCols).toBe('grid-cols-2')
|
||||
expect(usersOffSite).toEqual([{id: 1, name: 'user1'}, {id: 2, name: 'user2'}])
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
import {test, describe, expect} from 'vitest'
|
||||
import { mount} from '@vue/test-utils'
|
||||
import UsersManagerUsersTable from '@organisms/UsersManager/UsersManagerUsersTable.vue';
|
||||
|
||||
describe("tests UsersManagerUsersTable component", () => {
|
||||
test('mount test of UsersManagerUsersTable', async () => {
|
||||
|
||||
const wrapper = mount(UsersManagerUsersTable, {
|
||||
shallow: true,
|
||||
})
|
||||
|
||||
expect(wrapper.exists()).toBe(true)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi, beforeEach } from 'vitest'
|
||||
import UsersManagerUserEditor from '@organisms/UsersManager/UsersManagerUserEditor.vue';
|
||||
import { createStore } from 'vuex'
|
||||
import {store as users} from '@/store/modules/users';
|
||||
import axios from "axios";
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
describe("tests UsersManagerUserEditor component mounted with vuex", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
users
|
||||
},
|
||||
})
|
||||
|
||||
beforeEach( async () => {
|
||||
store.dispatch('users/resetStore')
|
||||
|
||||
const mockData = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-02-22T17:08:37.715772388+03:00",
|
||||
"updated_at": "2024-02-26T14:11:38.64094899+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "172.25.78.153",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
}
|
||||
]
|
||||
axios.get.mockResolvedValue({
|
||||
data: mockData,
|
||||
})
|
||||
await store.dispatch('services/uploadSites')
|
||||
|
||||
store.dispatch('services/uploadAndSelectService', 1)
|
||||
})
|
||||
|
||||
test('tests UsersManager mounted with vuex', async () => {
|
||||
const wrapper = mount(UsersManagerUserEditor, {
|
||||
shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
}
|
||||
})
|
||||
|
||||
expect(wrapper.exists()).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
import { mount} from '@vue/test-utils'
|
||||
import { expect, test, describe, vi } from 'vitest'
|
||||
import Sites from '@pages/SitesManagerPage/SitesManagerPage.vue';
|
||||
import Services from '@pages/ServicesManagerPage/ServicesManagerPage.vue';
|
||||
import { createStore } from 'vuex'
|
||||
import {store as services} from '@/store/modules/services';
|
||||
import {store as users} from '@/store/modules/users';
|
||||
import axios from "axios";
|
||||
import {store as services} from "@/store/modules/services"
|
||||
import {store as users} from "@/store/modules/users"
|
||||
import AdapterOfServices from '@adapters/adapterOfServices/Services'
|
||||
import ServiceOfServices from '@services/serviceOfServices/Services.js'
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
|
||||
describe("tests App mounted with vuex", () => {
|
||||
describe("tests Services Manager Page component", () => {
|
||||
const store = createStore({
|
||||
plugins: [],
|
||||
modules: {
|
||||
@@ -18,48 +20,64 @@ describe("tests App mounted with vuex", () => {
|
||||
},
|
||||
})
|
||||
|
||||
const mockData = [
|
||||
const defaultServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"first_name": "Leanne",
|
||||
"last_name": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
"is_active": true
|
||||
}
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"site_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
const resServices = [
|
||||
{
|
||||
"id": 1,
|
||||
"created_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"updated_at": "2024-03-06T17:31:31.948355541+03:00",
|
||||
"deleted_at": null,
|
||||
"name": "jsonplaceholder.typicode.com",
|
||||
"port": 9965,
|
||||
"proxy_ip": "172.25.78.153",
|
||||
"device_ip": "https://jsonplaceholder.typicode.com/",
|
||||
"internet_uri": "localhost",
|
||||
"description": "localhost",
|
||||
"is_online": true
|
||||
},
|
||||
]
|
||||
|
||||
axios.get.mockResolvedValue({
|
||||
data: mockData,
|
||||
data: defaultServices,
|
||||
})
|
||||
|
||||
test('tests App mounted with vuex', async () => {
|
||||
const wrapper = mount(Sites, {
|
||||
shallow: true,
|
||||
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
||||
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
||||
|
||||
test('Services Manager Page mounted with vuex', async () => {
|
||||
const wrapper = mount(Services, {
|
||||
// shallow: true,
|
||||
global: {
|
||||
plugins: [store]
|
||||
}
|
||||
})
|
||||
|
||||
const siteId = 1
|
||||
const answer = await wrapper.vm.selectSite(siteId, "production")
|
||||
// console.log('wrapper.vm', wrapper.vm)
|
||||
|
||||
const usersList = store.getters['users/usersList']
|
||||
const componentState = store.getters['users/componentState']
|
||||
const selectedService = store.getters['services/selectedService']
|
||||
await serviceOfServices.fetchServices()
|
||||
|
||||
expect(usersList).toEqual([{
|
||||
"id": 1,
|
||||
"first_name": "Leanne",
|
||||
"last_name": "Graham",
|
||||
"email": "test@mail.ru",
|
||||
"role": "admin",
|
||||
"is_active": true
|
||||
}])
|
||||
expect(componentState).toEqual('active')
|
||||
expect(selectedService).toBe(null)
|
||||
expect(answer).toBe("ok")
|
||||
const uploadServices = store.getters['services/services']
|
||||
|
||||
expect(uploadServices).toEqual(resServices) // full services array of store
|
||||
expect(wrapper.html()).toContain('me-2 mb-6')
|
||||
expect(wrapper.text()).toContain('На главную')
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user