public function postEdit(AdminRouteRequest $request) { $parent_id = $request->get('parent_id'); $action = $request->get('action'); $route_name = $request->get('route_name'); $route = $this->routes->find($request->get('id')); if (!$route) { return response('找不到相关记录', 422); } if ($parent_id != 0) { if (empty($action) && !\Event::hasListeners('router.filter: ' . $route_name)) { return response($route_name . ':路由验证不存在', 422); } if (!empty($action) && !class_exists('App\\Http\\Controllers\\' . $action)) { return response($action . ':控制器不存在', 422); } } else { $route_name = strtolower($route_name); } $route->name = $request->get('name'); $route->action = $action; $route->route_name = $route_name; $route->other_route = $request->get('other_route', ''); $route->parent_id = $parent_id; $route->priority = $request->has('priority') ? $request->get('priority') : ''; if ($route->save()) { \Cache::forget($route->route_name . "_routes"); return saveok(); } else { return response('保存失败', 422); } }
protected function mockController($controllerName = null) { $controllerName = $controllerName ?: $this->controllerName; $this->router = $this->app['router']; $events = $this->getProperty($this->router, 'events'); $this->setProperty($this->router, 'events', $events); $this->app['router'] = $this->router; $this->mock($controllerName); $controllerInstance = $this->app->make($controllerName); $controllerInstance->shouldReceive('paramsBeforeFilter')->with(m::type('string'))->once(); $controllerInstance->shouldReceive('getBeforeFilters')->once()->andReturn([['original' => null, 'filter' => null, 'parameters' => [], 'options' => []]]); $controllerInstance->shouldReceive('getAfterFilters')->once()->andReturn([['original' => null, 'filter' => null, 'parameters' => [], 'options' => []]]); $controllerInstance->shouldReceive('getMiddleware')->once()->andReturn([]); $controllerInstance->shouldReceive('callAction')->with(m::type('string'), m::type('array'))->andReturnUsing(function ($method, $parameters) use($controllerInstance) { $this->app->make('Params')->fillController($controllerInstance); $filterName = "router.filter: controller.parameters." . get_classname($controllerInstance); $this->assertTrue(Event::hasListeners($filterName)); Event::fire($filterName); return new \Symfony\Component\HttpFoundation\Response(); }); $this->mock('\\Efficiently\\AuthorityController\\ControllerResource'); $this->controllerResource = $this->app->make('\\Efficiently\\AuthorityController\\ControllerResource'); $this->controllerResource->shouldReceive('getNameByController')->with('ProjectsController')->andReturn('project'); return $controllerInstance; }
public function testLoadResourceShouldSetupABeforeFilterWhichPassesCallToControllerResource() { $controller = $this->controller; $controllerResourceClass = 'Efficiently\\AuthorityController\\ControllerResource'; App::offsetUnset($controllerResourceClass); App::bind($controllerResourceClass, function ($app, $parameters) use($controllerResourceClass, $controller) { $this->assertEquals($parameters, [$controller, null, ['foo' => 'bar']]); $controllerResource = m::mock($controllerResourceClass, $parameters); $controllerResource->shouldReceive('loadResource')->once(); return $controllerResource; }); $controller->shouldReceive('beforeFilter')->with(m::type('string'), ['only' => ['show', 'index']])->once()->andReturnUsing(function ($filterName, $options) use($controller) { $this->assertTrue(Event::hasListeners($this->filterPrefix . $filterName)); return Event::fire($this->filterPrefix . $filterName); }); $controller->loadResource(['foo' => 'bar', 'only' => ['show', 'index']]); }