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' import {defaultServices, resServices} from "@mocks/services" config.showDeprecationWarnings = false vi.mock('axios') describe("tests EditServiceCard component", () => { const store = createStore({ plugins: [], modules: { services, }, }) 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, { global: { mocks: { $store: 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: { mocks: { $store: 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: { mocks: { $store: store } }, props: { serviceOfServices, id: 1, }, }) const selectedService = store.getters['services/selectedService'] expect(selectedService.isOnline).toEqual(true) wrapper.vm.editData({key: 'isOnline', value: false}) const selectedServiceAfterEditing = store.getters['services/selectedService'] expect(selectedServiceAfterEditing.isOnline).toEqual(false) }) test("Set isSaveData for selected service in EditServiceCard", async () => { store.commit('services/setSelectedService', resServices[0]) const wrapper = mount(EditServiceCard, { global: { mocks: { $store: 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) }) })