Вход Регистрация
Файл: gapps/vendor/symfony/routing/Tests/Loader/ObjectRouteLoaderTest.php
Строк: 106
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentRoutingTestsLoader;

use 
SymfonyComponentRoutingLoaderObjectRouteLoader;
use 
SymfonyComponentRoutingRoute;
use 
SymfonyComponentRoutingRouteCollection;

class 
ObjectRouteLoaderTest extends PHPUnit_Framework_TestCase
{
    public function 
testLoadCallsServiceAndReturnsCollection()
    {
        
$loader = new ObjectRouteLoaderForTest();

        
// create a basic collection that will be returned
        
$collection = new RouteCollection();
        
$collection->add('foo', new Route('/foo'));

        
$loader->loaderMap = array(
            
'my_route_provider_service' => new RouteService($collection),
        );

        
$actualRoutes $loader->load(
            
'my_route_provider_service:loadRoutes',
            
'service'
        
);

        
$this->assertSame($collection$actualRoutes);
        
// the service file should be listed as a resource
        
$this->assertNotEmpty($actualRoutes->getResources());
    }

    
/**
     * @expectedException InvalidArgumentException
     * @dataProvider getBadResourceStrings
     */
    
public function testExceptionWithoutSyntax($resourceString)
    {
        
$loader = new ObjectRouteLoaderForTest();
        
$loader->load($resourceString);
    }

    public function 
getBadResourceStrings()
    {
        return array(
            array(
'Foo'),
            array(
'Bar::baz'),
            array(
'Foo:Bar:baz'),
        );
    }

    
/**
     * @expectedException LogicException
     */
    
public function testExceptionOnNoObjectReturned()
    {
        
$loader = new ObjectRouteLoaderForTest();
        
$loader->loaderMap = array('my_service' => 'NOT_AN_OBJECT');
        
$loader->load('my_service:method');
    }

    
/**
     * @expectedException BadMethodCallException
     */
    
public function testExceptionOnBadMethod()
    {
        
$loader = new ObjectRouteLoaderForTest();
        
$loader->loaderMap = array('my_service' => new stdClass());
        
$loader->load('my_service:method');
    }

    
/**
     * @expectedException LogicException
     */
    
public function testExceptionOnMethodNotReturningCollection()
    {
        
$service $this->getMockBuilder('stdClass')
            ->
setMethods(array('loadRoutes'))
            ->
getMock();
        
$service->expects($this->once())
            ->
method('loadRoutes')
            ->
will($this->returnValue('NOT_A_COLLECTION'));

        
$loader = new ObjectRouteLoaderForTest();
        
$loader->loaderMap = array('my_service' => $service);
        
$loader->load('my_service:loadRoutes');
    }
}

class 
ObjectRouteLoaderForTest extends ObjectRouteLoader
{
    public 
$loaderMap = array();

    protected function 
getServiceObject($id)
    {
        return isset(
$this->loaderMap[$id]) ? $this->loaderMap[$id] : null;
    }
}

class 
RouteService
{
    private 
$collection;

    public function 
__construct($collection)
    {
        
$this->collection $collection;
    }

    public function 
loadRoutes()
    {
        return 
$this->collection;
    }
}
Онлайн: 0
Реклама