Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php
Строк: 161
<?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 SymfonyBridgeDoctrineTestsDataCollector;

use 
DoctrineDBALPlatformsMySqlPlatform;
use 
SymfonyBridgeDoctrineDataCollectorDoctrineDataCollector;
use 
SymfonyComponentHttpFoundationRequest;
use 
SymfonyComponentHttpFoundationResponse;

class 
DoctrineDataCollectorTest extends PHPUnit_Framework_TestCase
{
    public function 
testCollectConnections()
    {
        
$c $this->createCollector(array());
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(array('default' => 'doctrine.dbal.default_connection'), $c->getConnections());
    }

    public function 
testCollectManagers()
    {
        
$c $this->createCollector(array());
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(array('default' => 'doctrine.orm.default_entity_manager'), $c->getManagers());
    }

    public function 
testCollectQueryCount()
    {
        
$c $this->createCollector(array());
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(0$c->getQueryCount());

        
$queries = array(
            array(
'sql' => "SELECT * FROM table1"'params' => array(), 'types' => array(), 'executionMS' => 0),
        );
        
$c $this->createCollector($queries);
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(1$c->getQueryCount());
    }

    public function 
testCollectTime()
    {
        
$c $this->createCollector(array());
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(0$c->getTime());

        
$queries = array(
            array(
'sql' => "SELECT * FROM table1"'params' => array(), 'types' => array(), 'executionMS' => 1),
        );
        
$c $this->createCollector($queries);
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(1$c->getTime());

        
$queries = array(
            array(
'sql' => "SELECT * FROM table1"'params' => array(), 'types' => array(), 'executionMS' => 1),
            array(
'sql' => "SELECT * FROM table2"'params' => array(), 'types' => array(), 'executionMS' => 2),
        );
        
$c $this->createCollector($queries);
        
$c->collect(new Request(), new Response());
        
$this->assertEquals(3$c->getTime());
    }

    
/**
     * @dataProvider paramProvider
     */
    
public function testCollectQueries($param$types$expected$explainable)
    {
        
$queries = array(
            array(
'sql' => "SELECT * FROM table1 WHERE field1 = ?1"'params' => array($param), 'types' => $types'executionMS' => 1),
        );
        
$c $this->createCollector($queries);
        
$c->collect(new Request(), new Response());

        
$collected_queries $c->getQueries();
        
$this->assertEquals($expected$collected_queries['default'][0]['params'][0]);
        
$this->assertEquals($explainable$collected_queries['default'][0]['explainable']);
    }

    
/**
     * @dataProvider paramProvider
     */
    
public function testSerialization($param$types$expected$explainable)
    {
        
$queries = array(
            array(
'sql' => "SELECT * FROM table1 WHERE field1 = ?1"'params' => array($param), 'types' => $types'executionMS' => 1),
        );
        
$c $this->createCollector($queries);
        
$c->collect(new Request(), new Response());
        
$c unserialize(serialize($c));

        
$collected_queries $c->getQueries();
        
$this->assertEquals($expected$collected_queries['default'][0]['params'][0]);
        
$this->assertEquals($explainable$collected_queries['default'][0]['explainable']);
    }

    public function 
paramProvider()
    {
        return array(
            array(
'some value', array(), 'some value'true),
            array(
1, array(), 1true),
            array(
true, array(), truetrue),
            array(
null, array(), nulltrue),
            array(new 
DateTime('2011-09-11'), array('date'), '2011-09-11'true),
            array(
fopen(__FILE__'r'), array(), 'Resource(stream)'false),
            array(new 
SplFileInfo(__FILE__), array(), 'Object(SplFileInfo)'false),
        );
    }

    private function 
createCollector($queries)
    {
        
$connection $this->getMockBuilder('DoctrineDBALConnection')
            ->
disableOriginalConstructor()
            ->
getMock();
        
$connection->expects($this->any())
            ->
method('getDatabasePlatform')
            ->
will($this->returnValue(new MySqlPlatform()));

        
$registry $this->getMock('DoctrineCommonPersistenceManagerRegistry');
        
$registry
                
->expects($this->any())
                ->
method('getConnectionNames')
                ->
will($this->returnValue(array('default' => 'doctrine.dbal.default_connection')));
        
$registry
                
->expects($this->any())
                ->
method('getManagerNames')
                ->
will($this->returnValue(array('default' => 'doctrine.orm.default_entity_manager')));
        
$registry->expects($this->any())
            ->
method('getConnection')
            ->
will($this->returnValue($connection));

        
$logger $this->getMock('DoctrineDBALLoggingDebugStack');
        
$logger->queries $queries;

        
$collector = new DoctrineDataCollector($registry);
        
$collector->addLogger('default'$logger);

        return 
$collector;
    }
}
Онлайн: 0
Реклама