import { MDViewController } from "@/core/controller/view/md-view-controller"; import { useEventBind, useNavParamsBind } from "@/hooks/use-view"; import { model } from './md-view-controller-model'; const evt = useEventBind(emit); const params: any = { name: model.name, model, evt, isLoadDefault: true, openType: 'ROUTE', pLoadingHelper: undefined, handler: undefined }; const controller: any = new MDViewController(params); useNavParamsBind(controller, {}); const store = controller.getStore(); const MDCtrlAbility = { load: () => { return { ok: true, data: null, rowData: { status: 200 }, } }, refresh: async () => { return {ok: true, data: null, rowData: { } } }, save: async () => { return { ok: true, data: null, rowData: { status: 200 }, } }, } const SearchFormAbility = { load: () => { return { ok: true, data: null, rowData: { status: 200 }, } }, loadDraft: () => { return { ok: true, data: null, rowData: { status: 200 }, } }, getData: () => { return [{test: '1'}]; } } const spyMDCtrlAbility = vi.spyOn(controller, "getMainCtrlAbility").mockImplementation(() => MDCtrlAbility); const spySearchFormAbility = vi.spyOn(controller, "getSearchFormAbility").mockImplementation(() => SearchFormAbility); describe('MDViewController unit test', () => { const initViewActionState = () => { } const spy = vi.spyOn(controller, "initViewActionState").mockImplementation(initViewActionState); test('viewMounted', () => { const opt = {}; controller.viewMounted(opt) expect(spySearchFormAbility).toHaveBeenCalled(); expect(spySearchFormAbility).toHaveReturnedWith(SearchFormAbility); expect(spy).toHaveBeenCalled(); expect(emit).toHaveBeenCalled(); expect(emit).toHaveBeenCalledWith('view-mounted', model.name, opt); }); test('load', () => { const opt = {}; expect(controller.load(opt)).toStrictEqual({ok: true, data: null, rowData: { status: 200 } }) expect(spyMDCtrlAbility).toHaveBeenCalled(); expect(spyMDCtrlAbility).toHaveReturnedWith(MDCtrlAbility); }) test('refresh', () => { const opt = {}; expect(controller.refresh(opt)).resolves.toStrictEqual({ok: true, data: null, rowData: { } }) }); test('save', () => { const opt = {}; expect(controller.save(opt)).resolves.toStrictEqual({ok: true, data: [], rowData: { status: 200 } }); }); test('handleMDCtrlAction', () => { const data = [{ [model.entityCodeName.toLowerCase()]: '23141421', }]; const handleMDCtrlBeforeLoadSpy = vi.spyOn(controller, 'handleMDCtrlBeforeLoad'); controller.handleMDCtrlAction('beforeLoad', data); expect(data).toStrictEqual([{ [model.entityCodeName.toLowerCase()]: '23141421', test: '1' }]); expect(handleMDCtrlBeforeLoadSpy).toHaveBeenCalled(); expect(handleMDCtrlBeforeLoadSpy).toHaveBeenCalledWith(data); const handleMDCtrlLoadSpy = vi.spyOn(controller, 'handleMDCtrlLoad'); controller.handleMDCtrlAction('load', data); expect(handleMDCtrlLoadSpy).toHaveBeenCalled(); expect(handleMDCtrlLoadSpy).toHaveBeenCalledWith(data); const selectionChangeSpy = vi.spyOn(controller, 'handleSelectionChange'); controller.handleMDCtrlAction('selectionChange', data); expect(selectionChangeSpy).toHaveBeenCalled(); expect(selectionChangeSpy).toHaveBeenCalledWith(data); const dataActiveSpy = vi.spyOn(controller, 'handleDataActive'); controller.handleMDCtrlAction('dataActive', data); expect(dataActiveSpy).toHaveBeenCalled(); expect(dataActiveSpy).toHaveBeenCalledWith(data); }); test('handleQuickGroupValueChange', () => { const item = { data: { test: 1 } } controller.handleQuickGroupValueChange(item); expect(controller.queryParams).toHaveProperty('quickGroupData', { test: 1 }); expect(controller.isEmitQuickGroupValue).toBe(true) }) })