* @link http://netmonsters.ru * @package Majestic * @subpackage UnitTests * @since 2011-10-26 * * Unit tests for Env class */ require_once dirname(__FILE__) . '/../../exception/ErrorHandler.php'; require_once dirname(__FILE__) . '/../../app/router/Router.php'; require_once dirname(__FILE__) . '/../../app/FrontController.php'; require_once dirname(__FILE__) . '/../../classes/Env.class.php'; class EnvTest extends PHPUnit_Framework_TestCase { /** * @runInSeparateProcess */ public function testGetRequestUri() { if(!defined('DEBUG')) { define('DEBUG', false); } $_SERVER['REQUEST_URI'] = '/test/index.php?id=1&test=wet&id_theme=512'; $this->assertSame('/test/index.php', Env::getRequestUri()); $_SERVER['REQUEST_URI'] = '/tes?t/index.php?id=1&test=wet&id_theme=512'; $this->assertSame('/test/index.php', Env::getRequestUri()); } /** * @runInSeparateProcess */ public function testTrimBaseRequestUri() { if(!defined('DEBUG')) { define('DEBUG', false); } $class = new ReflectionClass('Env'); $this->started = $class->getProperty('request'); $this->started->setAccessible(true); $this->started->setValue(null, array()); FrontController::getInstance()->setBaseUrl('/test'); $_SERVER['REQUEST_URI'] = '/test/index.php?id=1&test=wet&id_theme=512'; $this->assertSame('/index.php', Env::getRequestUri(true)); } public function testServer() { $this->assertSame($_SERVER, Env::Server()); $this->assertSame($_SERVER['DOCUMENT_ROOT'], Env::Server('DOCUMENT_ROOT')); $this->assertNotEmpty(Env::Server()); $this->assertArrayHasKey('DOCUMENT_ROOT', Env::Server()); } public function testCookie() { $this->assertTrue(Env::setCookie('var', 'value', 20)); $_COOKIE['var'] = 'value'; $this->assertSame(array('var' => 'value'), Env::Cookie()); $this->assertSame('value', Env::Cookie('var')); $this->assertSame('default', Env::Cookie('new', 'default')); } public function testPost() { $_POST['var'] = 'value'; $this->assertSame(array('var' => 'value'), Env::Post()); $this->assertSame('value', Env::Post('var')); $this->assertSame('default', Env::Post('new', 'default')); } public function testGet() { $_GET['var'] = 'value'; $this->assertSame(array('var' => 'value'), Env::Get()); $this->assertSame('value', Env::Get('var')); $this->assertSame('default', Env::Get('new', 'default')); } public function testFiles() { $this->assertSame('default', Env::Files('file.txt', 'default')); $this->assertSame(array(), Env::Files()); } public function testUnsetFiles() { unset($_FILES); $this->assertSame('default', Env::Files('file.txt', 'default')); $_FILES['file'] = array('name' => 'files', 'path' => '/'); $this->assertSame(array('name' => 'files', 'path' => '/'), Env::Files('file', 'default')); $this->assertSame('files', Env::Files('file', 'empty', 'name')); } public function testParams() { Env::setParams(array('name' => 'tony', 'age' => 21)); $this->assertSame(array('name' => 'tony', 'age' => 21), Env::getParam()); Env::setParams(array('sex' => 'male')); $this->assertSame(array('name' => 'tony', 'age' => 21, 'sex' => 'male'), Env::getParam()); $this->assertSame('tony', Env::getParam('name')); $this->assertSame('default', Env::getParam('height', 'default')); Env::setParam('surname', 'grebnev'); $this->assertSame('grebnev', Env::getParam('surname')); } public function tearDown() { $env = new ReflectionClass('Env'); $params = $env->getProperty('params'); $params->setAccessible(true); $params->setValue('Env', array()); } }