import { AppMenuController, } from '@/core'; import { useEventBind, useNavParamsBind } from "@/hooks/use-ctrl"; import { model } from './app-menu-controller-model'; const evt = useEventBind(emit); const params: any = { name: model.name, model, evt, mode: 'LEFT', isDefaultPage: true, isBlankMode: false, defPSAppView: 'AppPortalView', closeView: undefined, pLoadingHelper: undefined, pViewCtx: undefined, actions: undefined, handler: undefined }; const context = { }; const viewParams = { }; const controller: any = new AppMenuController(params); useNavParamsBind(controller, { context, viewParams }); describe('AppMenuController unit test', () => { test('load', async () => { const computeDefaultView = () => { return false }; const spy = vi.spyOn(controller, "computeDefaultView").mockImplementation(computeDefaultView); controller.load() expect(spy).toHaveBeenCalled(); expect(spy).toHaveReturnedWith(false); expect(emit).toHaveBeenCalledTimes(2); }); test('computedMenusResource', () => { const menuPermissionMode = App.getProjectSetting().menuSetting.menuPermissionMode; const appName = App.getAppConfig().appName; const getAppMenuAuth: any = (tag: string) => { if (Object.is(menuPermissionMode, 'RT')) { return tag !== `${appName}-${model.codeName}-${model.menus[0].name}`; } else { return false; } } const spy = vi.spyOn(App, "getAppMenuAuth").mockImplementation(getAppMenuAuth); controller.computedMenusResource(model.menus); expect(model.menus[0]).toHaveProperty("hidden", true); if (Object.is(menuPermissionMode, 'RT')) { expect(spy).toHaveBeenCalled(); } }); test.todo('computeDefaultView 待之后测试升级后进行端对端测试'); test('computeMenuSelect', () => { expect(controller.computeMenuSelect(model.menus, '')).toBe(true); }); test.todo('openDefaultView 待之后测试升级后进行端对端测试'); test('computeItem', () => { expect(controller.computeItem(model.menus, model.menus[0].name)).toStrictEqual(model.menus[0]); }) })