Changeset 195 for trunk/trax/test

Show
Ignore:
Timestamp:
04/03/06 16:27:26 (6 years ago)
Author:
haas
Message:

docs, test trax_generator

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/trax/test/TraxGeneratorTest.php

    r192 r195  
    1414echo "testing TraxGenerator\n"; 
    1515require_once 'testenv.php'; 
     16require_once 'inflector.php'; 
    1617 
    1718// Call TraxGeneratorTest::main() if this source file is executed directly. 
     
    2627require_once "PHPUnit2/Framework/IncompleteTestError.php"; 
    2728 
     29static $tmpdir;            // temporary directory 
     30 
     31//  Create a temporary directory to receive generated files 
     32//  @todo <b>FIXME:</b> Is this platform independent? 
     33do { 
     34    $tmpdir = '/tmp/traxtest' . mt_rand(0, 99999999) . '/'; 
     35 } while (!mkdir($tmpdir,0700)); 
     36define('TRAX_ROOT', $tmpdir); 
     37 
     38define('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')); 
     58require_once "DB.php"; 
     59$db =&  DB::Connect($GLOBALS['TRAX_DB_SETTINGS']['test'], 
     60                    array('persistent' => true)); 
     61if (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 
     67define('TRAX_VIEWS_EXTENTION', 'phtml'); 
     68 
    2869require_once "trax_generator.php"; 
     70require_once "action_view/helpers.php"; 
     71require_once "action_view/helpers/active_record_helper.php"; 
     72require_once "active_record.php"; 
     73require_once "trax_exceptions.php"; 
     74 
     75/** 
     76 *  When a class is referenced, get it from app/models 
     77 */ 
     78function __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} 
    2990 
    3091/** 
     
    3394 */ 
    3495class TraxGeneratorTest extends PHPUnit2_Framework_TestCase { 
     96 
     97 
    3598    /** 
    3699     * Runs the test methods of this class. 
     
    47110 
    48111    /** 
    49      * Sets up the fixture, for example, open a network connection. 
    50      * This method is called before a test is executed. 
     112     *  Set up dummy Trax work area 
    51113     * 
    52      * @access protected 
     114     *  Create a dummy Trax work area in the temporary directory 
     115     *  @access protected 
    53116     */ 
    54117    protected function setUp() { 
    55     } 
    56  
    57     /** 
    58      * Tears down the fixture, for example, close a network connection. 
    59      * This method is called after a test is executed. 
     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 
    60128     * 
    61      * @access protected 
     129     *  @access protected 
    62130     */ 
    63131    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('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 ?>'); 
    64736    } 
    65737 
     
    68740     */ 
    69741    public function testRun() { 
    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')); 
    168818    } 
    169819} 
     
    173823    TraxGeneratorTest::main(); 
    174824} 
     825 
     826//  Clean up temp directory when done 
     827rmdir(TRAX_ROOT); 
    175828 
    176829// -- set Emacs parameters --