lithium\tests\cases\net\http\RouterTest::testStackedContinuationRoutes PHP Метод

testStackedContinuationRoutes() публичный Метод

Tests that multiple continuation routes can be applied to the same URL.
    public function testStackedContinuationRoutes()
    {
        Router::connect('/admin/{:args}', array('admin' => true), array('continue' => true));
        Router::connect('/{:locale:en|de|it|jp}/{:args}', array(), array('continue' => true));
        Router::connect('/{:controller}/{:action}/{:id:[0-9]+}', array('id' => null));
        $request = new Request(array('url' => '/en/foo/bar/5'));
        $expected = array('controller' => 'Foo', 'action' => 'bar', 'id' => '5', 'locale' => 'en');
        $this->assertEqual($expected, Router::process($request)->params);
        $request = new Request(array('url' => '/admin/foo/bar/5'));
        $expected = array('controller' => 'Foo', 'action' => 'bar', 'id' => '5', 'admin' => true);
        $this->assertEqual($expected, Router::process($request)->params);
        $request = new Request(array('url' => '/admin/de/foo/bar/5'));
        $expected = array('controller' => 'Foo', 'action' => 'bar', 'id' => '5', 'locale' => 'de', 'admin' => true);
        $this->assertEqual($expected, Router::process($request)->params);
        $request = new Request(array('url' => '/en/admin/foo/bar/5'));
        $this->assertEmpty(Router::process($request)->params);
        $result = Router::match(array('Foo::bar', 'id' => 5));
        $this->assertIdentical('/foo/bar/5', $result);
        $result = Router::match(array('Foo::bar', 'id' => 5, 'admin' => true));
        $this->assertIdentical('/admin/foo/bar/5', $result);
        $result = Router::match(array('Foo::bar', 'id' => 5, 'admin' => true, 'locale' => 'jp'));
        $this->assertIdentical('/admin/jp/foo/bar/5', $result);
    }
RouterTest