Location: PHPKode > projects > PHP on Trax > johnpipi-trax-f599562/trax/test/ActionControllerTest.php
<?php
/**
 *  File for the ActionControllerTest class
 *
 * (PHP 5)
 *
 * @package PHPonTraxTest
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @copyright (c) Walter O. Haas 2006
 * @version $Id$
 * @author Walt Haas <hide@address.com>
 */

echo "testing ActionController\n";

//  root Trax files in the test directory
define("TRAX_ROOT", dirname(__FILE__));

require_once 'testenv.php';

// Call ActionControllerTest::main() if this source file is executed directly.
if (!defined("PHPUnit2_MAIN_METHOD")) {
    define("PHPUnit2_MAIN_METHOD", "ActionControllerTest::main");
}

require_once "PHPUnit2/Framework/TestCase.php";
require_once "PHPUnit2/Framework/TestSuite.php";

// You may remove the following line when all tests have been implemented.
require_once "PHPUnit2/Framework/IncompleteTestError.php";

require_once "router.php";
require_once "inflector.php";
require_once "trax_exceptions.php";
require_once "action_controller.php";

/**
 * Test class for ActionController.
 * Generated by PHPUnit2_Util_Skeleton on 2006-03-01 at 13:16:01.
 */
class ActionControllerTest extends PHPUnit2_Framework_TestCase {
    /**
     * Runs the test methods of this class.
     *
     * @access public
     * @static
     */
    public static function main() {
        require_once "PHPUnit2/TextUI/TestRunner.php";

        $suite  = new PHPUnit2_Framework_TestSuite("ActionControllerTest");
        $result = PHPUnit2_TextUI_TestRunner::run($suite);
    }

    /**
     * Sets up the fixture, for example, open a network connection.
     * This method is called before a test is executed.
     *
     * @access protected
     */
    protected function setUp() {
    }

    /**
     * Tears down the fixture, for example, close a network connection.
     * This method is called after a test is executed.
     *
     * @access protected
     */
    protected function tearDown() {
    }

    /**
     * @todo Implement test__construct().
     *  The constructor calls load_router() to load
     *  routes from config/routes.php
     */
    public function test__construct() {
        $ac = new ActionController;
        $this->assertTrue(is_object($ac->router));
    }

    /**
     *  Test recognize_route().
     *  recognize_route() sets up a lot of private variables that we
     *  don't have access to so we can't test it very thoroughly here
     */
    public function testRecognize_route() {
        //  read routes from config/routes.php
        $ac = new ActionController;
        //  this URL doesn't match any route
        $_SERVER['REDIRECT_URL'] = '/~haas/foo/bar';
        $this->assertFalse($ac->recognize_route());
        //  this URL matches but the controller doesn't exist
        $_SERVER['REDIRECT_URL'] = '/~haas/nocontroller/foo/bar';
        $this->assertFalse($ac->recognize_route());
        //  this URL matches and the controller is where it should be
        $_SERVER['REDIRECT_URL'] = '/~haas/products/bar';
        $this->assertTrue($ac->recognize_route());
    }

    /**
     *  Test raise() with default value of code
     */
    public function testRaise_default_code() {
        $ac = new ActionController;
        try {
            $ac->raise('text1','text2');
        }
        catch(Exception $e) {
            $this->assertTrue(is_a($e,'ActionControllerError'));
            $this->assertEquals('Error Message: text1',$e->getMessage());
            $this->assertEquals('Error Message: text1',$e->error_message);
            $this->assertEquals('text2',$e->error_heading);
            $this->assertEquals('404',$e->error_code);
            return;
        }
        $this->fail('raise() exception with default code not raised');
    }

    /**
     *  Test raise() with specified of code
     */
    public function testSpecified_code() {
        $ac = new ActionController;
        try {
            $ac->raise('text3','text4', 250);
        }
        catch(Exception $e) {
            $this->assertTrue(is_a($e,'ActionControllerError'));
            $this->assertEquals('Error Message: text3',$e->getMessage());
            $this->assertEquals('Error Message: text3',$e->error_message);
            $this->assertEquals('text4',$e->error_heading);
            $this->assertEquals(250,$e->error_code);
            return;
        }
        $this->fail('raise() exception with code 250 not raised');
    }

