* @link http://netmonsters.ru * @package Majestic * @subpackage UnitTests * @since 2011-10-31 * * Unit tests for Router class */ require_once dirname(__FILE__) . '/../../../app/router/Route.php'; class RouteTest extends PHPUnit_Framework_TestCase { public function testConstructNoParams() { $route = new Route('index', 'user'); $this->assertSame('userAction', $route->getAction()); $this->assertSame('Layout', $route->getLayout()); $this->assertEmpty($route->getParams()); $this->assertAttributeEquals('index', 'route', $route); } public function testConstructWithParams() { $route = new Route('index', 'user', array('name' => 'tony', 'role' => 'user')); $this->assertArrayHasKey('role', $route->getParams()); $this->assertSame(array('name' => 'tony', 'role' => 'user'), $route->getParams()); } public function testMatchDiffCount() { $route = new Route('user/account/id/142', 'user', array('name' => 'tony', 'role' => 'user')); $this->assertFalse($route->match(array('user', 'account'))); } /** * @TODO: Route::match() - need to trim left-right slashes */ public function testMatchDiffParts() { $route = new Route('user/account', 'user'); $this->assertFalse($route->match(array('user', 'login'))); } public function testMatchVariable() { $route = new Route('user/account/:id', 'user'); $this->assertTrue($route->match(array('user', 'account', '142'))); $this->assertSame(array('id' => '142'), $route->getParams()); } public function testMatchDiffPregParts() { $route = new Route('user/account/(?value)', 'user'); $this->assertFalse($route->match(array('user', 'account', 'wrong'))); $this->assertSame(0, count($route->getParams())); } public function testMatchPregPasses() { $route = new Route('user/account/(?[a-z]+)', 'user'); $this->assertTrue($route->match(array('user', 'account', 'value'))); $this->assertSame(array('key' => 'value'), $route->getParams()); $this->assertSame(1, count($route->getParams())); } /** * @TODO Need check empty parameters from constructor Route */ public function testMatchEmptyRequest() { $route = new Route('', 'user', array('name' => 'tony', 'role' => 'user')); $this->setExpectedException('PHPUnit_Framework_Error'); $route->match(''); } }