2
0

TestAbstract.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. require_once 'PHPUnit/Framework/TestCase.php';
  3. require_once 'Zend/Acl.php';
  4. require_once 'Zend/Acl/Resource.php';
  5. require_once 'Zend/Acl/Role.php';
  6. require_once 'Zend/Controller/Front.php';
  7. require_once 'Zend/Config/Xml.php';
  8. require_once 'Zend/Registry.php';
  9. require_once 'Zend/Translate.php';
  10. require_once 'Zend/View.php';
  11. require_once 'Zend/Navigation.php';
  12. /**
  13. * Base class for navigation view helper tests
  14. *
  15. */
  16. abstract class Zend_View_Helper_Navigation_TestAbstract
  17. extends PHPUnit_Framework_TestCase
  18. {
  19. const REGISTRY_KEY = 'Zend_Navigation';
  20. /**
  21. * Path to files needed for test
  22. *
  23. * @var string
  24. */
  25. protected $_files;
  26. /**
  27. * Class name for view helper to test
  28. *
  29. * @var string
  30. */
  31. protected $_helperName;
  32. /**
  33. * View helper
  34. *
  35. * @var Zend_View_Helper_Navigation_HelperAbstract
  36. */
  37. protected $_helper;
  38. /**
  39. * The first container in the config file (_files/navigation.xml)
  40. *
  41. * @var Zend_Navigation
  42. */
  43. protected $_nav1;
  44. /**
  45. * The second container in the config file (_files/navigation.xml)
  46. *
  47. * @var Zend_Navigation
  48. */
  49. protected $_nav2;
  50. private $_oldControllerDir;
  51. /**
  52. * Prepares the environment before running a test
  53. *
  54. */
  55. protected function setUp()
  56. {
  57. $cwd = dirname(__FILE__);
  58. // read navigation config
  59. $this->_files = $cwd . '/_files';
  60. $config = new Zend_Config_Xml($this->_files . '/navigation.xml');
  61. // setup containers from config
  62. $this->_nav1 = new Zend_Navigation($config->get('nav_test1'));
  63. $this->_nav2 = new Zend_Navigation($config->get('nav_test2'));
  64. // setup view
  65. $view = new Zend_View();
  66. $view->setScriptPath($cwd . '/_files/mvc/views');
  67. // setup front
  68. $front = Zend_Controller_Front::getInstance();
  69. $this->_oldControllerDir = $front->getControllerDirectory('test');
  70. $front->setControllerDirectory($cwd . '/_files/mvc/controllers');
  71. // create helper
  72. $this->_helper = new $this->_helperName();
  73. $this->_helper->setView($view);
  74. // set nav1 in helper as default
  75. $this->_helper->setContainer($this->_nav1);
  76. }
  77. /**
  78. * Cleans up the environment after running a test
  79. *
  80. */
  81. protected function tearDown()
  82. {
  83. $front = Zend_Controller_Front::getInstance();
  84. if ($this->_oldControllerDir) {
  85. $front->setControllerDirectory($this->_oldControllerDir, 'test');
  86. } else {
  87. $front->removeControllerDirectory('test');
  88. }
  89. }
  90. /**
  91. * Returns the contens of the exepcted $file
  92. * @param string $file
  93. * @return string
  94. */
  95. protected function _getExpected($file)
  96. {
  97. return file_get_contents($this->_files . '/expected/' . $file);
  98. }
  99. /**
  100. * Sets up ACL
  101. *
  102. * @return Zend_Acl
  103. */
  104. protected function _getAcl()
  105. {
  106. $acl = new Zend_Acl();
  107. $acl->addRole(new Zend_Acl_Role('guest'));
  108. $acl->addRole(new Zend_Acl_Role('member'), 'guest');
  109. $acl->addRole(new Zend_Acl_Role('admin'), 'member');
  110. $acl->addRole(new Zend_Acl_Role('special'), 'member');
  111. $acl->add(new Zend_Acl_Resource('guest_foo'));
  112. $acl->add(new Zend_Acl_Resource('member_foo'), 'guest_foo');
  113. $acl->add(new Zend_Acl_Resource('admin_foo', 'member_foo'));
  114. $acl->add(new Zend_Acl_Resource('special_foo'), 'member_foo');
  115. $acl->allow('guest', 'guest_foo');
  116. $acl->allow('member', 'member_foo');
  117. $acl->allow('admin', 'admin_foo');
  118. $acl->allow('special', 'special_foo');
  119. $acl->allow('special', 'admin_foo', 'read');
  120. return array('acl' => $acl, 'role' => 'special');
  121. }
  122. /**
  123. * Returns translator
  124. *
  125. * @return Zend_Translate
  126. */
  127. protected function _getTranslator()
  128. {
  129. $data = array(
  130. 'Page 1' => 'Side 1',
  131. 'Page 1.1' => 'Side 1.1',
  132. 'Page 2' => 'Side 2',
  133. 'Page 2.3' => 'Side 2.3',
  134. 'Page 2.3.3.1' => 'Side 2.3.3.1',
  135. 'Home' => 'Hjem',
  136. 'Go home' => 'Gå hjem'
  137. );
  138. return new Zend_Translate('array', $data, 'nb_NO');
  139. }
  140. }