PHPonTraxTest
[ class tree: PHPonTraxTest ] [ index: PHPonTraxTest ] [ all elements ]

Source for file TraxGeneratorTest.php

Documentation is available at TraxGeneratorTest.php

  1. <?php
  2. /**
  3. * File for the TraxGeneratorTest class
  4. *
  5. * (PHP 5)
  6. *
  7. * @package PHPonTraxTest
  8. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  9. * @copyright (c) Walter O. Haas 2006
  10. * @version $Id: TraxGeneratorTest.php 198 2006-04-20 16:20:30Z haas $
  11. * @author Walt Haas <haas@xmission.com>
  12. */
  13.  
  14. echo "testing TraxGenerator\n";
  15. require_once 'testenv.php';
  16. require_once 'inflector.php';
  17.  
  18. // Call TraxGeneratorTest::main() if this source file is executed directly.
  19. if (!defined("PHPUnit2_MAIN_METHOD")) {
  20. define("PHPUnit2_MAIN_METHOD", "TraxGeneratorTest::main");
  21. }
  22.  
  23. require_once "PHPUnit2/Framework/TestCase.php";
  24. require_once "PHPUnit2/Framework/TestSuite.php";
  25.  
  26. // You may remove the following line when all tests have been implemented.
  27. require_once "PHPUnit2/Framework/IncompleteTestError.php";
  28.  
  29. static $tmpdir; // temporary directory
  30.  
  31. // Create a temporary directory to receive generated files
  32. // @todo <b>FIXME:</b> Is this platform independent?
  33. do {
  34. $tmpdir = '/tmp/traxtest' . mt_rand(0, 99999999) . '/';
  35. } while (!mkdir($tmpdir,0700));
  36. define('TRAX_ROOT', $tmpdir);
  37.  
  38. define('TRAX_MODE', 'test');
  39.  
  40. // Directories where Trax stores things
  41. $GLOBALS['TRAX_INCLUDES'] = array('controllers' => 'controllers',
  42. 'helpers' => 'helpers',
  43. 'models' => 'models',
  44. 'views' => 'views',
  45. 'layouts' => 'views/layouts');
  46.  
  47. // Set up information that normally comes from database.ini
  48. $GLOBALS['TRAX_DB_SETTINGS']['test']
  49. = array('phptype' => 'mysql',
  50. 'database' => 'test_development',
  51. 'hostspec' => 'localhost',
  52. 'username' => 'root',
  53. 'password' => '',
  54. 'persistent' => true);
  55.  
  56. // Create a DB to test with
  57. @ini_set('include_path','./mockDB:'.ini_get('include_path'));
  58. require_once "DB.php";
  59. $db =& DB::Connect($GLOBALS['TRAX_DB_SETTINGS']['test'],
  60. array('persistent' => true));
  61. if (PEAR::isError($db) || is_a($db, 'DB_Error')) {
  62. PHPUnit2_Framework_Assert::fail("Unable to create database");
  63. }
  64. $db->setFetchMode(DB_FETCHMODE_ASSOC);
  65. $GLOBALS['ACTIVE_RECORD_DB'] = $db;
  66.  
  67. define('TRAX_VIEWS_EXTENTION', 'phtml');
  68.  
  69. require_once "trax_generator.php";
  70. require_once "action_view/helpers.php";
  71. require_once "action_view/helpers/active_record_helper.php";
  72. require_once "active_record.php";
  73. require_once "trax_exceptions.php";
  74.  
  75. /**
  76. * When a class is referenced, get it from app/models
  77. */
  78. function __autoload($class_name) {
  79. $file = Inflector::underscore($class_name).".php";
  80. $file_org = $class_name.".php";
  81.  
  82. if(file_exists(TRAX_ROOT.$GLOBALS['TRAX_INCLUDES']['models']."/$file")) {
  83. # Include model classes
  84. include_once(TRAX_ROOT.$GLOBALS['TRAX_INCLUDES']['models']."/$file");
  85. } elseif(file_exists(TRAX_LIB_ROOT."/$file")) {
  86. # Include extra controller classes
  87. include_once(TRAX_LIB_ROOT."/$file");
  88. }
  89. }
  90.  
  91. /**
  92. * Test class for TraxGenerator.
  93. * Generated by PHPUnit2_Util_Skeleton on 2006-03-01 at 15:34:17.
  94. */
  95. class TraxGeneratorTest extends PHPUnit2_Framework_TestCase {
  96.  
  97.  
  98. /**
  99. * Runs the test methods of this class.
  100. *
  101. * @access public
  102. * @static
  103. */
  104. public static function main() {
  105. require_once "PHPUnit2/TextUI/TestRunner.php";
  106.  
  107. $suite = new PHPUnit2_Framework_TestSuite("TraxGeneratorTest");
  108. $result = PHPUnit2_TextUI_TestRunner::run($suite);
  109. }
  110.  
  111. /**
  112. * Set up dummy Trax work area
  113. *
  114. * Create a dummy Trax work area in the temporary directory
  115. * @access protected
  116. */
  117. protected function setUp() {
  118.  
  119. // Create empty directories representing the Trax work area
  120. mkdir(TRAX_ROOT.'controllers',0700,true);
  121. mkdir(TRAX_ROOT.'helpers',0700,true);
  122. mkdir(TRAX_ROOT.'models',0700,true);
  123. mkdir(TRAX_ROOT.'views/layouts',0700,true);
  124. }
  125.  
  126. /**
  127. * Remove the dummy Trax work area
  128. *
  129. * @access protected
  130. */
  131. protected function tearDown() {
  132.  
  133. // Empty the temporary directory
  134. $this->rmrfdir(TRAX_ROOT);
  135. }
  136.  
  137. /**
  138. * Remove all the contents of a directory
  139. * @param string $dir Name of directory to empty. Ends with '/'
  140. */
  141. private function rmrfdir($dir) {
  142.  
  143. // Open the directory
  144. $dir_h = opendir($dir);
  145.  
  146. if (!$dir_h) {
  147. return; //
  148. }
  149.  
  150. // Delete everything in the directory
  151. while (false !== ($item = readdir($dir_h))) {
  152. if (is_dir($dir.$item)) {
  153.  
  154. // $item is a directory. Recurse if appropriate
  155. if ( ($item != '.') && ($item != '..') ) {
  156. $this->rmrfdir($dir.$item.'/'); // empty the directory
  157. rmdir($dir.$item); // remove the empty directory
  158. }
  159. } else { // if (is_dir($item))
  160.  
  161. // $item is not a directory.
  162. unlink($dir.$item);
  163. } // if (is_dir($item)) ... else
  164. } // while (false !== ($item = readdir($dir_h)))
  165.  
  166. // Close the directory
  167. closedir($dir_h);
  168. }
  169.  
  170.  
  171. /**
  172. * Verify that generator_help() outputs a "Usage" message
  173. */
  174. public function testGenerator_help() {
  175. $tg = new TraxGenerator;
  176. ob_start();
  177. $tg->generator_help(); // should produce a usage
  178. $output = ob_get_clean();
  179. $this->assertContains('Usage', $output);
  180. }
  181.  
  182. /**
  183. * Verify that scaffold_help() outputs a "Usage" message
  184. */
  185. public function testScaffold_help() {
  186. $tg = new TraxGenerator;
  187. ob_start();
  188. $tg->scaffold_help(); // should produce a usage
  189. $output = ob_get_clean();
  190. $this->assertContains('Usage', $output);
  191. }
  192.  
  193. /**
  194. * Verify that controller_help() outputs a "Usage" message
  195. */
  196. public function testController_help() {
  197. $tg = new TraxGenerator;
  198. ob_start();
  199. $tg->controller_help(); // should produce a usage
  200. $output = ob_get_clean();
  201. $this->assertContains('Usage', $output);
  202. }
  203.  
  204. /**
  205. * Verify that model_help() outputs a "Usage" message
  206. */
  207. public function testModel_help() {
  208. $tg = new TraxGenerator;
  209. ob_start();
  210. $tg->model_help(); // should produce a usage
  211. $output = ob_get_clean();
  212. $this->assertContains('Usage', $output);
  213. }
  214.  
  215. /**
  216. * Verify that generate_controller() generates a controller
  217. *
  218. * We would like to test
  219. * {@link TraxGenerator::create_controller() create_controller()},
  220. * {@link TraxGenerator::create_helper() create_helper()}
  221. * and {@link TraxGenerator::create_view() create_view()} in
  222. * isolation before we test
  223. * {@link TraxGenerator::generate_controller() generate_controller()}
  224. * but that's impossible because they depend on private variables
  225. * which are set only in generate_controller().
  226. */
  227. public function testGenerate_controller() {
  228.  
  229. // Generate a mumble controller with no views
  230. $tg = new TraxGenerator;
  231. ob_start();
  232. $tg->generate_controller('mumble');
  233. $output = ob_get_clean();
  234. $this->assertContains('create', $output);
  235. $this->assertTrue(is_file(TRAX_ROOT
  236. . 'controllers/mumble_controller.php'));
  237. $controller = file_get_contents(TRAX_ROOT
  238. . 'controllers/mumble_controller.php');
  239. $this->assertContains('class MumbleController extends'
  240. . ' ApplicationController', $controller);
  241. $this->assertTrue(is_file(TRAX_ROOT
  242. . 'helpers/mumble_helper.php'));
  243. $this->assertTrue(is_dir(TRAX_ROOT . 'views/mumble'));
  244.  
  245. // Verify that a second attempt to create the same controller
  246. // reports that it exists
  247. $tg = new TraxGenerator;
  248. ob_start();
  249. $tg->generate_controller('mumble');
  250. $output = ob_get_clean();
  251. $this->assertContains('exists', $output);
  252. $this->assertTrue(file_exists(TRAX_ROOT
  253. . 'controllers/mumble_controller.php'));
  254. // Generate a controller with one view file
  255. $tg = new TraxGenerator;
  256. ob_start();
  257. $tg->generate_controller('store', 'manager');
  258. $output = ob_get_clean();
  259. $this->assertContains('create', $output);
  260. $this->assertTrue(is_file(TRAX_ROOT
  261. . 'controllers/store_controller.php'));
  262. $controller = file_get_contents(TRAX_ROOT
  263. . 'controllers/store_controller.php');
  264. $this->assertContains('class StoreController extends'
  265. . ' ApplicationController', $controller);
  266. $this->assertTrue(is_file(TRAX_ROOT
  267. . 'helpers/store_helper.php'));
  268. $this->assertTrue(is_dir(TRAX_ROOT . 'views/store'));
  269. $this->assertTrue(is_file(TRAX_ROOT
  270. . 'views/store/manager.phtml'));
  271. $view = file_get_contents(TRAX_ROOT . 'views/store/manager.phtml');
  272. $this->assertContains('Store->manager',$view);
  273. $this->assertContains('store/manager.phtml',$view);
  274. // Generate a controller with two view files
  275. $tg = new TraxGenerator;
  276. ob_start();
  277. $tg->generate_controller('account', array('customer','teller'));
  278. $output = ob_get_clean();
  279. $this->assertContains('create', $output);
  280. $this->assertTrue(is_file(TRAX_ROOT
  281. . 'controllers/account_controller.php'));
  282. $controller = file_get_contents(TRAX_ROOT
  283. . 'controllers/account_controller.php');
  284. $this->assertContains('class AccountController extends'
  285. . ' ApplicationController', $controller);
  286. $this->assertTrue(is_file(TRAX_ROOT
  287. . 'helpers/account_helper.php'));
  288. $this->assertTrue(is_dir(TRAX_ROOT . 'views/account'));
  289. $this->assertTrue(is_file(TRAX_ROOT
  290. . 'views/account/customer.phtml'));
  291. $view = file_get_contents(TRAX_ROOT . 'views/account/customer.phtml');
  292. $this->assertContains('Account->customer',$view);
  293. $this->assertContains('account/customer.phtml',$view);
  294. $this->assertTrue(is_file(TRAX_ROOT
  295. . 'views/account/teller.phtml'));
  296. $view = file_get_contents(TRAX_ROOT . 'views/account/teller.phtml');
  297. $this->assertContains('Account->teller',$view);
  298. $this->assertContains('account/teller.phtml',$view);
  299.  
  300. // Generate a controller in a subdirectory
  301. $tg = new TraxGenerator;
  302. ob_start();
  303. $tg->generate_controller('forum/admin');
  304. $output = ob_get_clean();
  305. $this->assertContains('create', $output);
  306. $this->assertTrue(is_file(TRAX_ROOT
  307. . 'controllers/forum/admin_controller.php'));
  308. $controller = file_get_contents(TRAX_ROOT
  309. . 'controllers/forum/admin_controller.php');
  310. $this->assertContains('class AdminController extends'
  311. . ' ApplicationController', $controller);
  312. $this->assertTrue(is_file(TRAX_ROOT
  313. . 'helpers/forum/admin_helper.php'));
  314. $this->assertTrue(is_dir(TRAX_ROOT . 'views/forum/admin'));
  315. }
  316.  
  317. /**
  318. * Verify that generate_model() generates a model
  319. */
  320. public function testGenerate_model() {
  321.  
  322. // Generate a CreditCard model
  323. $tg = new TraxGenerator;
  324. ob_start();
  325. $tg->generate_model('CreditCard');
  326. $output = ob_get_clean();
  327. $this->assertContains('create', $output);
  328. $this->assertTrue(is_file(TRAX_ROOT . 'models/credit_card.php'));
  329. $model = file_get_contents(TRAX_ROOT . 'models/credit_card.php');
  330. $this->assertContains('class CreditCard extends ActiveRecord',
  331. $model);
  332.  
  333. // Generate a soap_opera model
  334. $tg = new TraxGenerator;
  335. ob_start();
  336. $tg->generate_model('soap_opera');
  337. $output = ob_get_clean();
  338. $this->assertContains('create', $output);
  339. $this->assertTrue(is_file(TRAX_ROOT . 'models/soap_opera.php'));
  340. $model = file_get_contents(TRAX_ROOT . 'models/soap_opera.php');
  341. $this->assertContains('class SoapOpera extends ActiveRecord',
  342. $model);
  343. }
  344.  
  345. /**
  346. * Verify that generate_scaffold() generates a model and controller
  347. */
  348. public function testGenerate_scaffold1() {
  349.  
  350. // Generate a PersonName/membership scaffold
  351. $tg = new TraxGenerator;
  352. ob_start();
  353. $tg->generate_scaffold('PersonName', 'membership');
  354.  
  355. $output = ob_get_clean();
  356. $this->assertContains('create', $output);
  357. $this->assertNotContains('Error:', $output);
  358. $this->assertNotContains('Notice:', $output);
  359.  
  360. // verify controller
  361. $this->assertTrue(is_file(TRAX_ROOT
  362. . 'controllers/membership_controller.php'));
  363. $controller = file_get_contents(TRAX_ROOT
  364. . 'controllers/membership_controller.php');
  365. $this->assertContains('class MembershipController extends'
  366. . ' ApplicationController', $controller);
  367. $this->assertNotContains('Error:', $controller);
  368. $this->assertNotContains('Notice:', $controller);
  369.  
  370. // verify model
  371. $this->assertTrue(is_file(TRAX_ROOT
  372. . 'models/person_name.php'));
  373. $model = file_get_contents(TRAX_ROOT
  374. . 'models/person_name.php');
  375. $this->assertContains('class PersonName extends'
  376. . ' ActiveRecord', $model);
  377. $this->assertNotContains('Error:', $model);
  378. $this->assertNotContains('Notice:', $model);
  379.  
  380. // verify helper
  381. $this->assertTrue(is_file(TRAX_ROOT
  382. . 'helpers/membership_helper.php'));
  383. $helper = file_get_contents(TRAX_ROOT
  384. . 'helpers/membership_helper.php');
  385. $this->assertContains('MembershipController', $helper);
  386. $this->assertNotContains('Error:', $helper);
  387. $this->assertNotContains('Notice:', $helper);
  388.  
  389. // verify views
  390. $this->assertTrue(is_dir(TRAX_ROOT . 'views/membership'));
  391.  
  392. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/add.phtml'));
  393. $add = file_get_contents(TRAX_ROOT
  394. . 'views/membership/add.phtml');
  395. $this->assertContains('New PersonName', $add);
  396. $this->assertNotContains('Error:', $add);
  397. $this->assertNotContains('Notice:', $add);
  398.  
  399. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/edit.phtml'));
  400. $edit = file_get_contents(TRAX_ROOT
  401. . 'views/membership/edit.phtml');
  402. $this->assertContains('Editing PersonName', $edit);
  403. $this->assertNotContains('Error:', $edit);
  404. $this->assertNotContains('Notice:', $edit);
  405.  
  406.  
  407. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/_form.phtml'));
  408. $_form = file_get_contents(TRAX_ROOT
  409. . 'views/membership/_form.phtml');
  410. $this->assertContains('PersonName', $_form);
  411. $this->assertNotContains('Error:', $_form);
  412. $this->assertNotContains('Notice:', $_form);
  413.  
  414. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/index.phtml'));
  415. $index = file_get_contents(TRAX_ROOT
  416. . 'views/membership/index.phtml');
  417. $this->assertContains('Listing PersonNames', $index);
  418. $this->assertNotContains('Error:', $index);
  419. $this->assertNotContains('Notice:', $index);
  420.  
  421. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/show.phtml'));
  422. $show = file_get_contents(TRAX_ROOT
  423. . 'views/membership/show.phtml');
  424. $this->assertContains('PersonName', $show);
  425. $this->assertNotContains('Error:', $show);
  426. $this->assertNotContains('Notice:', $show);
  427.  
  428. // verify layout
  429. $this->assertTrue(is_file(TRAX_ROOT
  430. . 'views/layouts/membership.phtml'));
  431. $layout = file_get_contents(TRAX_ROOT
  432. . 'views/layouts/membership.phtml');
  433. $this->assertContains('membership', $layout);
  434. }
  435.  
  436. /**
  437. * Verify that generate_scaffold() defaults controller from model
  438. */
  439. public function testGenerate_scaffold2() {
  440.  
  441. // Generate a PersonName/person_name scaffold
  442. $tg = new TraxGenerator;
  443. ob_start();
  444. $tg->generate_scaffold('PersonName',null);
  445. $output = ob_get_clean();
  446. $this->assertContains('create', $output);
  447. $this->assertNotContains('Error:', $output);
  448. $this->assertNotContains('Notice:', $output);
  449.  
  450. // verify controller
  451. $this->assertTrue(is_file(TRAX_ROOT
  452. . 'controllers/person_name_controller.php'));
  453. $controller = file_get_contents(TRAX_ROOT
  454. . 'controllers/person_name_controller.php');
  455. $this->assertContains('class PersonNameController extends'
  456. . ' ApplicationController', $controller);
  457. $this->assertNotContains('Error:', $controller);
  458. $this->assertNotContains('Notice:', $controller);
  459.  
  460. // verify model
  461. $this->assertTrue(is_file(TRAX_ROOT
  462. . 'models/person_name.php'));
  463. $model = file_get_contents(TRAX_ROOT
  464. . 'models/person_name.php');
  465. $this->assertContains('class PersonName extends'
  466. . ' ActiveRecord', $model);
  467. $this->assertNotContains('Error:', $model);
  468. $this->assertNotContains('Notice:', $model);
  469.  
  470. // verify helper
  471. $this->assertTrue(is_file(TRAX_ROOT
  472. . 'helpers/person_name_helper.php'));
  473. $helper = file_get_contents(TRAX_ROOT
  474. . 'helpers/person_name_helper.php');
  475. $this->assertContains('PersonNameController', $helper);
  476. $this->assertNotContains('Error:', $helper);
  477. $this->assertNotContains('Notice:', $helper);
  478.  
  479. // verify views
  480. $this->assertTrue(is_dir(TRAX_ROOT . 'views/person_name'));
  481.  
  482. $this->assertTrue(is_file(TRAX_ROOT . 'views/person_name/add.phtml'));
  483. $add = file_get_contents(TRAX_ROOT
  484. . 'views/person_name/add.phtml');
  485. $this->assertContains('New PersonName', $add);
  486. $this->assertNotContains('Error:', $add);
  487. $this->assertNotContains('Notice:', $add);
  488.  
  489. $this->assertTrue(is_file(TRAX_ROOT . 'views/person_name/edit.phtml'));
  490. $edit = file_get_contents(TRAX_ROOT
  491. . 'views/person_name/edit.phtml');
  492. $this->assertContains('Editing PersonName', $edit);
  493. $this->assertNotContains('Error:', $edit);
  494. $this->assertNotContains('Notice:', $edit);
  495.  
  496.  
  497. $this->assertTrue(is_file(TRAX_ROOT
  498. . 'views/person_name/_form.phtml'));
  499. $_form = file_get_contents(TRAX_ROOT
  500. . 'views/person_name/_form.phtml');
  501. $this->assertContains('PersonName', $_form);
  502. $this->assertNotContains('Error:', $_form);
  503. $this->assertNotContains('Notice:', $_form);
  504.  
  505. $this->assertTrue(is_file(TRAX_ROOT
  506. . 'views/person_name/index.phtml'));
  507. $index = file_get_contents(TRAX_ROOT
  508. . 'views/person_name/index.phtml');
  509. $this->assertContains('Listing PersonNames', $index);
  510. $this->assertNotContains('Error:', $index);
  511. $this->assertNotContains('Notice:', $index);
  512.  
  513. $this->assertTrue(is_file(TRAX_ROOT . 'views/person_name/show.phtml'));
  514. $show = file_get_contents(TRAX_ROOT
  515. . 'views/person_name/show.phtml');
  516. $this->assertContains('PersonName', $show);
  517. $this->assertNotContains('Error:', $show);
  518. $this->assertNotContains('Notice:', $show);
  519.  
  520. // verify layout
  521. $this->assertTrue(is_file(TRAX_ROOT
  522. . 'views/layouts/person_name.phtml'));
  523. $layout = file_get_contents(TRAX_ROOT
  524. . 'views/layouts/person_name.phtml');
  525. $this->assertContains('person_name', $layout);
  526. }
  527.  
  528. /**
  529. * Verify generate_scaffold() with additional views
  530. */
  531. public function testGenerate_scaffold3() {
  532.  
  533. // Generate a PersonName/membership scaffold
  534. $tg = new TraxGenerator;
  535. ob_start();
  536. $tg->generate_scaffold('PersonName', 'membership',
  537. array('join', 'renew'));
  538. $output = ob_get_clean();
  539. $this->assertContains('create', $output);
  540. $this->assertNotContains('Error:', $output);
  541. $this->assertNotContains('Notice:', $output);
  542.  
  543. // verify controller
  544. $this->assertTrue(is_file(TRAX_ROOT
  545. . 'controllers/membership_controller.php'));
  546. $controller = file_get_contents(TRAX_ROOT
  547. . 'controllers/membership_controller.php');
  548. $this->assertContains('class MembershipController extends'
  549. . ' ApplicationController', $controller);
  550. $this->assertNotContains('Error:', $controller);
  551. $this->assertNotContains('Notice:', $controller);
  552.  
  553. // verify model
  554. $this->assertTrue(is_file(TRAX_ROOT
  555. . 'models/person_name.php'));
  556. $model = file_get_contents(TRAX_ROOT
  557. . 'models/person_name.php');
  558. $this->assertContains('class PersonName extends'
  559. . ' ActiveRecord', $model);
  560. $this->assertNotContains('Error:', $model);
  561. $this->assertNotContains('Notice:', $model);
  562.  
  563. // verify helper
  564. $this->assertTrue(is_file(TRAX_ROOT
  565. . 'helpers/membership_helper.php'));
  566. $helper = file_get_contents(TRAX_ROOT
  567. . 'helpers/membership_helper.php');
  568. $this->assertContains('MembershipController', $helper);
  569. $this->assertNotContains('Error:', $helper);
  570. $this->assertNotContains('Notice:', $helper);
  571.  
  572. // verify views
  573. $this->assertTrue(is_dir(TRAX_ROOT . 'views/membership'));
  574.  
  575. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/add.phtml'));
  576. $add = file_get_contents(TRAX_ROOT
  577. . 'views/membership/add.phtml');
  578. $this->assertContains('New PersonName', $add);
  579. $this->assertNotContains('Error:', $add);
  580. $this->assertNotContains('Notice:', $add);
  581.  
  582. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/edit.phtml'));
  583. $edit = file_get_contents(TRAX_ROOT
  584. . 'views/membership/edit.phtml');
  585. $this->assertContains('Editing PersonName', $edit);
  586. $this->assertNotContains('Error:', $edit);
  587. $this->assertNotContains('Notice:', $edit);
  588.  
  589.  
  590. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/_form.phtml'));
  591. $_form = file_get_contents(TRAX_ROOT
  592. . 'views/membership/_form.phtml');
  593. $this->assertContains('PersonName', $_form);
  594. $this->assertNotContains('Error:', $_form);
  595. $this->assertNotContains('Notice:', $_form);
  596.  
  597. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/index.phtml'));
  598. $index = file_get_contents(TRAX_ROOT
  599. . 'views/membership/index.phtml');
  600. $this->assertContains('Listing PersonNames', $index);
  601. $this->assertNotContains('Error:', $index);
  602. $this->assertNotContains('Notice:', $index);
  603.  
  604. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/show.phtml'));
  605. $show = file_get_contents(TRAX_ROOT
  606. . 'views/membership/show.phtml');
  607. $this->assertContains('PersonName', $show);
  608. $this->assertNotContains('Error:', $show);
  609. $this->assertNotContains('Notice:', $show);
  610.  
  611. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/join.phtml'));
  612. $join = file_get_contents(TRAX_ROOT
  613. . 'views/membership/join.phtml');
  614. $this->assertContains('Membership->join', $join);
  615. $this->assertNotContains('Error:', $join);
  616. $this->assertNotContains('Notice:', $join);
  617.  
  618. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/renew.phtml'));
  619. $renew = file_get_contents(TRAX_ROOT
  620. . 'views/membership/renew.phtml');
  621. $this->assertContains('Membership->renew', $renew);
  622. $this->assertNotContains('Error:', $renew);
  623. $this->assertNotContains('Notice:', $renew);
  624.  
  625. // verify layout
  626. $this->assertTrue(is_file(TRAX_ROOT
  627. . 'views/layouts/membership.phtml'));
  628. $layout = file_get_contents(TRAX_ROOT
  629. . 'views/layouts/membership.phtml');
  630. $this->assertContains('membership', $layout);
  631. }
  632.  
  633. /**
  634. * Verify generate_scaffold() with the controller in a subdirectory
  635. */
  636. public function testGenerate_scaffold4() {
  637.  
  638. // Generate a PersonName/membership scaffold
  639. $tg = new TraxGenerator;
  640. ob_start();
  641. $tg->generate_scaffold('PersonName', 'admin/membership');
  642. $output = ob_get_clean();
  643. $this->assertContains('create', $output);
  644. $this->assertNotContains('Error:', $output);
  645. $this->assertNotContains('Notice:', $output);
  646.  
  647. // verify controller
  648. $this->assertTrue(is_file(TRAX_ROOT
  649. . 'controllers/admin/membership_controller.php'));
  650. $controller = file_get_contents(TRAX_ROOT
  651. . 'controllers/admin/membership_controller.php');
  652. $this->assertContains('class MembershipController extends'
  653. . ' ApplicationController', $controller);
  654. $this->assertNotContains('Error:', $controller);
  655. $this->assertNotContains('Notice:', $controller);
  656.  
  657. // verify model
  658. $this->assertTrue(is_file(TRAX_ROOT
  659. . 'models/person_name.php'));
  660. $model = file_get_contents(TRAX_ROOT
  661. . 'models/person_name.php');
  662. $this->assertContains('class PersonName extends'
  663. . ' ActiveRecord', $model);
  664. $this->assertNotContains('Error:', $model);
  665. $this->assertNotContains('Notice:', $model);
  666.  
  667. // verify helper
  668. $this->assertTrue(is_file(TRAX_ROOT
  669. . 'helpers/admin/membership_helper.php'));
  670. $helper = file_get_contents(TRAX_ROOT
  671. . 'helpers/admin/membership_helper.php');
  672. $this->assertContains('MembershipController', $helper);
  673. $this->assertNotContains('Error:', $helper);
  674. $this->assertNotContains('Notice:', $helper);
  675.  
  676. // verify views
  677. $this->assertTrue(is_dir(TRAX_ROOT . 'views/admin/membership'));
  678.  
  679. $this->assertTrue(is_file(TRAX_ROOT
  680. . 'views/admin/membership/add.phtml'));
  681. $add = file_get_contents(TRAX_ROOT
  682. . 'views/admin/membership/add.phtml');
  683. $this->assertContains('New PersonName', $add);
  684. $this->assertNotContains('Error:', $add);
  685. $this->assertNotContains('Notice:', $add);
  686.  
  687. $this->assertTrue(is_file(TRAX_ROOT
  688. . 'views/admin/membership/edit.phtml'));
  689. $edit = file_get_contents(TRAX_ROOT
  690. . 'views/admin/membership/edit.phtml');
  691. $this->assertContains('Editing PersonName', $edit);
  692. $this->assertNotContains('Error:', $edit);
  693. $this->assertNotContains('Notice:', $edit);
  694.  
  695.  
  696. $this->assertTrue(is_file(TRAX_ROOT
  697. . 'views/admin/membership/_form.phtml'));
  698. $_form = file_get_contents(TRAX_ROOT
  699. . 'views/admin/membership/_form.phtml');
  700. $this->assertContains('PersonName', $_form);
  701. $this->assertNotContains('Error:', $_form);
  702. $this->assertNotContains('Notice:', $_form);
  703.  
  704. $this->assertTrue(is_file(TRAX_ROOT
  705. . 'views/admin/membership/index.phtml'));
  706. $index = file_get_contents(TRAX_ROOT
  707. . 'views/admin/membership/index.phtml');
  708. $this->assertContains('Listing PersonNames', $index);
  709. $this->assertNotContains('Error:', $index);
  710. $this->assertNotContains('Notice:', $index);
  711.  
  712. $this->assertTrue(is_file(TRAX_ROOT
  713. . 'views/admin/membership/show.phtml'));
  714. $show = file_get_contents(TRAX_ROOT
  715. . 'views/admin/membership/show.phtml');
  716. $this->assertContains('PersonName', $show);
  717. $this->assertNotContains('Error:', $show);
  718. $this->assertNotContains('Notice:', $show);
  719.  
  720. // verify layout
  721. $this->assertTrue(is_file(TRAX_ROOT
  722. . 'views/layouts/admin/membership.phtml'));
  723. $layout = file_get_contents(TRAX_ROOT
  724. . 'views/layouts/admin/membership.phtml');
  725. $this->assertContains('membership', $layout);
  726. }
  727.  
  728. /**
  729. * Test fix_php_brackets()
  730. */
  731. public function testFix_php_brackets() {
  732. $tg = new TraxGenerator;
  733. $this->assertEquals($tg->fix_php_brackets('< ?php foo ? >'),
  734. '<?php foo ?>');
  735. }
  736.  
  737. /**
  738. * @todo Implement testRun().
  739. */
  740. public function testRun() {
  741.  
  742. // Verify that no command produces usage message
  743. $tg = new TraxGenerator;
  744. ob_start();
  745. $tg->run(); // should produce a usage
  746. $result = ob_get_clean();
  747. $this->assertContains('Usage', $result);
  748.  
  749. // Verify that unknown command produces usage message
  750. $_SERVER['argv'][1] = 'foo';
  751. $tg = new TraxGenerator;
  752. ob_start();
  753. $tg->run(); // should produce a usage
  754. $result = ob_get_clean();
  755. $this->assertContains('Usage', $result);
  756.  
  757. // Generate a CreditCard model
  758. $_SERVER['argv'][1] = 'model';
  759. $_SERVER['argv'][2] = 'CreditCard';
  760. $tg = new TraxGenerator;
  761. ob_start();
  762. $tg->run();
  763. $output = ob_get_clean();
  764. $this->assertContains('create', $output);
  765. $this->assertTrue(is_file(TRAX_ROOT . 'models/credit_card.php'));
  766.  
  767. // Generate a mumble controller with no views
  768. $_SERVER['argv'][1] = 'controller';
  769. $_SERVER['argv'][2] = 'mumble';
  770. $tg = new TraxGenerator;
  771. ob_start();
  772. $tg->run();
  773. $output = ob_get_clean();
  774. $this->assertContains('create', $output);
  775. $this->assertTrue(is_file(TRAX_ROOT
  776. . 'controllers/mumble_controller.php'));
  777. $this->assertTrue(is_file(TRAX_ROOT
  778. . 'helpers/mumble_helper.php'));
  779. $this->assertTrue(is_dir(TRAX_ROOT . 'views/mumble'));
  780.  
  781.  
  782. // Generate a PersonName/membership scaffold
  783. $_SERVER['argv'][1] = 'scaffold';
  784. $_SERVER['argv'][2] = 'PersonName';
  785. $_SERVER['argv'][3] = 'membership';
  786. $tg = new TraxGenerator;
  787. ob_start();
  788. $tg->run();
  789. $output = ob_get_clean();
  790. $this->assertContains('create', $output);
  791. $this->assertNotContains('Error:', $output);
  792. $this->assertNotContains('Notice:', $output);
  793.  
  794. // verify controller
  795. $this->assertTrue(is_file(TRAX_ROOT
  796. . 'controllers/membership_controller.php'));
  797.  
  798. // verify model
  799. $this->assertTrue(is_file(TRAX_ROOT
  800. . 'models/person_name.php'));
  801.  
  802. // verify helper
  803. $this->assertTrue(is_file(TRAX_ROOT
  804. . 'helpers/membership_helper.php'));
  805.  
  806. // verify views
  807. $this->assertTrue(is_dir(TRAX_ROOT . 'views/membership'));
  808. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/add.phtml'));
  809. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/edit.phtml'));
  810. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/_form.phtml'));
  811. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/index.phtml'));
  812. $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/show.phtml'));
  813.  
  814. // verify layout
  815. $this->assertTrue(is_file(TRAX_ROOT
  816. . 'views/layouts/membership.phtml'));
  817. }
  818. }
  819.  
  820. // Call TraxGeneratorTest::main() if this source file is executed directly.
  821. if (PHPUnit2_MAIN_METHOD == "TraxGeneratorTest::main") {
  822. TraxGeneratorTest::main();
  823. }
  824.  
  825. // Clean up temp directory when done
  826. rmdir(TRAX_ROOT);
  827.  
  828. // -- set Emacs parameters --
  829. // Local variables:
  830. // tab-width: 4
  831. // c-basic-offset: 4
  832. // c-hanging-comment-ender-p: nil
  833. // indent-tabs-mode: nil
  834. // End:
  835. ?>

Documentation generated on Thu, 04 May 2006 19:48:00 -0600 by phpDocumentor 1.3.0RC4