From 9b5d4c7bac96d3065155b501fab1fdd134237de2 Mon Sep 17 00:00:00 2001 From: taggon Date: Wed, 23 Nov 2011 06:47:07 +0000 Subject: [PATCH] Update test cases git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9862 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- tests/classes/context/ContextTest.php | 65 ++++++++++++++++++++++ tests/classes/security/SecurityTest.php | 6 ++ tests/classes/validator/ValidatorTest.php | 67 +++++++++++++++++++---- tests/classes/validator/condition.en.js | 8 +++ 4 files changed, 135 insertions(+), 11 deletions(-) create mode 100644 tests/classes/validator/condition.en.js diff --git a/tests/classes/context/ContextTest.php b/tests/classes/context/ContextTest.php index 213ed456e..70a61226c 100644 --- a/tests/classes/context/ContextTest.php +++ b/tests/classes/context/ContextTest.php @@ -13,6 +13,71 @@ class ContextTest extends PHPUnit_Framework_TestCase */ public function testGetInstance() { + $this->assertInstanceOf('Context', Context::getInstance()); + $this->assertSame(Context::getInstance(), Context::getInstance()); + } + + public function testSetGetVars() + { + $this->assertSame(Context::get('var1'), null); + Context::set('var1', 'val1'); + $this->assertSame(Context::get('var1'), 'val1'); + + Context::set('var2', 'val2'); + $this->assertSame(Context::get('var2'), 'val2'); + Context::set('var3', 'val3'); + $data = new stdClass; + $data->var1 = 'val1'; + $data->var2 = 'val2'; + $this->assertEquals(Context::gets('var1','var2'), $data); + $data->var3 = 'val3'; + $this->assertEquals(Context::getAll(), $data); + } + + public function testAddGetBodyClass() + { + $this->assertEquals(Context::getBodyClass(), ''); + Context::addBodyClass('red'); + $this->assertEquals(Context::getBodyClass(), ' class="red"'); + Context::addBodyClass('green'); + $this->assertEquals(Context::getBodyClass(), ' class="red green"'); + Context::addBodyClass('blue'); + $this->assertEquals(Context::getBodyClass(), ' class="red green blue"'); + + // remove duplicated class + Context::addBodyClass('red'); + $this->assertEquals(Context::getBodyClass(), ' class="red green blue"'); + } + + public function testRequsetResponseMethod() + { + $this->assertEquals(Context::getRequestMethod(), 'GET'); + + $_SERVER['REQUEST_METHOD'] = 'POST'; + Context::setRequestMethod(); + $this->assertEquals(Context::getRequestMethod(), 'POST'); + + $GLOBALS['HTTP_RAW_POST_DATA'] = 'abcde'; + Context::setRequestMethod(); + $this->assertEquals(Context::getRequestMethod(), 'XMLRPC'); + + $_SERVER['CONTENT_TYPE'] = 'application/json'; + Context::setRequestMethod(); + $this->assertEquals(Context::getRequestMethod(), 'JSON'); + + Context::setRequestMethod('POST'); + $this->assertEquals(Context::getRequestMethod(), 'POST'); + + $this->assertEquals(Context::getResponseMethod(), 'HTML'); + Context::setRequestMethod('JSON'); + $this->assertEquals(Context::getResponseMethod(), 'JSON'); + + Context::setResponseMethod('WRONG_TYPE'); + $this->assertEquals(Context::getResponseMethod(), 'HTML'); + Context::setResponseMethod('XMLRPC'); + $this->assertEquals(Context::getResponseMethod(), 'XMLRPC'); + Context::setResponseMethod('HTML'); + $this->assertEquals(Context::getResponseMethod(), 'HTML'); } } diff --git a/tests/classes/security/SecurityTest.php b/tests/classes/security/SecurityTest.php index e1980963b..cb865f3a4 100644 --- a/tests/classes/security/SecurityTest.php +++ b/tests/classes/security/SecurityTest.php @@ -116,6 +116,12 @@ class SecurityTest extends PHPUnit_Framework_TestCase $security = new Security($array); $returned = $security->encodeHTML('.'); $this->assertEquals($returned, array('Hello', 'World', '<b>Bold</b> is not bald')); + + // associative array + $array = array('first'=>'Hello', 'second'=>'World', '3rd'=>'Bold is not bald'); + $security = new Security($array); + $returned = $security->encodeHTML('first','3rd'); + $this->assertEquals($returned, array('first'=>'Hello', 'second'=>'World', '3rd'=>'<b>Bold</b> is not bald')); } } diff --git a/tests/classes/validator/ValidatorTest.php b/tests/classes/validator/ValidatorTest.php index 329649d98..af0aa861b 100644 --- a/tests/classes/validator/ValidatorTest.php +++ b/tests/classes/validator/ValidatorTest.php @@ -8,6 +8,15 @@ require_once _XE_PATH_.'classes/validator/Validator.class.php'; class ValidatorTest extends PHPUnit_Framework_TestCase { + protected function setUp() { + global $lang; + + $lang->filter = new stdClass; + $lang->filter->isnull = 'isnull'; + $lang->filter->outofrange = 'outofrange'; + $lang->filter->equalto = 'equalto'; + } + public function testRequired() { $vd = new Validator(); $vd->addFilter('userid', array('required'=>'true')); @@ -42,6 +51,26 @@ class ValidatorTest extends PHPUnit_Framework_TestCase $this->assertTrue( $vd->validate() ); } + public function testEqualTo() { + $vd = new Validator(); + $vd->addFilter('pass1', array('equalto'=>'pass2')); + + Context::set('pass1', 'MyPassword', true); + $this->assertFalse( $vd->validate() ); + Context::set('pass2', 'WorngPassword', true); + $this->assertFalse( $vd->validate() ); + Context::set('pass2', 'MyPassword', true); + $this->assertTrue( $vd->validate() ); + } + + public function testArrayTrim() { + $vd = new Validator(); + + $arr = array('red'=>'apple', 'yellow'=>'banana ', 'green'=>' papaya '); + $this->assertEquals($vd->arrayTrim($arr), array('red'=>'apple', 'yellow'=>'banana', 'green'=>'papaya')); + $this->assertEquals($vd->arrayTrim(' string '), 'string'); + } + public function testDefault() { $vd = new Validator(); $vd->addFilter('userid', array('default'=>'ididid')); @@ -60,17 +89,19 @@ class ValidatorTest extends PHPUnit_Framework_TestCase $this->assertEquals( $arr, array('userid'=>'ownid') ); if(defined('MOCK_CONTEXT')) { + Context::truncate(); + // context data - $mock_vars = array(); // empty context variables $vd->validate(); $this->assertEquals( 'ididid', Context::get('userid') ); - $vd->load(dirname(__FILE__).'/login.xml'); - - Context::set('userid', '', true); - $vd->validate(); - $this->assertEquals( 'idididid', Context::get('userid') ); } + + $vd->load(dirname(__FILE__).'/login.xml'); + + Context::set('userid', '', true); + $vd->validate(); + $this->assertEquals( 'idididid', Context::get('userid') ); } public function testLength() { @@ -85,11 +116,6 @@ class ValidatorTest extends PHPUnit_Framework_TestCase public function testCustomRule() { } - public function testJSCompile() { - $vd = new Validator(); - $vd->setCacheDir(dirname(__FILE__)); - } - public function testCondition() { $vd = new Validator(); $data = array('greeting1'=>'hello'); @@ -113,6 +139,7 @@ class ValidatorTest extends PHPUnit_Framework_TestCase } public function testConditionXml() { + $vd = new Validator(dirname(__FILE__).'/condition.xml'); $data = array('greeting1'=>'hello'); @@ -124,6 +151,24 @@ class ValidatorTest extends PHPUnit_Framework_TestCase $data['greeting2'] = 'World'; $this->assertTrue($vd->validate($data)); + + // javascript + $vd->setCacheDir(dirname(__FILE__)); + $js = $vd->getJsPath(); + $this->assertFileEquals($js, dirname(__FILE__).'/condition.en.js'); + } + + protected function tearDown() + { + // remove cache directory + $cache_dir = dirname(__FILE__).'/ruleset'; + if(is_dir($cache_dir)) { + $files = (array)glob($cache_dir.'/*'); + foreach($files as $file) { + unlink($file); + } + rmdir($cache_dir); + } } } diff --git a/tests/classes/validator/condition.en.js b/tests/classes/validator/condition.en.js new file mode 100644 index 000000000..dd24a54df --- /dev/null +++ b/tests/classes/validator/condition.en.js @@ -0,0 +1,8 @@ +(function($,v){ +v=xe.getApp('validator')[0];if(!v)return; + +v.cast('ADD_FILTER',['condition', {'greeting1':{required:true},'greeting2':{'if':[{test:'$greeting1 == \'Hello\'', attr:'required', value:'true'}]}}]); +v.cast('ADD_MESSAGE',['isnull','isnull']); +v.cast('ADD_MESSAGE',['outofrange','outofrange']); +v.cast('ADD_MESSAGE',['equalto','equalto']); +})(jQuery); \ No newline at end of file