refactor: refs #7050 refactorize
gitea/salix-front/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Jose Antonio Tubau 2024-12-23 15:09:14 +01:00
parent 5cbff5035b
commit 1cf817be17
2 changed files with 29 additions and 40 deletions

View File

@ -127,7 +127,7 @@ function resetData(data) {
originalData.value = JSON.parse(JSON.stringify(data)); originalData.value = JSON.parse(JSON.stringify(data));
formData.value = JSON.parse(JSON.stringify(data)); formData.value = JSON.parse(JSON.stringify(data));
if (watchChanges.value) watchChanges.value(); //destoy watcher if (watchChanges.value) watchChanges.value(); //destroy watcher
watchChanges.value = watch(formData, () => (hasChanges.value = true), { deep: true }); watchChanges.value = watch(formData, () => (hasChanges.value = true), { deep: true });
} }
@ -271,7 +271,7 @@ function getChanges() {
function isEmpty(obj) { function isEmpty(obj) {
if (obj == null) return true; if (obj == null) return true;
if (Array.isArray(obj)) return !obj.length; if (Array.isArray(obj)) return !obj.length;
return Object.keys(obj).length === 0 ; return !Object.keys(obj).length;
} }
async function reload(params) { async function reload(params) {

View File

@ -3,10 +3,11 @@ import CrudModel from 'components/CrudModel.vue';
import { vi, afterEach, beforeEach, beforeAll, describe, expect, it } from 'vitest'; import { vi, afterEach, beforeEach, beforeAll, describe, expect, it } from 'vitest';
describe('CrudModel', () => { describe('CrudModel', () => {
let wrapper;
let vm; let vm;
let data; let data;
beforeAll(() => { beforeAll(() => {
vm = createWrapper(CrudModel, { wrapper = createWrapper(CrudModel, {
global: { global: {
stubs: [ stubs: [
'vnPaginate', 'vnPaginate',
@ -26,8 +27,11 @@ describe('CrudModel', () => {
dataKey: 'crudModelKey', dataKey: 'crudModelKey',
model: 'crudModel', model: 'crudModel',
url: 'crudModelUrl', url: 'crudModelUrl',
saveFn: '',
}, },
}).vm; });
wrapper=wrapper.wrapper;
vm=wrapper.vm;
}); });
beforeEach(() => { beforeEach(() => {
@ -143,11 +147,6 @@ describe('CrudModel', () => {
result = vm.isEmpty(dummyObj); result = vm.isEmpty(dummyObj);
expect(result).toBe(true); expect(result).toBe(true);
dummyArray = [];
result = vm.isEmpty(dummyArray);
expect(result).toBe(true);
}); });
it('should return false if object is not empty', async () => { it('should return false if object is not empty', async () => {
@ -155,6 +154,17 @@ describe('CrudModel', () => {
result = vm.isEmpty(dummyObj); result = vm.isEmpty(dummyObj);
expect(result).toBe(false); expect(result).toBe(false);
});
it('should return true if array is empty', async () => {
dummyArray = [];
result = vm.isEmpty(dummyArray);
expect(result).toBe(true);
});
it('should return false if array is not empty', async () => {
dummyArray = [1,2,3]; dummyArray = [1,2,3];
result = vm.isEmpty(dummyArray); result = vm.isEmpty(dummyArray);
@ -193,7 +203,7 @@ describe('CrudModel', () => {
lastName: 'Stark', lastName: 'Stark',
age: 42, age: 42,
}; };
vm.resetData(data); vm.resetData(data);
expect(vm.originalData).toEqual(data); expect(vm.originalData).toEqual(data);
@ -210,39 +220,18 @@ describe('CrudModel', () => {
}]; }];
it('should call saveFn if exists', async () => { it('should call saveFn if exists', async () => {
const saveFnMock = vi.fn(); await wrapper.setProps({ saveFn: vi.fn() });
const localVm = createWrapper(CrudModel, {
global: {
stubs: [
'vnPaginate',
'useState',
'arrayData',
'useStateStore',
'vue-i18n',
],
mocks: {
validate: vi.fn(),
},
},
propsData: {
dataRequired: {
fk: 1,
},
dataKey: 'crudModelKey',
model: 'crudModel',
url: 'crudModelUrl',
saveFn: saveFnMock,
},
});
localVm.vm.saveChanges(data); vm.saveChanges(data);
expect(saveFnMock).toHaveBeenCalledOnce();
expect(localVm.vm.isLoading).toBe(false); expect(vm.saveFn).toHaveBeenCalledOnce();
expect(localVm.vm.hasChanges).toBe(false); expect(vm.isLoading).toBe(false);
expect(vm.hasChanges).toBe(false);
await wrapper.setProps({ saveFn: '' });
}); });
it('should not call saveFn if not exists', async () => { it("should use default url if there's not saveFn", async () => {
const postMock =vi.spyOn(axios, 'post'); const postMock =vi.spyOn(axios, 'post');
vm.formData = [{ vm.formData = [{