Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/symfony/console/Tests/Descriptor/AbstractDescriptorTest.php
Строк: 198
<?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 SymfonyComponentConsoleTestsDescriptor;

use 
SymfonyComponentConsoleApplication;
use 
SymfonyComponentConsoleCommandCommand;
use 
SymfonyComponentConsoleInputInputArgument;
use 
SymfonyComponentConsoleInputInputDefinition;
use 
SymfonyComponentConsoleInputInputOption;
use 
SymfonyComponentConsoleOutputBufferedOutput;

abstract class 
AbstractDescriptorTest extends PHPUnit_Framework_TestCase
{
    
/** @dataProvider getDescribeInputArgumentTestData */
    
public function testDescribeInputArgument(InputArgument $argument, $expectedDescription)
    {
        
$this->assertDescription($expectedDescription, $argument);
    }

    
/** @dataProvider getDescribeInputOptionTestData */
    
public function testDescribeInputOption(InputOption $option, $expectedDescription)
    {
        
$this->assertDescription($expectedDescription, $option);
    }

    
/** @dataProvider getDescribeInputDefinitionTestData */
    
public function testDescribeInputDefinition(InputDefinition $definition, $expectedDescription)
    {
        
$this->assertDescription($expectedDescription, $definition);
    }

    
/** @dataProvider getDescribeCommandTestData */
    
public function testDescribeCommand(Command $command, $expectedDescription)
    {
        
$this->assertDescription($expectedDescription, $command);
    }

    
/** @dataProvider getDescribeApplicationTestData */
    
public function testDescribeApplication(Application $application, $expectedDescription)
    {
        
// Replaces the dynamic placeholders of the command help text with a static version.
        // The placeholder %command.full_name% includes the script path that is not predictable
        // and can not be tested against.
        
foreach ($application->all() as $command) {
            
$command->setHelp(str_replace('%command.full_name%', 'app/console %command.name%', $command->getHelp()));
        }

        
$this->assertDescription($expectedDescription, $application);
    }

    public function 
getDescribeInputArgumentTestData()
    {
        return 
$this->getDescriptionTestData(ObjectsProvider::getInputArguments());
    }

    public function 
getDescribeInputOptionTestData()
    {
        return 
$this->getDescriptionTestData(ObjectsProvider::getInputOptions());
    }

    public function 
getDescribeInputDefinitionTestData()
    {
        return 
$this->getDescriptionTestData(ObjectsProvider::getInputDefinitions());
    }

    public function 
getDescribeCommandTestData()
    {
        return 
$this->getDescriptionTestData(ObjectsProvider::getCommands());
    }

    public function 
getDescribeApplicationTestData()
    {
        return 
$this->getDescriptionTestData(ObjectsProvider::getApplications());
    }

    abstract protected function 
getDescriptor();
    abstract protected function 
getFormat();

    private function 
getDescriptionTestData(array $objects)
    {
        
$data = array();
        foreach (
$objects as $name => $object) {
            
$description = file_get_contents(sprintf('%s/../Fixtures/%s.%s', __DIR__, $name, $this->getFormat()));
            
$data[] = array($object, $description);
        }

        return 
$data;
    }

    protected function 
assertDescription($expectedDescription, $describedObject)
    {
        
$output = new BufferedOutput(BufferedOutput::VERBOSITY_NORMAL, true);
        
$this->getDescriptor()->describe($output, $describedObject, array('raw_output' => true));
        
$this->assertEquals(trim($expectedDescription), trim(str_replace(PHP_EOL, "n", $output->fetch())));
    }
}
Онлайн: 2
Реклама