import { describe, expect, it, beforeEach, afterEach, vi } from 'vitest'; import { createWrapper } from 'app/test/vitest/helper'; import VnVisibleColumn from '../VnVisibleColumn.vue'; import { axios } from 'app/test/vitest/helper'; describe('VnVisibleColumns', () => { let wrapper; let vm; beforeEach(() => { wrapper = createWrapper(VnVisibleColumn, { propsData: { tableCode: 'testTable', skip: ['skippedColumn'], }, }); vm = wrapper.vm; }); afterEach(() => { vi.clearAllMocks(); }); describe('setUserConfigViewData()', () => { it('should initialize localColumns with visible configuration', () => { vm.columns = [ { name: 'columnMockName', label: undefined }, { name: 'columnMockAddress', label: undefined }, { name: 'columnMockId', label: undefined }, ]; const configuration = { columnMockName: true, columnMockAddress: false, columnMockId: true, }; const expectedColumns = [ { name: 'columnMockName', label: undefined, visible: true }, { name: 'columnMockAddress', label: undefined, visible: false }, { name: 'columnMockId', label: undefined, visible: true }, ]; vm.setUserConfigViewData(configuration, false); expect(vm.localColumns).toEqual(expectedColumns); }); it('should skip columns based on props', () => { vm.columns = [ { name: 'columnMockName', label: undefined }, { name: 'columnMockId', label: undefined }, { name: 'skippedColumn', label: 'Skipped Column' }, ]; const configuration = { columnMockName: true, skippedColumn: false, columnMockId: true, }; const expectedColumns = [ { name: 'columnMockName', label: undefined, visible: true }, { name: 'columnMockId', label: undefined, visible: true }, ]; vm.setUserConfigViewData(configuration, false); expect(vm.localColumns).toEqual(expectedColumns); }); }); describe('toggleMarkAll()', () => { it('should set all localColumns to visible=true', () => { vm.localColumns = [ { name: 'columnMockName', visible: false }, { name: 'columnMockId', visible: false }, ]; vm.toggleMarkAll(true); expect(vm.localColumns.every((col) => col.visible)).toBe(true); }); it('should set all localColumns to visible=false', () => { vm.localColumns = [ { name: 'columnMockName', visible: true }, { name: 'columnMockId', visible: true }, ]; vm.toggleMarkAll(false); expect(vm.localColumns.every((col) => col.visible)).toBe(false); }); }); describe('saveConfig()', () => { it('should call setUserConfigViewData and axios.post with correct params', async () => { const mockAxiosPost = vi.spyOn(axios, 'post').mockResolvedValue({ data: [{ id: 1 }], }); vm.localColumns = [ { name: 'columnMockName', visible: true }, { name: 'columnMockId', visible: false }, ]; await vm.saveConfig(); expect(mockAxiosPost).toHaveBeenCalledWith('UserConfigViews/crud', { creates: [ { userFk: vm.user.id, tableCode: vm.tableCode, tableConfig: vm.tableCode, configuration: { columnMockName: true, columnMockId: false, }, }, ], }); }); }); });