fix(refactor): add services/adapters/useCases

This commit is contained in:
2024-03-06 12:46:19 +03:00
parent e8609ee6d4
commit 4b6cda8632
25 changed files with 769 additions and 50 deletions

View File

@@ -0,0 +1,11 @@
import {describe, expect, test} from "vitest";
import AdapterOfServices from '@adapters/adapterOfServices/Services'
describe('tests for AdapterOfServices', () => {
test('init', () => {
const adapterOfServices = new AdapterOfServices('http://localhost:8080', {})
expect(adapterOfServices).toBeDefined()
})
})

View File

@@ -0,0 +1,11 @@
import {describe, expect, test} from "vitest";
import AdapterOfUsers from '@adapters/adapterOfUsers/Users'
describe('test for AdapterOfUsers', () => {
test('init', () => {
const adapterOfUsers = new AdapterOfUsers('http://localhost:8080')
expect(adapterOfUsers).toBeDefined()
})
})

View File

@@ -0,0 +1,62 @@
import {describe, vi, expect, test, beforeEach} from "vitest";
import ServiceOfServices from '@services/serviceOfServices/Services.js'
import {createStore} from 'vuex'
class AdapterOfServices {
constructor() {
}
async getServices() {
return [{id: 1, name: 'service1'}, {id: 2, name: 'service2'}]
}
}
const services = {
namespaced: true,
state: {
services: [],
},
mutations: {
setServices(state, services) {
state.services = services
},
},
actions: {
resetStore({state}) {
state.services = []
},
saveServices({commit}, services) {
commit('setServices', services)
}
},
}
describe('tests for ServiceOfServices', () => {
const adapterOfServices = new AdapterOfServices()
const store = createStore({
modules: {
services,
},
})
beforeEach( async() => {
await store.dispatch('services/resetStore')
})
test('init', () => {
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
expect(serviceOfServices).toBeDefined()
})
test('test of fetchServicesList', async () => {
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
await serviceOfServices.fetchUsersList()
const usersList = store.getters['services/servicesList']
expect(usersList).toEqual([{id: 1, name: 'service1'}, {id: 2, name: 'service2'}])
})
})

View File

@@ -0,0 +1,18 @@
import {describe, vi, expect, test} from "vitest";
import ServiceOfUsers from '@services/serviceOfUsers/Users.js'
class AdapterOfUsers {
constructor() {
}
}
describe('test for ServiceOfUsers', () => {
test('init', () => {
const adapterOfUsers = new AdapterOfUsers()
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers)
expect(serviceOfUsers).toBeDefined()
})
})

View File

@@ -0,0 +1,106 @@
import {describe, vi, expect, test, beforeEach} from "vitest";
import CaseOfUsersInService from '@useCases/CaseOfUsersInService.js'
import {createStore} from 'vuex'
class ServiceOfUsers {
constructor(adapter, store) {
this.adapter = adapter
this.store = store
}
}
class ServiceOfServices {
constructor(adapter, store) {
this.adapter = adapter
this.store = store
}
}
class AdapterOfUsers {
constructor() {
}
// eslint-disable-next-line no-unused-vars
async getUsersListByServiceId(serviceId) {
return [{id: 1, name: 'user1'}, {id: 2, name: 'user2'}]
}
}
class AdapterOfServices {
constructor() {
}
}
describe('tests for caseOfUsersInService', () => {
const store = createStore({
modules: {
services: {
namespaced: true,
state: {
services: [],
},
mutations: {
setServices(state, services) {
state.services = services
},
},
actions: {
resetStore({state}) {
state.services = []
},
saveServices({commit}, services) {
commit('setServices', services)
}
},
},
users: {
namespaced: true,
state: {
siteUsersList: [],
},
mutations: {
setSiteUsersList(state, users) {
state.users = users
},
},
actions: {
resetStore({state}) {
state.siteUsersList = []
},
saveUsers({commit}, users) {
commit('setSiteUsersList', users)
}
},
},
},
})
const adapterOfUsers = new AdapterOfUsers()
const adapterOfServices = new AdapterOfServices()
const serviceOfUsers = new ServiceOfUsers(adapterOfUsers, store)
const serviceOfServices = new ServiceOfServices(adapterOfServices, store)
beforeEach( async() => {
await store.dispatch('services/resetStore')
await store.dispatch('users/resetStore')
})
test('init', () => {
const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
expect(caseOfUsersInService).toBeDefined()
})
// test('selectServiceAndFetchRoutes', async () => {
// const caseOfUsersInService = new CaseOfUsersInService(serviceOfUsers, serviceOfServices)
//
// await caseOfUsersInService.selectServiceAndFetchRoutes(1)
//
// const selectedService = store.getters['services/selectedService']
// const usersList = store.getters['users/siteUsersList']
//
// expect(selectedService).toEqual({id: 1, name: 'service1'})
// expect(usersList).toEqual([{id: 1, name: 'user1'}, {id: 2, name: 'user2'}])
// })
})

View File

@@ -12,5 +12,3 @@ describe("tests AppPageHeader component", () => {
expect(wrapper.exists()).toBe(true)
})
})

View File

@@ -7,7 +7,7 @@ describe("tests VTabulator component", () => {
vi.mock('tabulator-tables', () => {
const Tabulator = vi.fn(() => {
const tabulator = vi.fn(() => {
return {
getHtml: () => {
return '<div>test</div>'
@@ -17,7 +17,7 @@ describe("tests VTabulator component", () => {
return {
__esModule: true,
TabulatorFull: Tabulator
TabulatorFull: tabulator
}
})

View File

@@ -17,6 +17,13 @@ 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')
store.dispatch('services/resetStore')
@@ -47,12 +54,13 @@ describe("tests SitesManagerPage component mounted with vuex", () => {
test('test UsersManager mounted with vuex', async () => {
const wrapper = mount(UsersManager, {
shallow: true,
global: {
plugins: [store]
}
})
console.log(wrapper.html())
const componentState = wrapper.vm.componentState
const gridCols = wrapper.vm.gridCols
expect(componentState).toBe('view')

View File

@@ -8,7 +8,8 @@ import axios from "axios";
vi.mock('axios')
describe("tests SitesManagerPage component mounted with vuex", () => {
describe("tests App mounted with vuex", () => {
const store = createStore({
plugins: [],
modules: {
@@ -17,6 +18,8 @@ describe("tests SitesManagerPage component mounted with vuex", () => {
},
})
const mockData = [
{
"id": 1,
@@ -32,7 +35,6 @@ describe("tests SitesManagerPage component mounted with vuex", () => {
data: mockData,
})
test('tests App mounted with vuex', async () => {
const wrapper = mount(Sites, {
shallow: true,