/**
  * testAddMenu
  *
  * @return void
  */
 public function testAddMenu()
 {
     $menuRepo = $this->menuRepository;
     $typeHandler = $this->typeHandler;
     $routeHandler = $this->routeHandler;
     $cacheHandler = $this->cacheHandler;
     $menuHandler = new MenuAlterHandler($menuRepo, $typeHandler, $routeHandler, $cacheHandler);
     $inputs = ['menuTitle' => '기본메뉴', 'menuDescription' => '기본메뉴 입니다.', 'siteKey' => 'default'];
     $menuRepo->shouldReceive('insertMenu')->andReturn(new MenuEntity(['id' => 'basic', 'title' => $inputs['menuTitle'], 'description' => $inputs['menuDescription'], 'site' => $inputs['siteKey']], new TreeCollection([])));
     $menuRepo->shouldReceive('insertHierarchy')->andReturn(true);
     $menu = $menuHandler->addMenu($inputs);
     $this->assertEquals('기본메뉴', $menu->title);
     $this->assertEquals('기본메뉴 입니다.', $menu->description);
     $this->assertEquals('default', $menu->site);
 }
Ejemplo n.º 2
0
 /**
  * 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');
 }