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

Source for file TraxGeneratorTest.php

Documentation is available at TraxGeneratorTest.php

  1. <?php
  2. /**
  3.  *  File for the TraxGeneratorTest class
  4.  *
  5.  * (PHP 5)
  6.  *
  7.  * @package PHPonTraxTest
  8.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  9.  * @copyright (c) Walter O. Haas 2006
  10.  * @version $Id: TraxGeneratorTest.php 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(099999999);
  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. }
  814.  
  815. //  Clean up temp directory when done
  816.  
  817. // -- set Emacs parameters --
  818. // Local variables:
  819. // tab-width: 4
  820. // c-basic-offset: 4
  821. // c-hanging-comment-ender-p: nil
  822. // indent-tabs-mode: nil
  823. // End:
  824. ?>

Documentation generated on Mon, 21 May 2007 22:29:25 -0600 by phpDocumentor 1.3.2