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