92 lines
2.9 KiB
PHP
92 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Slim Framework (http://slimframework.com)
|
|
*
|
|
* @link https://github.com/codeguy/Slim
|
|
* @copyright Copyright (c) 2011-2015 Josh Lockhart
|
|
* @license https://github.com/codeguy/Slim/blob/master/LICENSE (MIT License)
|
|
*/
|
|
namespace Slim\Tests\Views;
|
|
|
|
use Slim\Http\Uri;
|
|
use Slim\Router;
|
|
use Slim\Views\TwigExtension;
|
|
|
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
|
|
|
class TwigExtensionTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
public function isCurrentPathProvider()
|
|
{
|
|
$router = new Router();
|
|
|
|
$router->map(['GET'], '/hello/{name}', null)->setName('foo');
|
|
$uri = Uri::createFromString('http://example.com/hello/world');
|
|
|
|
$uri2 = $uri->withBasePath('bar');
|
|
$router->map(['GET'], '/bar/hello/{name}', null)->setName('bar');
|
|
|
|
return [
|
|
[$router, $uri, 'foo', ['name' => 'world'], true],
|
|
[$router, $uri2, 'bar', ['name' => 'world'], true],
|
|
[$router, $uri, 'bar', ['name' => 'world'], false],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider isCurrentPathProvider
|
|
*/
|
|
public function testIsCurrentPath($router, $uri, $name, $data, $expected)
|
|
{
|
|
$extension = new TwigExtension($router, $uri);
|
|
$result = $extension->isCurrentPath($name, $data);
|
|
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
|
|
public function currentPathProvider()
|
|
{
|
|
$router = new Router();
|
|
|
|
$router->map(['GET'], '/hello/{name}', null)->setName('foo');
|
|
$uri = Uri::createFromString('http://example.com/hello/world?a=b');
|
|
|
|
$uri2 = $uri->withBasePath('bar');
|
|
$router->map(['GET'], '/bar/hello/{name}', null)->setName('bar');
|
|
|
|
return [
|
|
[$router, '/foo', false, '/foo'],
|
|
[$router, '/foo', true, '/foo'], // string based URI doesn't care about $withQueryString
|
|
[$router, $uri, false, '/hello/world'],
|
|
[$router, $uri, true, '/hello/world?a=b'],
|
|
[$router, $uri2, false, '/bar/hello/world'],
|
|
[$router, $uri2, true, '/bar/hello/world?a=b'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @dataProvider currentPathProvider
|
|
*/
|
|
public function testCurrentPath($router, $uri, $withQueryString, $expected)
|
|
{
|
|
$extension = new TwigExtension($router, $uri);
|
|
$result = $extension->currentPath($withQueryString);
|
|
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
|
|
public function testFullUrlFor()
|
|
{
|
|
$router = new Router();
|
|
$router->setBasePath('/app');
|
|
$router->map(['GET'], '/activate/{token}', null)->setName('activate');
|
|
$uri = Uri::createFromString('http://example.com/app/hello/world?a=b');
|
|
|
|
$extension = new TwigExtension($router, $uri);
|
|
$result = $extension->fullUrlFor('activate', ['token' => 'foo']);
|
|
|
|
$expected = 'http://example.com/app/activate/foo';
|
|
$this->assertEquals($expected, $result);
|
|
}
|
|
}
|