| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com) 7 * @license LGPL http://www.gnu.org/copyleft/lesser.html 8 */ 9 lmb_require('limb/web_app/src/controller/lmbDynamicCommandController.class.php'); 10 lmb_require('limb/view/src/wact/lmbWactTemplateLocator.class.php'); 11 12 Mock :: generate('lmbWactTemplateLocator', 'MockWactTemplateLocator'); 13 14 class TestingDynamicCommandController extends lmbDynamicCommandController 15 { 16 protected $name = 'foo'; 17 } 18 19 class lmbDynamicCommandControllerTest extends UnitTestCase 20 { 21 protected $toolkit; 22 23 function setUp() 24 { 25 $this->toolkit = lmbToolkit :: save(); 26 } 27 28 function tearDown() 29 { 30 lmbToolkit :: restore(); 31 } 32 33 function testReturnCommandHandleIfCommandClassFileFound() 34 { 35 $pkg_dir = $this->_createPackageWithCommand('foo-pkg', 'foo', 'FooBarCommand'); 36 37 set_include_path($pkg_dir . PATH_SEPARATOR . get_include_path()); 38 39 $controller = new TestingDynamicCommandController(); 40 $controller->setCurrentAction('bar'); 41 $command = $controller->getActionCommand(); 42 $this->assertEqual($command->getClass(), 'FooBarCommand'); 43 44 lmbFs :: rm($pkg_dir); 45 } 46 47 function testReturnActionWithTemplateIfCommanClassFileNotFound() 48 { 49 $mock_locator = new MockWactTemplateLocator(); 50 $mock_locator->expectOnce('locateSourceTemplate', array('foo/bar.html')); 51 $mock_locator->setReturnValue('locateSourceTemplate', true, array('foo/bar.html')); 52 $this->toolkit->setWactLocator($mock_locator); 53 54 $controller = new TestingDynamicCommandController(); 55 $controller->setCurrentAction('bar'); 56 $command = $controller->getActionCommand(); 57 $this->assertEqual($command->getClass(), 'lmbActionCommand'); 58 $this->assertEqual($command->getTemplatePath(), 'foo/bar.html'); 59 } 60 61 function testPerformActionInCaseTemplateOnlyWasFound() 62 { 63 $mock_locator = new MockWactTemplateLocator(); 64 $mock_locator->expectOnce('locateSourceTemplate', array('foo/bar.html')); 65 $mock_locator->setReturnValue('locateSourceTemplate', true, array('foo/bar.html')); 66 $this->toolkit->setWactLocator($mock_locator); 67 68 $controller = new TestingDynamicCommandController(); 69 $controller->setCurrentAction('bar'); 70 $command = $controller->performAction(); 71 $this->assertEqual($this->toolkit->getView()->getTemplate(), 'foo/bar.html'); 72 } 73 74 function testThrowsExceptionIfBothCommandAndTemplateNotFound() 75 { 76 $controller = new TestingDynamicCommandController(); 77 $controller->setCurrentAction('bar'); 78 try 79 { 80 $command = $controller->getActionCommand(); 81 $this->assertTrue(false); 82 } 83 catch(lmbException $e){} 84 } 85 86 function testActionExistsReturnTrueIfCommandFound() 87 { 88 $pkg_dir = $this->_createPackageWithCommand('foo-pkg', 'foo', 'FooBarCommand'); 89 90 set_include_path($pkg_dir . PATH_SEPARATOR . get_include_path()); 91 92 $controller = new TestingDynamicCommandController(); 93 $this->assertTrue($controller->actionExists('bar')); 94 $this->assertFalse($controller->actionExists('no_such_action')); 95 96 lmbFs :: rm($pkg_dir); 97 } 98 99 function testActionExistsReturnTrueIfTemplateFound() 100 { 101 $mock_locator = new MockWactTemplateLocator(); 102 $mock_locator->expectCallCount('locateSourceTemplate', 2); 103 $mock_locator->setReturnValue('locateSourceTemplate', true, array('foo/bar.html')); 104 $mock_locator->setReturnValue('locateSourceTemplate', false, array('foo/no_such_action.html')); 105 $this->toolkit->setWactLocator($mock_locator); 106 107 $controller = new TestingDynamicCommandController(); 108 $this->assertTrue($controller->actionExists('bar')); 109 $this->assertFalse($controller->actionExists('no_such_action')); 110 111 } 112 113 protected function _createPackageWithCommand($package, $controller, $command) 114 { 115 $dir = LIMB_VAR_DIR . '/pkg-tmp/' . $package; 116 lmbFs :: mkdir("$dir/src/command/$controller"); 117 118 file_put_contents("$dir/src/command/$controller/$command.class.php", "<?php class $command{} ?>"); 119 120 return $dir; 121 } 122 } 123 124 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Aug 30 04:38:32 2008 | Cross-referenced by PHPXref 0.7 |