/** * testSetMenuTheme * * @return void */ public function testSetMenuTheme() { // MenuEntity $menu, $theme $configManager = $this->configManager; $themeHandler = $this->themeHandler; $configManager->shouldReceive('add')->andReturn('defaultTheme'); $dummyMenu = new MenuEntity(['id' => 'testMenu', 'title' => 'testTitle', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenu'])]), new Collection()); $menuConfigHandler = new MenuConfigHandler($configManager, $themeHandler); $menuConfigHandler->setMenuTheme($dummyMenu, 'blueTheme', 'mobileTheme'); }
/** * store * 새로운 메뉴 생성을 처리하는 메소드 * * @param MenuAlterHandler $menuChanger menu alter handler * @param MenuConfigHandler $configHandler menu config like theme config handler * @param MenuPermissionHandler $permissionHandler menu permission handler * * @return mixed * @throws Exception */ public function store(MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, MenuPermissionHandler $permissionHandler) { $inputs = Request::all(); $selectedDesktopTheme = Request::get('theme_desktop'); $selectedMobileTheme = Request::get('theme_mobile'); $rules = ['menuTitle' => 'required', 'theme_desktop' => 'required', 'theme_mobile' => 'required']; $validator = Validator::make($inputs, $rules); if ($validator->fails()) { Request::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $validator->messages()]); } XeDB::beginTransaction(); try { $menu = $menuChanger->addMenu($inputs); $configHandler->setMenuTheme($menu, $selectedDesktopTheme, $selectedMobileTheme); $defaultMenuPermission = $permissionHandler->getDefaultMenuPermission(); $permissionHandler->registerMenuPermission($menu, $defaultMenuPermission); } catch (Exception $e) { XeDB::rollback(); Request::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]); } XeDB::commit(); return Redirect::route('settings.menu.index'); }