FileTest.php #1

  • //
  • guest/
  • perforce_software/
  • chronicle/
  • main/
  • tests/
  • phpunit/
  • P4Cms/
  • AssetHandler/
  • FileTest.php
  • View
  • Commits
  • Open Download .zip Download (5 KB)
<?php
/**
 * Test File based Asset Handler.
 *
 * @copyright   2011 Perforce Software. All rights reserved.
 * @license     Please see LICENSE.txt in top-level folder of this distribution.
 * @version     <release>/<patch>
 */
class P4Cms_AssetHandler_FileTest extends TestCase
{
    /**
     * test constructor with and without options
     */
    public function testConstructor()
    {
        $handler = new P4Cms_AssetHandler_File;
        
        $this->assertSame(
            null,
            $handler->getOutputPath(),
            'output path starting value'
        );
        $this->assertSame(
            BASE_PATH,
            $handler->getBasePath(),
            'base path starting value'
        );
        
        $handler = new P4Cms_AssetHandler_File(
            array(
                'outputPath' => '/output/path',
                'basePath'   => '/base/path'
            )
        );
        
        $this->assertSame(
            '/output/path',
            $handler->getOutputPath(),
            'output path custom value'
        );
        $this->assertSame(
            '/base/path',
            $handler->getBasePath(),
            'base path custom value'
        );
    }
    
    /**
     * test get/set base path
     */
    public function testGetSetBasePath()
    {
        $handler = new P4Cms_AssetHandler_File;
        
        $this->assertSame(
            BASE_PATH,
            $handler->getBasePath(),
            'base path starting value'
        );
        
        $handler->setBasePath('/test/path');
        $this->assertSame(
            '/test/path',
            $handler->getBasePath(),
            'base path second value'
        );
        
        $handler->setBasePath(null);
        $this->assertSame(
            BASE_PATH,
            $handler->getBasePath(),
            'base path third value'
        );
    }
    
    /**
     * test invalid base path
     * 
     * @expectedException InvalidArgumentException
     */
    public function testInvalidBasePath()
    {
        $handler = new P4Cms_AssetHandler_File(array('basePath' => 12));
    }
    
    /**
     * test get/set output path
     */
    public function testGetSetOutputPath()
    {
        $handler = new P4Cms_AssetHandler_File;
        
        $this->assertSame(
            null,
            $handler->getOutputPath(),
            'output path starting value'
        );
        
        $handler->setOutputPath('/test/path');
        $this->assertSame(
            '/test/path',
            $handler->getOutputPath(),
            'output path second value'
        );
        
        $handler->setOutputPath(null);
        $this->assertSame(
            null,
            $handler->getOutputPath(),
            'output path third value'
        );
    }
    
    /**
     * test invalid output path
     * 
     * @expectedException InvalidArgumentException
     */
    public function testInvalidOutputPath()
    {
        $handler = new P4Cms_AssetHandler_File(array('outputPath' => 12));
    }
    
    /**
     * test exists
     */
    public function testExists()
    {
        $id      = 'foo';
        $handler = new P4Cms_AssetHandler_File;

        $this->assertFalse($handler->exists($id), 'no output path');
        
        $handler->setOutputPath(TEST_DATA_PATH . '/resources');
        $this->assertFalse($handler->exists($id), 'output path no file');
        
        touch($handler->getOutputPath() . '/' . $id);
        $this->assertTrue($handler->exists($id), 'output path with manual file');
    }
    
    /**
     * test put
     */
    public function testPut()
    {
        $id      = 'foo';
        $handler = new P4Cms_AssetHandler_File;
        $handler->setOutputPath(TEST_DATA_PATH . '/resources');

        $this->assertFalse($handler->exists($id), 'output path no file');
        
        $handler->put($id, "test");
        $this->assertTrue($handler->exists($id), 'output path with file');

        $this->assertSame('test', file_get_contents(TEST_DATA_PATH . "/resources/$id"), 'contents');
    }
    
    /**
     * test uri
     */
    public function testUri()
    {
        $front   = Zend_Controller_Front::getInstance();
        $request = new Zend_Controller_Request_Http;
        $handler = new P4Cms_AssetHandler_File;

        $request->setBaseUrl('/base');
        $front->setRequest($request);

        $this->assertFalse($handler->uri('foo'), 'no output path');
        
        $handler->setOutputPath(TEST_DATA_PATH . "/resources");
        
        $path  = '/base' . preg_replace('#.*(/tests/data/[0-9]+)#', '$1', TEST_DATA_PATH);
        $path .= '/resources/foo';
        $this->assertSame($path, $handler->uri('foo'), 'with output path');
        
        $handler->setBasePath(TEST_DATA_PATH);
        $this->assertSame('/base/resources/foo', $handler->uri('foo'), 'with output path and base path');

        $request->setBaseUrl('');
        $this->assertSame('/resources/foo', $handler->uri('foo'), 'empty request basepath');
    }

    /**
     * test is offsite
     */
    public function testIsOffsite()
    {
        $handler = new P4Cms_AssetHandler_File;
        $this->assertFalse($handler->isOffsite());
    }
}
# Change User Description Committed
#1 16170 perforce_software Move Chronicle files to follow new path scheme for branching.
//guest/perforce_software/chronicle/tests/phpunit/P4Cms/AssetHandler/FileTest.php
#1 8972 Matt Attaway Initial add of the Chronicle source code