Ejemplo n.º 1
0
 /**
  * update
  *
  * @param MenuRetrieveHandler $menuHandler   basic handler
  * @param MenuAlterHandler    $menuChanger   menu alter handler
  * @param MenuConfigHandler   $configHandler menu config handler
  * @param string              $menuId        to update menu entity object id
  *
  * @return RedirectResponse
  * @throws Exception
  */
 public function update(MenuRetrieveHandler $menuHandler, MenuAlterHandler $menuChanger, MenuConfigHandler $configHandler, $menuId)
 {
     $menu = $menuHandler->getMenu($menuId);
     $inputs = Request::all();
     $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 {
         $menuChanger->putMenu($menu, $inputs);
         $desktopTheme = $inputs['theme_desktop'];
         $mobileTheme = $inputs['theme_desktop'];
         $configHandler->updateMenuTheme($menu, $desktopTheme, $mobileTheme);
     } 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');
 }
 /**
  * testPutMenu
  *
  * @return void
  */
 public function testPutMenu()
 {
     $menuRepo = $this->menuRepository;
     $typeHandler = $this->typeHandler;
     $routeHandler = $this->routeHandler;
     $cacheHandler = $this->cacheHandler;
     $menuHandler = new MenuAlterHandler($menuRepo, $typeHandler, $routeHandler, $cacheHandler);
     $menu = new MenuEntity(['id' => 'testMenu', 'title' => 'testTitle', 'description' => 'testDescription'], new TreeCollection([new MenuItem(['id' => 'testMenu'])]));
     $inputs = ['menuTitle' => 'changedTitle', 'menuDescription' => 'changedDescription'];
     $menuRepo->shouldReceive('updateMenu')->andReturn(1);
     $result = $menuHandler->putMenu($menu, $inputs);
     $this->assertEquals(1, $result);
     $this->assertEquals('changedTitle', $menu->title);
     $this->assertEquals('changedDescription', $menu->description);
 }