[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/web_app/tests/cases/plain/controller/ -> lmbDynamicCommandControllerTest.class.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 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  ?>


Generated: Sat Aug 30 04:38:32 2008 Cross-referenced by PHPXref 0.7