public function testBuild() { $pattern = new Pattern('/base/path/:arg1/:arg2'); $pattern->setPlaceholder('arg1', Pattern::ALPHA_NUM); $pattern->setPlaceholder('arg2', Pattern::DIGITS); $this->assertEquals('/base/path/id/123', $pattern->build(['arg1' => 'id', 'arg2' => 123])); }
public function testIsValidPattern() { $pattern = new Pattern('/test/:id'); $pattern->setPlaceholder('id', Pattern::DIGITS); $route = new HttpControllerRoute($pattern, $this->createController()); $this->assertTrue($route->isValid($this->createRequest('GET', '/test/123'))); $this->assertFalse($route->isValid($this->createRequest('GET', '/dasdas'))); $this->assertTrue($route->isValid($this->createRequest('GET', '/test/1123/test'))); $this->assertFalse($route->isValid($this->createRequest('GET', '/test/1123/test2'))); }
public function testExecute() { $pattern = new Pattern('/base/path/:arg1/:arg2'); $pattern->setPlaceholder('arg1', Pattern::ALPHA_NUM); $pattern->setPlaceholder('arg2', Pattern::DIGITS); $outerMatches = null; $outerRequest = null; $request = $this->createRequest('POST', '/base/path/id/123'); $route = new Route($pattern, function ($matches, Request $request) use(&$outerRequest, &$outerMatches) { $outerMatches = $matches; $outerRequest = $request; }, Route::METHOD_POST); $route->execute($request); $this->assertSame($request, $outerRequest); $this->assertEquals([0 => '/base/path/id/123', 1 => 'id', 'arg1' => 'id', 2 => '123', 'arg2' => '123'], $outerMatches); }
public function execute(Request $request) { return call_user_func_array($this->callback, array($this->pattern->matches($request->getUri(false)), $request)); }