    /**
     *  Test process_route() with an unrecognized route
     */
    public function testProcess_route_unrecognized() {
        //  read routes from config/routes.php
        $ac = new ActionController;
        //  this URL doesn't match any route
        $_SERVER['REDIRECT_URL'] = '/~haas/foo/bar';
        try {
            $ac->process_route();
        }
        catch(Exception $e) {
            $this->assertTrue(is_a($e,'ActionControllerError'));
            $this->assertEquals('Error Message: Failed to load any'
                                .' defined routes',$e->getMessage());
            $this->assertEquals('Error Message: Failed to load any'
                                .' defined routes',$e->error_message);
            $this->assertEquals('Controller foo not found',
                                $e->error_heading);
            $this->assertEquals('404',$e->error_code);
            return;
        }
        $this->fail('raise() exception with default code not raised');
    }

    /**
     *  Test process_route() with missing controller file
     */
    public function testProcess_route_missing_controller() {
        //  read routes from config/routes.php
        $ac = new ActionController;
        //  this URL matches default route
        $_SERVER['REDIRECT_URL'] = '/~haas/nocontroller/foo/bar';
        try {
            $ac->process_route();
        }
        catch(Exception $e) {
            $this->assertTrue(is_a($e,'ActionControllerError'));
            $this->assertEquals('Error Message: Failed to load any'
                               .' defined routes',$e->getMessage());
            $this->assertEquals('Error Message: Failed to load any'
                               .' defined routes',$e->error_message);
            $this->assertEquals('Controller nocontroller not found',
                                $e->error_heading);
            $this->assertEquals('404',$e->error_code);
            return;
        }
        $this->fail('process_route() missing controller file'
                    .' exception not raised');
    }

    /**
     *  Test process_route() with missing controller class
     */
    public function testProcess_route_missing_class() {
        //  read routes from config/routes.php
        $ac = new ActionController;
        //  this URL matches default route, but the controller
        //  file doesn't have a Noclass class
        $_SERVER['REDIRECT_URL'] = '/~haas/noclass/foo/bar';
        try {
            $ac->process_route();
        }
        catch(Exception $e) {
            return;
            $this->assertTrue(is_a($e,'ActionControllerError'));
            $this->assertEquals('Error Message: Failed to instantiate'
                               .' controller object "noclass"',
                                $e->getMessage());
            $this->assertEquals('Error Message: Failed to instantiate'
                               .' controller object "noclass"',
                                $e->error_message);
            $this->assertEquals('ActionController error',
                                $e->error_heading);
            $this->assertEquals('500',$e->error_code);
            return;
        }
        $this->fail('process_route() missing class exception not raised');
    }

    /**
     * @todo Implement testProcess_route().
     */
//    public function testProcess_route() {
//        $ac = new ActionController;
//        //  should invoke CatalogController
//        $_SERVER['REDIRECT_URL'] = '/~haas/products/bar';
//        $ac->process_route();
//        // Remove the following line when you implement this test.
//        throw new PHPUnit2_Framework_IncompleteTestError;
//    }

    /**
     *  FIXME: need controllers with layout undefined, layout=null,
     *  layout=false, layout=file, layout=method
     * @todo Implement testDetermine_layout().
     */
    public function testDetermine_layout() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement test__set().
     */
    public function test__set() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement test__call().
     */
    public function test__call() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testSet_paths().
     */
    public function testSet_paths() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testExecute_before_filters().
     */
    public function testExecute_before_filters() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testAdd_before_filter().
     */
    public function testAdd_before_filter() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testExecute_after_filters().
     */
    public function testExecute_after_filters() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testAdd_after_filter().
     */
    public function testAdd_after_filter() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testAdd_helper().
     */
    public function testAdd_helper() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testRender_partial().
     */
    public function testRender_partial() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testRedirect_to().
     */
    public function testRedirect_to() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }

    /**
     * @todo Implement testProcess_with_exception().
     */
    public function testProcess_with_exception() {
        // Remove the following line when you implement this test.
        throw new PHPUnit2_Framework_IncompleteTestError;
    }
}

// Call ActionControllerTest::main() if this source file is executed directly.
if (PHPUnit2_MAIN_METHOD == "ActionControllerTest::main") {
    ActionControllerTest::main();
}

// -- set Emacs parameters --
// Local variables:
// tab-width: 4
// c-basic-offset: 4
// c-hanging-comment-ender-p: nil
// indent-tabs-mode: nil
// End:
?>
Return current item: PHP on Trax