public function testPut() { list($repo, $configs, $modules, $routes) = $this->getMocks(); $instance = new MenuHandler($repo, $configs, $modules, $routes); $mockMenu = m::mock('Xpressengine\\Menu\\Models\\Menu'); $repo->shouldReceive('update')->with($mockMenu)->andReturn($mockMenu); $instance->put($mockMenu); }
/** * update * * @param MenuHandler $handler menu handler * @param string $menuId to update menu entity object id * * @return RedirectResponse * @throws Exception */ public function update(MenuHandler $handler, $menuId) { $menu = $handler->get($menuId); $desktopTheme = Input::get('theme_desktop'); $mobileTheme = Input::get('theme_desktop'); $rules = ['menuTitle' => 'required', 'theme_desktop' => 'required', 'theme_mobile' => 'required']; $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { Input::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $validator->messages()]); } XeDB::beginTransaction(); try { $menu->title = Input::get('menuTitle'); $menu->description = Input::get('menuDescription'); $handler->put($menu); $handler->updateMenuTheme($menu, $desktopTheme, $mobileTheme); } catch (Exception $e) { XeDB::rollback(); Input::flash(); return Redirect::back()->with('alert', ['type' => 'danger', 'message' => $e->getMessage()]); } XeDB::commit(); return Redirect::route('settings.menu.index'); }