<?php
class Http_ViewTest extends UnitTestCase {
function setUp() {
}
function TearDown() {
}
function testHttp_ViewDefault() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$this->assertEqual('', $view->render());
$this->assertEqual(array(), $view->getHeaders());
$this->assertEqual(null, $view->getCookie('foo'));
$this->assertEqual('', $view->getRedirect());
$this->assertEqual('', $view->getContent());
$this->assertEqual(null, $view->getTemplate());
$this->assertEqual(null, $view->get('foo'));
$this->assertEqual('', $view->getErrorMsg());
$this->assertEqual(array(), $view->getErrorMsg(''));
}
function testHttp_ViewHeaders() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
// set a header
$view->setHeader('Foo', 'Bar');
$this->assertEqual(array(), array_diff_assoc(array('Foo'=>array(0=>'Bar')), $view->getHeaders()));
// if no data it will not add the header
$view->setHeader(array('Bar' => 'Baz'));
$this->assertEqual(array(), array_diff_assoc(array('Foo'=>array(0=>'Bar')), $view->getHeaders()));
// set another header
$view->setHeader('Bar', 'Baz');
$this->assertEqual(array(), array_diff_assoc(array('Foo'=>array(0=>'Bar'),'Bar'=>array(0=>'Baz')), $view->getHeaders()));
// null value removes header
$view->setHeader('Bar');
$this->assertEqual(array(), array_diff_assoc(array('Foo'=>array(0=>'Bar')), $view->getHeaders()));
}
function testHttp_ViewCookie() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$view->setCookie('Foo', 'Bar', 'Baz');
$this->assertEqual(array(), array_diff_assoc(array('Foo', 'Bar', 'Baz'), $view->getCookie('Foo')));
}
function testHttp_ViewRedirect() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$url = 'http://foobar.com';
$view->setRedirect($url);
$this->assertEqual($url, $view->getRedirect());
}
function testHttp_ViewContent() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$str = '<p>Some HTML</p>';
$view->setContent($str);
$this->assertEqual($str, $view->getContent());
$this->assertEqual($str, $view->render());
}
function testHttp_ViewTemplate() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$file = 'foobar.php';
$view->setTemplate($file);
$view->setTemplatePath(dirname(__FILE__) . '/templates');
$this->assertEqual($file, $view->getTemplate());
$view->set('foo', 'Foo. ');
$view->set('bar', 'Bar. ');
$this->assertEqual('Foo. Bar. ', $view->render());
}
function testHttp_ViewRenderer() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$template = new A_Template_Include(dirname(__FILE__) . '/templates/foobar.php');
$this->assertFalse($view->hasRenderer());
$view->setRenderer($template);
$this->assertTrue($view->hasRenderer());
$view->set('foo', 'Foo. ');
$view->set('bar', 'Bar. ');
$this->assertEqual('Foo. Bar. ', $view->render());
}
function testHttp_ViewGetSetHas() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$str = 'foobar';
$view->set('foo', $str);
$this->assertEqual($str, $view->get('foo'));
$this->assertTrue($view->has('foo'));
$this->assertFalse($view->has('bar'));
}
function testHttp_ViewEscape() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$str = '<hr style="foo"> &';
$str_escaped = '<hr style="foo"> &';
$this->assertEqual($str_escaped, $view->escape($str));
}
function testHttp_ViewPartial() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$file = 'foobar.php';
$view->setTemplatePath(dirname(__FILE__) . '/templates');
$str = '<hr style="foo"> &';
$str_escaped = '<hr style="foo"> &';
$view->set('foo', 'Foo. ');
$view->set('bar', 'Bar. ');
$this->assertEqual('Foo. Bar. ', $view->partial($file));
$view->set('foo', 'X');
$view->set('bar', 'Y');
$this->assertEqual('Foo. Bar. ', $view->partial($file, array('foo'=>'Foo. ', 'bar'=>'Bar. ')));
$this->assertEqual('X', $view->get('foo'));
$this->assertEqual('Y', $view->get('bar'));
$view->set('foo', '');
$view->set('bar', '');
$this->assertEqual($str_escaped.$str, $view->partial($file, array('foo'=>$str, 'bar'=>$str), array('foo')));
}
function testHttp_ViewPartialLoop() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$file = 'foobar.php';
$view->setTemplatePath(dirname(__FILE__) . '/templates');
$data = array(
array('foo'=>'One, ', 'bar'=>'Two. '),
array('foo'=>'Three, ', 'bar'=>'Four. '),
array('foo'=>'Five, ', 'bar'=>'Six. '),
);
$this->assertEqual('One, Two. Three, Four. Five, Six. ', $view->partialLoop($file, $data));
$data = array('One, ', 'Two, ', 'Three. ');
$view->set('bar', ''); // so so $foo in template is null
$this->assertEqual('One, Two, Three. ', $view->partialLoop($file, 'foo', $data));
}
function testHttp_ViewSetPartial() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$file = 'foobar.php';
$view->setTemplate($file);
$view->setTemplatePath(dirname(__FILE__) . '/templates');
$view->setPartial('bar', $file, array('foo'=>'Bar. ', 'bar'=>'Baz. '));
$view->set('foo', 'Foo. ');
$this->assertEqual('Foo. Bar. Baz. ', $view->render());
$data = array('One, ', 'Two, ', 'Three. ');
$view->set('foo', '');
$view->set('bar', '');
$view->setPartialLoop('foo', $file, 'bar', $data);
$this->assertEqual('One, Two, Three. ', $view->render());
}
function testHttp_ViewSetEscape() {
$locator = new A_Locator();
$view = new A_Http_View($locator);
$str = '<hr style="foo"> &';
$str_escaped = '<hr style="foo"> &';
$file = 'foobar.php';
$view->setTemplate($file);
$view->setTemplatePath(dirname(__FILE__) . '/templates');
$view->setEscape('foo', $str);
$view->set('bar', '');
$this->assertEqual($str_escaped, $view->render());
$view->escapeField('foo');
$view->set('foo', $str);
$view->set('bar', '');
$this->assertEqual($str_escaped, $view->render());
$view->escapeField(array('foo', 'bar'));
$view->set('foo', $str);
$view->set('bar', $str);
$this->assertEqual($str_escaped.$str_escaped, $view->render());
}
}
|