Skip to content

Commit

Permalink
Add tests for match().
Browse files Browse the repository at this point in the history
  • Loading branch information
markstory committed Jun 25, 2014
1 parent 66314da commit 655bbe9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/Routing/ScopedRouteCollection.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -497,16 +497,17 @@ public function parse($url) {
list($url, $queryParameters) = explode('?', $url, 2); list($url, $queryParameters) = explode('?', $url, 2);
parse_str($queryParameters, $queryParameters); parse_str($queryParameters, $queryParameters);
} }
$out = array(); $out = [];
for ($i = 0, $len = count($this->_routes); $i < $len; $i++) { for ($i = 0, $len = count($this->_routes); $i < $len; $i++) {
$r = $this->_routes[$i]->parse($url); $r = $this->_routes[$i]->parse($url);
if ($r !== false && $queryParameters) { if ($r === false) {
$r['?'] = $queryParameters; continue;
return $r;
} }
if ($r !== false) { if ($queryParameters) {
$r['?'] = $queryParameters;
return $r; return $r;
} }
return $r;
} }
return $out; return $out;
} }
Expand All @@ -518,7 +519,7 @@ public function parse($url) {
* @param array $url The url to match. * @param array $url The url to match.
* @param array $context The request context to use. Contains _base, _port, * @param array $context The request context to use. Contains _base, _port,
* _host, and _scheme keys. * _host, and _scheme keys.
* @return void * @return string|false Either a string on match, or false on failure.
*/ */
public function match($url, $context) { public function match($url, $context) {
foreach ($this->_getNames($url) as $name) { foreach ($this->_getNames($url) as $name) {
Expand All @@ -532,7 +533,7 @@ public function match($url, $context) {
} }
} }
} }
return '/'; return false;
} }


/** /**
Expand Down
27 changes: 27 additions & 0 deletions tests/TestCase/Routing/ScopedRouteCollectionTest.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -261,4 +261,31 @@ public function testParse() {
$this->assertEquals($expected, $result); $this->assertEquals($expected, $result);
} }


/**
* Test matching routes.
*
* @return void
*/
public function testMatch() {
$context = [
'_base' => '/',
'_scheme' => 'http',
'_host' => 'example.org',
];
$routes = new ScopedRouteCollection('/b');
$routes->connect('/', ['controller' => 'Articles']);
$routes->connect('/:id', ['controller' => 'Articles', 'action' => 'view']);

$result = $routes->match(['plugin' => null, 'controller' => 'Articles', 'action' => 'index'], $context);
$this->assertEquals('b', $result);

$result = $routes->match(
['id' => 'thing', 'plugin' => null, 'controller' => 'Articles', 'action' => 'view'],
$context);
$this->assertEquals('b/thing', $result);

$result = $routes->match(['plugin' => null, 'controller' => 'Articles', 'action' => 'add'], $context);
$this->assertFalse($result, 'No matches');
}

} }

0 comments on commit 655bbe9

Please sign in to comment.