| | 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('created', $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 | |
| | 255 | // Generate a controller with one view file |
| | 256 | $tg = new TraxGenerator; |
| | 257 | ob_start(); |
| | 258 | $tg->generate_controller('store', 'manager'); |
| | 259 | $output = ob_get_clean(); |
| | 260 | $this->assertContains('created', $output); |
| | 261 | $this->assertTrue(is_file(TRAX_ROOT |
| | 262 | . 'controllers/store_controller.php')); |
| | 263 | $controller = file_get_contents(TRAX_ROOT |
| | 264 | . 'controllers/store_controller.php'); |
| | 265 | $this->assertContains('class StoreController extends' |
| | 266 | . ' ApplicationController', $controller); |
| | 267 | $this->assertTrue(is_file(TRAX_ROOT |
| | 268 | . 'helpers/store_helper.php')); |
| | 269 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/store')); |
| | 270 | $this->assertTrue(is_file(TRAX_ROOT |
| | 271 | . 'views/store/manager.phtml')); |
| | 272 | $view = file_get_contents(TRAX_ROOT . 'views/store/manager.phtml'); |
| | 273 | $this->assertContains('Store->manager',$view); |
| | 274 | $this->assertContains('store/manager.phtml',$view); |
| | 275 | |
| | 276 | // Generate a controller with two view files |
| | 277 | $tg = new TraxGenerator; |
| | 278 | ob_start(); |
| | 279 | $tg->generate_controller('account', array('customer','teller')); |
| | 280 | $output = ob_get_clean(); |
| | 281 | $this->assertContains('created', $output); |
| | 282 | $this->assertTrue(is_file(TRAX_ROOT |
| | 283 | . 'controllers/account_controller.php')); |
| | 284 | $controller = file_get_contents(TRAX_ROOT |
| | 285 | . 'controllers/account_controller.php'); |
| | 286 | $this->assertContains('class AccountController extends' |
| | 287 | . ' ApplicationController', $controller); |
| | 288 | $this->assertTrue(is_file(TRAX_ROOT |
| | 289 | . 'helpers/account_helper.php')); |
| | 290 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/account')); |
| | 291 | $this->assertTrue(is_file(TRAX_ROOT |
| | 292 | . 'views/account/customer.phtml')); |
| | 293 | $view = file_get_contents(TRAX_ROOT . 'views/account/customer.phtml'); |
| | 294 | $this->assertContains('Account->customer',$view); |
| | 295 | $this->assertContains('account/customer.phtml',$view); |
| | 296 | $this->assertTrue(is_file(TRAX_ROOT |
| | 297 | . 'views/account/teller.phtml')); |
| | 298 | $view = file_get_contents(TRAX_ROOT . 'views/account/teller.phtml'); |
| | 299 | $this->assertContains('Account->teller',$view); |
| | 300 | $this->assertContains('account/teller.phtml',$view); |
| | 301 | |
| | 302 | // Generate a controller in a subdirectory |
| | 303 | $tg = new TraxGenerator; |
| | 304 | ob_start(); |
| | 305 | $tg->generate_controller('forum/admin'); |
| | 306 | $output = ob_get_clean(); |
| | 307 | $this->assertContains('created', $output); |
| | 308 | $this->assertTrue(is_file(TRAX_ROOT |
| | 309 | . 'controllers/forum/admin_controller.php')); |
| | 310 | $controller = file_get_contents(TRAX_ROOT |
| | 311 | . 'controllers/forum/admin_controller.php'); |
| | 312 | $this->assertContains('class AdminController extends' |
| | 313 | . ' ApplicationController', $controller); |
| | 314 | $this->assertTrue(is_file(TRAX_ROOT |
| | 315 | . 'helpers/forum/admin_helper.php')); |
| | 316 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/forum/admin')); |
| | 317 | } |
| | 318 | |
| | 319 | /** |
| | 320 | * Verify that generate_model() generates a model |
| | 321 | */ |
| | 322 | public function testGenerate_model() { |
| | 323 | |
| | 324 | // Generate a CreditCard model |
| | 325 | $tg = new TraxGenerator; |
| | 326 | ob_start(); |
| | 327 | $tg->generate_model('CreditCard'); |
| | 328 | $output = ob_get_clean(); |
| | 329 | $this->assertContains('created', $output); |
| | 330 | $this->assertTrue(is_file(TRAX_ROOT . 'models/credit_card.php')); |
| | 331 | $model = file_get_contents(TRAX_ROOT . 'models/credit_card.php'); |
| | 332 | $this->assertContains('class CreditCard extends ActiveRecord', |
| | 333 | $model); |
| | 334 | |
| | 335 | // Generate a soap_opera model |
| | 336 | $tg = new TraxGenerator; |
| | 337 | ob_start(); |
| | 338 | $tg->generate_model('soap_opera'); |
| | 339 | $output = ob_get_clean(); |
| | 340 | $this->assertContains('created', $output); |
| | 341 | $this->assertTrue(is_file(TRAX_ROOT . 'models/soap_opera.php')); |
| | 342 | $model = file_get_contents(TRAX_ROOT . 'models/soap_opera.php'); |
| | 343 | $this->assertContains('class SoapOpera extends ActiveRecord', |
| | 344 | $model); |
| | 345 | } |
| | 346 | |
| | 347 | /** |
| | 348 | * Verify that generate_scaffold() generates a model and controller |
| | 349 | */ |
| | 350 | public function testGenerate_scaffold1() { |
| | 351 | |
| | 352 | // Generate a PersonName/membership scaffold |
| | 353 | $tg = new TraxGenerator; |
| | 354 | ob_start(); |
| | 355 | $tg->generate_scaffold('PersonName', 'membership'); |
| | 356 | $output = ob_get_clean(); |
| | 357 | $this->assertContains('created', $output); |
| | 358 | $this->assertNotContains('Error:', $output); |
| | 359 | $this->assertNotContains('Notice:', $output); |
| | 360 | |
| | 361 | // verify controller |
| | 362 | $this->assertTrue(is_file(TRAX_ROOT |
| | 363 | . 'controllers/membership_controller.php')); |
| | 364 | $controller = file_get_contents(TRAX_ROOT |
| | 365 | . 'controllers/membership_controller.php'); |
| | 366 | $this->assertContains('class MembershipController extends' |
| | 367 | . ' ApplicationController', $controller); |
| | 368 | $this->assertNotContains('Error:', $controller); |
| | 369 | $this->assertNotContains('Notice:', $controller); |
| | 370 | |
| | 371 | // verify model |
| | 372 | $this->assertTrue(is_file(TRAX_ROOT |
| | 373 | . 'models/person_name.php')); |
| | 374 | $model = file_get_contents(TRAX_ROOT |
| | 375 | . 'models/person_name.php'); |
| | 376 | $this->assertContains('class PersonName extends' |
| | 377 | . ' ActiveRecord', $model); |
| | 378 | $this->assertNotContains('Error:', $model); |
| | 379 | $this->assertNotContains('Notice:', $model); |
| | 380 | |
| | 381 | // verify helper |
| | 382 | $this->assertTrue(is_file(TRAX_ROOT |
| | 383 | . 'helpers/membership_helper.php')); |
| | 384 | $helper = file_get_contents(TRAX_ROOT |
| | 385 | . 'helpers/membership_helper.php'); |
| | 386 | $this->assertContains('MembershipController', $helper); |
| | 387 | $this->assertNotContains('Error:', $helper); |
| | 388 | $this->assertNotContains('Notice:', $helper); |
| | 389 | |
| | 390 | // verify views |
| | 391 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/membership')); |
| | 392 | |
| | 393 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/add.phtml')); |
| | 394 | $add = file_get_contents(TRAX_ROOT |
| | 395 | . 'views/membership/add.phtml'); |
| | 396 | $this->assertContains('New PersonName', $add); |
| | 397 | $this->assertNotContains('Error:', $add); |
| | 398 | $this->assertNotContains('Notice:', $add); |
| | 399 | |
| | 400 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/edit.phtml')); |
| | 401 | $edit = file_get_contents(TRAX_ROOT |
| | 402 | . 'views/membership/edit.phtml'); |
| | 403 | $this->assertContains('Editing PersonName', $edit); |
| | 404 | $this->assertNotContains('Error:', $edit); |
| | 405 | $this->assertNotContains('Notice:', $edit); |
| | 406 | |
| | 407 | |
| | 408 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/_form.phtml')); |
| | 409 | $_form = file_get_contents(TRAX_ROOT |
| | 410 | . 'views/membership/_form.phtml'); |
| | 411 | $this->assertContains('PersonName', $_form); |
| | 412 | $this->assertNotContains('Error:', $_form); |
| | 413 | $this->assertNotContains('Notice:', $_form); |
| | 414 | |
| | 415 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/index.phtml')); |
| | 416 | $index = file_get_contents(TRAX_ROOT |
| | 417 | . 'views/membership/index.phtml'); |
| | 418 | $this->assertContains('Listing PersonNames', $index); |
| | 419 | $this->assertNotContains('Error:', $index); |
| | 420 | $this->assertNotContains('Notice:', $index); |
| | 421 | |
| | 422 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/show.phtml')); |
| | 423 | $show = file_get_contents(TRAX_ROOT |
| | 424 | . 'views/membership/show.phtml'); |
| | 425 | $this->assertContains('PersonName', $show); |
| | 426 | $this->assertNotContains('Error:', $show); |
| | 427 | $this->assertNotContains('Notice:', $show); |
| | 428 | |
| | 429 | // verify layout |
| | 430 | $this->assertTrue(is_file(TRAX_ROOT |
| | 431 | . 'views/layouts/membership.phtml')); |
| | 432 | $layout = file_get_contents(TRAX_ROOT |
| | 433 | . 'views/layouts/membership.phtml'); |
| | 434 | $this->assertContains('membership', $layout); |
| | 435 | } |
| | 436 | |
| | 437 | /** |
| | 438 | * Verify that generate_scaffold() defaults controller from model |
| | 439 | */ |
| | 440 | public function testGenerate_scaffold2() { |
| | 441 | |
| | 442 | // Generate a PersonName/person_name scaffold |
| | 443 | $tg = new TraxGenerator; |
| | 444 | ob_start(); |
| | 445 | $tg->generate_scaffold('PersonName',null); |
| | 446 | $output = ob_get_clean(); |
| | 447 | $this->assertContains('created', $output); |
| | 448 | $this->assertNotContains('Error:', $output); |
| | 449 | $this->assertNotContains('Notice:', $output); |
| | 450 | |
| | 451 | // verify controller |
| | 452 | $this->assertTrue(is_file(TRAX_ROOT |
| | 453 | . 'controllers/person_name_controller.php')); |
| | 454 | $controller = file_get_contents(TRAX_ROOT |
| | 455 | . 'controllers/person_name_controller.php'); |
| | 456 | $this->assertContains('class PersonNameController extends' |
| | 457 | . ' ApplicationController', $controller); |
| | 458 | $this->assertNotContains('Error:', $controller); |
| | 459 | $this->assertNotContains('Notice:', $controller); |
| | 460 | |
| | 461 | // verify model |
| | 462 | $this->assertTrue(is_file(TRAX_ROOT |
| | 463 | . 'models/person_name.php')); |
| | 464 | $model = file_get_contents(TRAX_ROOT |
| | 465 | . 'models/person_name.php'); |
| | 466 | $this->assertContains('class PersonName extends' |
| | 467 | . ' ActiveRecord', $model); |
| | 468 | $this->assertNotContains('Error:', $model); |
| | 469 | $this->assertNotContains('Notice:', $model); |
| | 470 | |
| | 471 | // verify helper |
| | 472 | $this->assertTrue(is_file(TRAX_ROOT |
| | 473 | . 'helpers/person_name_helper.php')); |
| | 474 | $helper = file_get_contents(TRAX_ROOT |
| | 475 | . 'helpers/person_name_helper.php'); |
| | 476 | $this->assertContains('PersonNameController', $helper); |
| | 477 | $this->assertNotContains('Error:', $helper); |
| | 478 | $this->assertNotContains('Notice:', $helper); |
| | 479 | |
| | 480 | // verify views |
| | 481 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/person_name')); |
| | 482 | |
| | 483 | $this->assertTrue(is_file(TRAX_ROOT . 'views/person_name/add.phtml')); |
| | 484 | $add = file_get_contents(TRAX_ROOT |
| | 485 | . 'views/person_name/add.phtml'); |
| | 486 | $this->assertContains('New PersonName', $add); |
| | 487 | $this->assertNotContains('Error:', $add); |
| | 488 | $this->assertNotContains('Notice:', $add); |
| | 489 | |
| | 490 | $this->assertTrue(is_file(TRAX_ROOT . 'views/person_name/edit.phtml')); |
| | 491 | $edit = file_get_contents(TRAX_ROOT |
| | 492 | . 'views/person_name/edit.phtml'); |
| | 493 | $this->assertContains('Editing PersonName', $edit); |
| | 494 | $this->assertNotContains('Error:', $edit); |
| | 495 | $this->assertNotContains('Notice:', $edit); |
| | 496 | |
| | 497 | |
| | 498 | $this->assertTrue(is_file(TRAX_ROOT |
| | 499 | . 'views/person_name/_form.phtml')); |
| | 500 | $_form = file_get_contents(TRAX_ROOT |
| | 501 | . 'views/person_name/_form.phtml'); |
| | 502 | $this->assertContains('PersonName', $_form); |
| | 503 | $this->assertNotContains('Error:', $_form); |
| | 504 | $this->assertNotContains('Notice:', $_form); |
| | 505 | |
| | 506 | $this->assertTrue(is_file(TRAX_ROOT |
| | 507 | . 'views/person_name/index.phtml')); |
| | 508 | $index = file_get_contents(TRAX_ROOT |
| | 509 | . 'views/person_name/index.phtml'); |
| | 510 | $this->assertContains('Listing PersonNames', $index); |
| | 511 | $this->assertNotContains('Error:', $index); |
| | 512 | $this->assertNotContains('Notice:', $index); |
| | 513 | |
| | 514 | $this->assertTrue(is_file(TRAX_ROOT . 'views/person_name/show.phtml')); |
| | 515 | $show = file_get_contents(TRAX_ROOT |
| | 516 | . 'views/person_name/show.phtml'); |
| | 517 | $this->assertContains('PersonName', $show); |
| | 518 | $this->assertNotContains('Error:', $show); |
| | 519 | $this->assertNotContains('Notice:', $show); |
| | 520 | |
| | 521 | // verify layout |
| | 522 | $this->assertTrue(is_file(TRAX_ROOT |
| | 523 | . 'views/layouts/person_name.phtml')); |
| | 524 | $layout = file_get_contents(TRAX_ROOT |
| | 525 | . 'views/layouts/person_name.phtml'); |
| | 526 | $this->assertContains('person_name', $layout); |
| | 527 | } |
| | 528 | |
| | 529 | /** |
| | 530 | * Verify generate_scaffold() with additional views |
| | 531 | */ |
| | 532 | public function testGenerate_scaffold3() { |
| | 533 | |
| | 534 | // Generate a PersonName/membership scaffold |
| | 535 | $tg = new TraxGenerator; |
| | 536 | ob_start(); |
| | 537 | $tg->generate_scaffold('PersonName', 'membership', |
| | 538 | array('join', 'renew')); |
| | 539 | $output = ob_get_clean(); |
| | 540 | $this->assertContains('created', $output); |
| | 541 | $this->assertNotContains('Error:', $output); |
| | 542 | $this->assertNotContains('Notice:', $output); |
| | 543 | |
| | 544 | // verify controller |
| | 545 | $this->assertTrue(is_file(TRAX_ROOT |
| | 546 | . 'controllers/membership_controller.php')); |
| | 547 | $controller = file_get_contents(TRAX_ROOT |
| | 548 | . 'controllers/membership_controller.php'); |
| | 549 | $this->assertContains('class MembershipController extends' |
| | 550 | . ' ApplicationController', $controller); |
| | 551 | $this->assertNotContains('Error:', $controller); |
| | 552 | $this->assertNotContains('Notice:', $controller); |
| | 553 | |
| | 554 | // verify model |
| | 555 | $this->assertTrue(is_file(TRAX_ROOT |
| | 556 | . 'models/person_name.php')); |
| | 557 | $model = file_get_contents(TRAX_ROOT |
| | 558 | . 'models/person_name.php'); |
| | 559 | $this->assertContains('class PersonName extends' |
| | 560 | . ' ActiveRecord', $model); |
| | 561 | $this->assertNotContains('Error:', $model); |
| | 562 | $this->assertNotContains('Notice:', $model); |
| | 563 | |
| | 564 | // verify helper |
| | 565 | $this->assertTrue(is_file(TRAX_ROOT |
| | 566 | . 'helpers/membership_helper.php')); |
| | 567 | $helper = file_get_contents(TRAX_ROOT |
| | 568 | . 'helpers/membership_helper.php'); |
| | 569 | $this->assertContains('MembershipController', $helper); |
| | 570 | $this->assertNotContains('Error:', $helper); |
| | 571 | $this->assertNotContains('Notice:', $helper); |
| | 572 | |
| | 573 | // verify views |
| | 574 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/membership')); |
| | 575 | |
| | 576 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/add.phtml')); |
| | 577 | $add = file_get_contents(TRAX_ROOT |
| | 578 | . 'views/membership/add.phtml'); |
| | 579 | $this->assertContains('New PersonName', $add); |
| | 580 | $this->assertNotContains('Error:', $add); |
| | 581 | $this->assertNotContains('Notice:', $add); |
| | 582 | |
| | 583 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/edit.phtml')); |
| | 584 | $edit = file_get_contents(TRAX_ROOT |
| | 585 | . 'views/membership/edit.phtml'); |
| | 586 | $this->assertContains('Editing PersonName', $edit); |
| | 587 | $this->assertNotContains('Error:', $edit); |
| | 588 | $this->assertNotContains('Notice:', $edit); |
| | 589 | |
| | 590 | |
| | 591 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/_form.phtml')); |
| | 592 | $_form = file_get_contents(TRAX_ROOT |
| | 593 | . 'views/membership/_form.phtml'); |
| | 594 | $this->assertContains('PersonName', $_form); |
| | 595 | $this->assertNotContains('Error:', $_form); |
| | 596 | $this->assertNotContains('Notice:', $_form); |
| | 597 | |
| | 598 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/index.phtml')); |
| | 599 | $index = file_get_contents(TRAX_ROOT |
| | 600 | . 'views/membership/index.phtml'); |
| | 601 | $this->assertContains('Listing PersonNames', $index); |
| | 602 | $this->assertNotContains('Error:', $index); |
| | 603 | $this->assertNotContains('Notice:', $index); |
| | 604 | |
| | 605 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/show.phtml')); |
| | 606 | $show = file_get_contents(TRAX_ROOT |
| | 607 | . 'views/membership/show.phtml'); |
| | 608 | $this->assertContains('PersonName', $show); |
| | 609 | $this->assertNotContains('Error:', $show); |
| | 610 | $this->assertNotContains('Notice:', $show); |
| | 611 | |
| | 612 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/join.phtml')); |
| | 613 | $join = file_get_contents(TRAX_ROOT |
| | 614 | . 'views/membership/join.phtml'); |
| | 615 | $this->assertContains('Membership->join', $join); |
| | 616 | $this->assertNotContains('Error:', $join); |
| | 617 | $this->assertNotContains('Notice:', $join); |
| | 618 | |
| | 619 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/renew.phtml')); |
| | 620 | $renew = file_get_contents(TRAX_ROOT |
| | 621 | . 'views/membership/renew.phtml'); |
| | 622 | $this->assertContains('Membership->renew', $renew); |
| | 623 | $this->assertNotContains('Error:', $renew); |
| | 624 | $this->assertNotContains('Notice:', $renew); |
| | 625 | |
| | 626 | // verify layout |
| | 627 | $this->assertTrue(is_file(TRAX_ROOT |
| | 628 | . 'views/layouts/membership.phtml')); |
| | 629 | $layout = file_get_contents(TRAX_ROOT |
| | 630 | . 'views/layouts/membership.phtml'); |
| | 631 | $this->assertContains('membership', $layout); |
| | 632 | } |
| | 633 | |
| | 634 | /** |
| | 635 | * Verify generate_scaffold() with the controller in a subdirectory |
| | 636 | */ |
| | 637 | public function testGenerate_scaffold4() { |
| | 638 | |
| | 639 | // Generate a PersonName/membership scaffold |
| | 640 | $tg = new TraxGenerator; |
| | 641 | ob_start(); |
| | 642 | $tg->generate_scaffold('PersonName', 'admin/membership'); |
| | 643 | $output = ob_get_clean(); |
| | 644 | $this->assertContains('created', $output); |
| | 645 | $this->assertNotContains('Error:', $output); |
| | 646 | $this->assertNotContains('Notice:', $output); |
| | 647 | |
| | 648 | // verify controller |
| | 649 | $this->assertTrue(is_file(TRAX_ROOT |
| | 650 | . 'controllers/admin/membership_controller.php')); |
| | 651 | $controller = file_get_contents(TRAX_ROOT |
| | 652 | . 'controllers/admin/membership_controller.php'); |
| | 653 | $this->assertContains('class MembershipController extends' |
| | 654 | . ' ApplicationController', $controller); |
| | 655 | $this->assertNotContains('Error:', $controller); |
| | 656 | $this->assertNotContains('Notice:', $controller); |
| | 657 | |
| | 658 | // verify model |
| | 659 | $this->assertTrue(is_file(TRAX_ROOT |
| | 660 | . 'models/person_name.php')); |
| | 661 | $model = file_get_contents(TRAX_ROOT |
| | 662 | . 'models/person_name.php'); |
| | 663 | $this->assertContains('class PersonName extends' |
| | 664 | . ' ActiveRecord', $model); |
| | 665 | $this->assertNotContains('Error:', $model); |
| | 666 | $this->assertNotContains('Notice:', $model); |
| | 667 | |
| | 668 | // verify helper |
| | 669 | $this->assertTrue(is_file(TRAX_ROOT |
| | 670 | . 'helpers/admin/membership_helper.php')); |
| | 671 | $helper = file_get_contents(TRAX_ROOT |
| | 672 | . 'helpers/admin/membership_helper.php'); |
| | 673 | $this->assertContains('MembershipController', $helper); |
| | 674 | $this->assertNotContains('Error:', $helper); |
| | 675 | $this->assertNotContains('Notice:', $helper); |
| | 676 | |
| | 677 | // verify views |
| | 678 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/admin/membership')); |
| | 679 | |
| | 680 | $this->assertTrue(is_file(TRAX_ROOT |
| | 681 | . 'views/admin/membership/add.phtml')); |
| | 682 | $add = file_get_contents(TRAX_ROOT |
| | 683 | . 'views/admin/membership/add.phtml'); |
| | 684 | $this->assertContains('New PersonName', $add); |
| | 685 | $this->assertNotContains('Error:', $add); |
| | 686 | $this->assertNotContains('Notice:', $add); |
| | 687 | |
| | 688 | $this->assertTrue(is_file(TRAX_ROOT |
| | 689 | . 'views/admin/membership/edit.phtml')); |
| | 690 | $edit = file_get_contents(TRAX_ROOT |
| | 691 | . 'views/admin/membership/edit.phtml'); |
| | 692 | $this->assertContains('Editing PersonName', $edit); |
| | 693 | $this->assertNotContains('Error:', $edit); |
| | 694 | $this->assertNotContains('Notice:', $edit); |
| | 695 | |
| | 696 | |
| | 697 | $this->assertTrue(is_file(TRAX_ROOT |
| | 698 | . 'views/admin/membership/_form.phtml')); |
| | 699 | $_form = file_get_contents(TRAX_ROOT |
| | 700 | . 'views/admin/membership/_form.phtml'); |
| | 701 | $this->assertContains('PersonName', $_form); |
| | 702 | $this->assertNotContains('Error:', $_form); |
| | 703 | $this->assertNotContains('Notice:', $_form); |
| | 704 | |
| | 705 | $this->assertTrue(is_file(TRAX_ROOT |
| | 706 | . 'views/admin/membership/index.phtml')); |
| | 707 | $index = file_get_contents(TRAX_ROOT |
| | 708 | . 'views/admin/membership/index.phtml'); |
| | 709 | $this->assertContains('Listing PersonNames', $index); |
| | 710 | $this->assertNotContains('Error:', $index); |
| | 711 | $this->assertNotContains('Notice:', $index); |
| | 712 | |
| | 713 | $this->assertTrue(is_file(TRAX_ROOT |
| | 714 | . 'views/admin/membership/show.phtml')); |
| | 715 | $show = file_get_contents(TRAX_ROOT |
| | 716 | . 'views/admin/membership/show.phtml'); |
| | 717 | $this->assertContains('PersonName', $show); |
| | 718 | $this->assertNotContains('Error:', $show); |
| | 719 | $this->assertNotContains('Notice:', $show); |
| | 720 | |
| | 721 | // verify layout |
| | 722 | $this->assertTrue(is_file(TRAX_ROOT |
| | 723 | . 'views/layouts/admin/membership.phtml')); |
| | 724 | $layout = file_get_contents(TRAX_ROOT |
| | 725 | . 'views/layouts/admin/membership.phtml'); |
| | 726 | $this->assertContains('membership', $layout); |
| | 727 | } |
| | 728 | |
| | 729 | /** |
| | 730 | * Test fix_php_brackets() |
| | 731 | */ |
| | 732 | public function testFix_php_brackets() { |
| | 733 | $tg = new TraxGenerator; |
| | 734 | $this->assertEquals($tg->fix_php_brackets('< ?php foo ? >'), |
| | 735 | '<?php foo ?>'); |
| 70 | | // Remove the following line when you implement this test. |
| 71 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 72 | | } |
| 73 | | |
| 74 | | /** |
| 75 | | * @todo Implement testGenerate_controller(). |
| 76 | | */ |
| 77 | | public function testGenerate_controller() { |
| 78 | | // Remove the following line when you implement this test. |
| 79 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 80 | | } |
| 81 | | |
| 82 | | /** |
| 83 | | * @todo Implement testGenerate_model(). |
| 84 | | */ |
| 85 | | public function testGenerate_model() { |
| 86 | | // Remove the following line when you implement this test. |
| 87 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 88 | | } |
| 89 | | |
| 90 | | /** |
| 91 | | * @todo Implement testGenerate_scaffold(). |
| 92 | | */ |
| 93 | | public function testGenerate_scaffold() { |
| 94 | | // Remove the following line when you implement this test. |
| 95 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 96 | | } |
| 97 | | |
| 98 | | /** |
| 99 | | * @todo Implement testCreate_controller(). |
| 100 | | */ |
| 101 | | public function testCreate_controller() { |
| 102 | | // Remove the following line when you implement this test. |
| 103 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 104 | | } |
| 105 | | |
| 106 | | /** |
| 107 | | * @todo Implement testCreate_helper(). |
| 108 | | */ |
| 109 | | public function testCreate_helper() { |
| 110 | | // Remove the following line when you implement this test. |
| 111 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 112 | | } |
| 113 | | |
| 114 | | /** |
| 115 | | * @todo Implement testCreate_view(). |
| 116 | | */ |
| 117 | | public function testCreate_view() { |
| 118 | | // Remove the following line when you implement this test. |
| 119 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 120 | | } |
| 121 | | |
| 122 | | /** |
| 123 | | * @todo Implement testExec(). |
| 124 | | */ |
| 125 | | public function testExec() { |
| 126 | | // Remove the following line when you implement this test. |
| 127 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 128 | | } |
| 129 | | |
| 130 | | /** |
| 131 | | * @todo Implement testFix_php_brackets(). |
| 132 | | */ |
| 133 | | public function testFix_php_brackets() { |
| 134 | | // Remove the following line when you implement this test. |
| 135 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 136 | | } |
| 137 | | |
| 138 | | /** |
| 139 | | * @todo Implement testController_help(). |
| 140 | | */ |
| 141 | | public function testController_help() { |
| 142 | | // Remove the following line when you implement this test. |
| 143 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 144 | | } |
| 145 | | |
| 146 | | /** |
| 147 | | * @todo Implement testModel_help(). |
| 148 | | */ |
| 149 | | public function testModel_help() { |
| 150 | | // Remove the following line when you implement this test. |
| 151 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 152 | | } |
| 153 | | |
| 154 | | /** |
| 155 | | * @todo Implement testScaffold_help(). |
| 156 | | */ |
| 157 | | public function testScaffold_help() { |
| 158 | | // Remove the following line when you implement this test. |
| 159 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| 160 | | } |
| 161 | | |
| 162 | | /** |
| 163 | | * @todo Implement testGenerator_help(). |
| 164 | | */ |
| 165 | | public function testGenerator_help() { |
| 166 | | // Remove the following line when you implement this test. |
| 167 | | throw new PHPUnit2_Framework_IncompleteTestError; |
| | 742 | |
| | 743 | // Verify that no command produces usage message |
| | 744 | $tg = new TraxGenerator; |
| | 745 | ob_start(); |
| | 746 | $tg->run(); // should produce a usage |
| | 747 | $result = ob_get_clean(); |
| | 748 | $this->assertContains('Usage', $result); |
| | 749 | |
| | 750 | // Verify that unknown command produces usage message |
| | 751 | $_SERVER['argv'][1] = 'foo'; |
| | 752 | $tg = new TraxGenerator; |
| | 753 | ob_start(); |
| | 754 | $tg->run(); // should produce a usage |
| | 755 | $result = ob_get_clean(); |
| | 756 | $this->assertContains('Usage', $result); |
| | 757 | |
| | 758 | // Generate a CreditCard model |
| | 759 | $_SERVER['argv'][1] = 'model'; |
| | 760 | $_SERVER['argv'][2] = 'CreditCard'; |
| | 761 | $tg = new TraxGenerator; |
| | 762 | ob_start(); |
| | 763 | $tg->run(); |
| | 764 | $output = ob_get_clean(); |
| | 765 | $this->assertContains('created', $output); |
| | 766 | $this->assertTrue(is_file(TRAX_ROOT . 'models/credit_card.php')); |
| | 767 | |
| | 768 | // Generate a mumble controller with no views |
| | 769 | $_SERVER['argv'][1] = 'controller'; |
| | 770 | $_SERVER['argv'][2] = 'mumble'; |
| | 771 | $tg = new TraxGenerator; |
| | 772 | ob_start(); |
| | 773 | $tg->run(); |
| | 774 | $output = ob_get_clean(); |
| | 775 | $this->assertContains('created', $output); |
| | 776 | $this->assertTrue(is_file(TRAX_ROOT |
| | 777 | . 'controllers/mumble_controller.php')); |
| | 778 | $this->assertTrue(is_file(TRAX_ROOT |
| | 779 | . 'helpers/mumble_helper.php')); |
| | 780 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/mumble')); |
| | 781 | |
| | 782 | |
| | 783 | // Generate a PersonName/membership scaffold |
| | 784 | $_SERVER['argv'][1] = 'scaffold'; |
| | 785 | $_SERVER['argv'][2] = 'PersonName'; |
| | 786 | $_SERVER['argv'][3] = 'membership'; |
| | 787 | $tg = new TraxGenerator; |
| | 788 | ob_start(); |
| | 789 | $tg->run(); |
| | 790 | $output = ob_get_clean(); |
| | 791 | $this->assertContains('created', $output); |
| | 792 | $this->assertNotContains('Error:', $output); |
| | 793 | $this->assertNotContains('Notice:', $output); |
| | 794 | |
| | 795 | // verify controller |
| | 796 | $this->assertTrue(is_file(TRAX_ROOT |
| | 797 | . 'controllers/membership_controller.php')); |
| | 798 | |
| | 799 | // verify model |
| | 800 | $this->assertTrue(is_file(TRAX_ROOT |
| | 801 | . 'models/person_name.php')); |
| | 802 | |
| | 803 | // verify helper |
| | 804 | $this->assertTrue(is_file(TRAX_ROOT |
| | 805 | . 'helpers/membership_helper.php')); |
| | 806 | |
| | 807 | // verify views |
| | 808 | $this->assertTrue(is_dir(TRAX_ROOT . 'views/membership')); |
| | 809 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/add.phtml')); |
| | 810 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/edit.phtml')); |
| | 811 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/_form.phtml')); |
| | 812 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/index.phtml')); |
| | 813 | $this->assertTrue(is_file(TRAX_ROOT . 'views/membership/show.phtml')); |
| | 814 | |
| | 815 | // verify layout |
| | 816 | $this->assertTrue(is_file(TRAX_ROOT |
| | 817 | . 'views/layouts/membership.phtml')); |