406 lines
12 KiB
JavaScript
406 lines
12 KiB
JavaScript
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";
|
|
|
|
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
|
|
}
|
|
]
|
|
|
|
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
|
|
}
|
|
]
|
|
|
|
describe("tests services store with vuex", () => {
|
|
const store = createStore({
|
|
plugins: [],
|
|
modules: {
|
|
services
|
|
},
|
|
})
|
|
|
|
beforeEach(() => {
|
|
store.dispatch('services/resetStore')
|
|
})
|
|
|
|
const adapterOfServices = new AdapterOfServices(import.meta.env.VITE_API_ADDR)
|
|
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
|
|
|
|
axios.get.mockResolvedValue({
|
|
data: defaultServices,
|
|
})
|
|
|
|
test('Upload services', async () => {
|
|
|
|
const services = store.getters['services/services']
|
|
|
|
expect(services).toEqual([]) // empty services array of store
|
|
|
|
await serviceOfServices.fetchServices()
|
|
|
|
const uploadServices = store.getters['services/services']
|
|
|
|
expect(uploadServices).toEqual(resServices) // full services array of store
|
|
|
|
})
|
|
|
|
test('Added new service layout to services of store', async () => {
|
|
const expectedserviceData = {"port": "", "name": "", id: -1}
|
|
|
|
await serviceOfServices.addNewServiceLayout()
|
|
|
|
const selectedService = store.getters['services/selectedService']
|
|
const services = store.getters['services/services']
|
|
|
|
expect(
|
|
{
|
|
selectedService,
|
|
services
|
|
}
|
|
).toEqual({
|
|
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 =
|
|
{
|
|
"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(editedService)
|
|
|
|
const selectedService = store.getters['services/selectedService']
|
|
|
|
expect(selectedService).toEqual(editedService)
|
|
|
|
})
|
|
|
|
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 =
|
|
{
|
|
"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)
|
|
|
|
await serviceOfServices.editSelectedService({key: 'name', value: 'edited test name'}).then(async () => {
|
|
await serviceOfServices.editSelectedService({key: 'port', value: 5555}).then(async () => {
|
|
await serviceOfServices.editSelectedService({key: 'description', value: 'edited description field'})
|
|
})
|
|
})
|
|
|
|
const selectedService = store.getters['services/selectedService']
|
|
|
|
expect(selectedService.name).toEqual('edited test name')
|
|
expect(selectedService.port).toEqual(5555)
|
|
expect(selectedService.description).toEqual('edited description field')
|
|
|
|
})
|
|
|
|
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)
|
|
|
|
const defaultServices = store.getters['services/services']
|
|
const forEditService = defaultServices.find(service => service.id === 3)
|
|
|
|
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 updatedServices = updatedService(editedService, defaultServices)
|
|
store.commit('services/setServices', updatedServices)
|
|
|
|
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
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|