import { model } from './exp-view-controller-model'; import { useEventBind, useNavParamsBind } from "@/hooks/use-view"; import { ExpViewController } from '@/core/controller/view/exp-view-controller'; import { IParam } from '@/core'; const evt = useEventBind(emit); const params: any = { name: model.name, model, evt, isLoadDefault: true, openType: 'ROUTE', pLoadingHelper: undefined, handler: undefined }; const controller: any = new ExpViewController(params); useNavParamsBind(controller, {}); const store = controller.getStore(); describe('ExpViewController unit test', () => { const ability = { load: (params?: IParam) => { return { ok: true, data: null, rowData: { status: 200 } } } } const getAbilitySpy = vi.spyOn(controller, 'getMainCtrlAbility').mockImplementation(() => ability); const initViewActionState = () => { } const spy = vi.spyOn(controller, "initViewActionState").mockImplementation(initViewActionState); test('viewMounted', () => { const opt = {}; controller.viewMounted(opt); expect(getAbilitySpy).toHaveBeenCalled(); expect(spy).toHaveBeenCalled(); expect(emit).toHaveBeenCalled(); expect(emit).toHaveBeenCalledWith('view-mounted', model.name, opt); }); test('load', async () => { const loadSpy = await controller.load(); expect(getAbilitySpy).toHaveBeenCalled(); expect(loadSpy).toStrictEqual({ ok: true, data: null, rowData: { status: 200 } }) }); test('handleQuickGroupValueChange', async () => { const item = { data: { 'n_name_eq': '张' } }; const changeSpy = controller.handleQuickGroupValueChange(item); expect(getAbilitySpy).toHaveBeenCalled(); expect(controller).toHaveProperty('isEmitQuickGroupValue', true); expect(controller).toHaveProperty('queryParams.quickGroupData', { 'n_name_eq': '张' }); }); test('handleSelectionChange', async () => { const navParam = { data: { id: '233' }, navData: { context: {}, viewParams:{} } }; const changeSpy = controller.handleSelectionChange([navParam]); expect(emit).toHaveBeenLastCalledWith('view-action', model.name, 'viewDataChange', [navParam.data]); }); test('handleMDCtrlBeforeLoad', async () => { const param = { }; const item = { data: { 'n_name_eq': '张' } }; controller.handleQuickGroupValueChange(item); const changeSpy = controller.handleMDCtrlBeforeLoad([param]); expect(param).toHaveProperty('n_name_eq', '张'); }); })