movied users from old project to new project anover repository, updated tests, cleared warns and errors in tests

This commit is contained in:
2024-04-01 15:26:46 +03:00
parent 10114ff67e
commit 28c13c00ec
50 changed files with 3798 additions and 776 deletions

View File

@@ -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)
})
})

View File

@@ -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('Удалить')
})
})

View File

@@ -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('Добавить сайт')
})
})