Example #1
0
 /**
  * @test
  */
 public function testAppendRoute()
 {
     /* @var $tableItem \Scalr\Api\Rest\Routing\Item */
     $ret = $table = new Table();
     $route1 = (new Route('/api/users/v:apiversion/hotels', function () {
     }, ['apiversion' => '[\\d]+']))->setMethods([Request::METHOD_GET]);
     $route2 = (new Route('/api/users/v:apiversion/flights', function () {
     }, ['apiversion' => '[\\d]+']))->setMethods([Request::METHOD_POST]);
     $table->appendRoute($route1);
     $table->appendRoute($route2);
     //api level
     $this->assertEquals(1, $table->count());
     $this->assertSubClassOf('Traversable', $table);
     $this->assertInstanceOf('ArrayAccess', $table);
     $this->assertArrayHasKey('api', $table);
     $this->assertEmpty($table->hasRegexp());
     $this->assertEquals([], $table->getRegexpItemIterator()->getArrayCopy());
     $tableItem = $table['api'];
     $this->assertInstanceOf('Scalr\\Api\\Rest\\Routing\\Item', $tableItem);
     $this->assertInstanceOf('Scalr\\Api\\Rest\\Routing\\PathPart', $tableItem->getPathPart());
     $this->assertEquals('api', $tableItem->getPathPart()->value);
     $this->assertEmpty($tableItem->routes);
     //users level
     $table = $tableItem->getTable();
     $this->assertEquals(1, $table->count());
     $this->assertSubClassOf('Traversable', $table);
     $this->assertInstanceOf('ArrayAccess', $table);
     $this->assertArrayHasKey('users', $table);
     $this->assertEmpty($table->hasRegexp());
     $this->assertEquals([], $table->getRegexpItemIterator()->getArrayCopy());
     $tableItem = $table['users'];
     $this->assertInstanceOf('Scalr\\Api\\Rest\\Routing\\Item', $tableItem);
     $this->assertInstanceOf('Scalr\\Api\\Rest\\Routing\\PathPart', $tableItem->getPathPart());
     $this->assertEquals('users', $tableItem->getPathPart()->value);
     $this->assertEmpty($tableItem->routes);
     //v:apiversion level
     $table = $tableItem->getTable();
     $this->assertEquals(1, $table->count());
     $this->assertSubClassOf('Traversable', $table);
     $this->assertInstanceOf('ArrayAccess', $table);
     $iterator = $table->getIterator();
     list($uriPart, $tableItem) = each($iterator);
     $this->assertContains('^v(?<apiversion>', $uriPart);
     $this->assertNotEmpty($table->hasRegexp());
     $this->assertInstanceOf('Scalr\\Api\\Rest\\Routing\\Item', $tableItem);
     $this->assertInstanceOf('Scalr\\Api\\Rest\\Routing\\PathPart', $tableItem->getPathPart());
     $this->assertContains('^v(?<apiversion>', $tableItem->getPathPart()->value);
     $this->assertTrue(!$tableItem->getPathPart()->isString());
     $this->assertEmpty($tableItem->routes);
     //last level
     $table = $tableItem->getTable();
     $this->assertEquals(2, $table->count());
     $this->assertSubClassOf('Traversable', $table);
     $this->assertInstanceOf('ArrayAccess', $table);
     $this->assertArrayHasKey('hotels', $table);
     $this->assertArrayHasKey('flights', $table);
     $this->assertEmpty($table->hasRegexp());
     $this->assertEquals([], $table->getRegexpItemIterator()->getArrayCopy());
     $this->assertNotEmpty($table['hotels']->routes);
     $this->assertEquals($route1, $table['hotels']->routes[0]);
     $this->assertNotEmpty($table['flights']->routes);
     $this->assertEquals($route2, $table['flights']->routes[0]);
     return $ret;
 }