mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2025-10-14 00:44:23 -05:00
Begin Refactor
This commit is contained in:
256
vendor/gabordemooij/redbean/testing/RedUNIT/Base/Logging.php
vendored
Normal file
256
vendor/gabordemooij/redbean/testing/RedUNIT/Base/Logging.php
vendored
Normal file
@@ -0,0 +1,256 @@
|
||||
<?php
|
||||
|
||||
namespace RedUNIT\Base;
|
||||
|
||||
use RedUNIT\Base as Base;
|
||||
use RedBeanPHP\Facade as R;
|
||||
use RedBeanPHP\Logger as Logger;
|
||||
use RedBeanPHP\Logger\RDefault as RDefault;
|
||||
use RedBeanPHP\Logger\RDefault\Debug as Debug;
|
||||
|
||||
/**
|
||||
* Logging
|
||||
*
|
||||
* Tests the Query Logging tools that are part of RedBeanPHP.
|
||||
*
|
||||
* @file RedUNIT/Base/Logging.php
|
||||
* @desc Tests Logging facilities.
|
||||
* @author Gabor de Mooij and the RedBeanPHP Community
|
||||
* @license New BSD/GPLv2
|
||||
*
|
||||
* (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community.
|
||||
* This source file is subject to the New BSD/GPLv2 License that is bundled
|
||||
* with this source code in the file license.txt.
|
||||
*/
|
||||
class Logging extends Base
|
||||
{
|
||||
/**
|
||||
* Test basic logging functionality.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testBasicLogging()
|
||||
{
|
||||
R::nuke();
|
||||
R::startLogging();
|
||||
R::store( R::dispense( 'book' ) );
|
||||
$logs = R::getLogs();
|
||||
$count = count( $logs );
|
||||
asrt( ( count( $logs ) > 0 ), TRUE );
|
||||
asrt( ( R::getLogger() instanceof Logger ), TRUE );
|
||||
R::stopLogging();
|
||||
R::store( R::dispense( 'book' ) );
|
||||
$logs = R::getLogs();
|
||||
asrt( ( count( $logs ) === 0 ), TRUE );
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for Issue #751 (Update Logger to accept parameter typed bindings):
|
||||
* While debugging some of our queries, we noticed
|
||||
* the logger would often display
|
||||
* 'Array' as value for the bindings,
|
||||
* even when the SQL query seemed to work correctly.
|
||||
* Debugging this, it appeared the debug logger did
|
||||
* not support the new parameter type bindings added in 5.3.
|
||||
* This merge request adds support for
|
||||
* the PDO::PARAM_INT and PDO::PARAM_STR
|
||||
* to the Debug logger, as well as a visible support
|
||||
* for the RPDO flagUseStringOnlyBinding flag.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testIssue751()
|
||||
{
|
||||
R::nuke();
|
||||
$debugger = new Debug;
|
||||
$database = R::getDatabaseAdapter()->getDatabase();
|
||||
$database->setLogger( $debugger );
|
||||
asrt( $database->getLogger(), $debugger );
|
||||
$database->setEnableLogging( TRUE );
|
||||
$debugger->setMode( RDefault::C_LOGGER_ARRAY );
|
||||
/* debug logger with nostringonlybinding should have unquoted ints */
|
||||
R::store( R::dispense( 'book' ) );
|
||||
R::getAll( 'SELECT * FROM book WHERE id < ?', array( array( 999, \PDO::PARAM_INT ) ) );
|
||||
asrt( count( $debugger->grep('999') ), 1 );
|
||||
asrt( count( $debugger->grep('\'999\'') ), 0 );
|
||||
asrt( count( $debugger->grep('rray') ), 0 );
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->clear();
|
||||
R::getAll( 'SELECT * FROM book WHERE id < ?', array( array( 999, \PDO::PARAM_STR ) ) );
|
||||
/* ...but quoted strings */
|
||||
asrt( count( $debugger->grep('\'999\'') ), 1 );
|
||||
asrt( count( $debugger->grep('rray') ), 0 );
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->clear();
|
||||
/* even if PARAM INT if stringonlybinding then override */
|
||||
$debugger->setUseStringOnlyBinding( TRUE );
|
||||
R::getAll( 'SELECT * FROM book WHERE id < ?', array( array( 999, \PDO::PARAM_INT ) ) );
|
||||
asrt( count( $debugger->grep('\'999\'') ), 1 );
|
||||
asrt( count( $debugger->grep('rray') ), 0 );
|
||||
/* if no type and stringonlybinding always quote */
|
||||
$debugger->clear();
|
||||
R::getAll( 'SELECT * FROM book WHERE id < ?', array( 999 ) );
|
||||
asrt( count( $debugger->grep('\'999\'') ), 1 );
|
||||
asrt( count( $debugger->grep('rray') ), 0 );
|
||||
/* a more closer inspection */
|
||||
/* log implicit INT param without StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( 123 ) );
|
||||
asrt( count( $debugger->grep('123') ), 1 );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 0 );
|
||||
/* log implicit STR param without StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( 'abc' ) );
|
||||
asrt( count( $debugger->grep('\'abc\'') ), 1 );
|
||||
/* log NULL param without StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( NULL ) );
|
||||
asrt( count( $debugger->grep('NULL') ), 1 );
|
||||
asrt( count( $debugger->grep('\'NULL\'') ), 0 );
|
||||
/* log explicit INT param without StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( 123, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('123') ), 1 );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 0 );
|
||||
/* log explicit STR param without StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( 'abc', \PDO::PARAM_STR ) );
|
||||
asrt( count( $debugger->grep('\'abc\'') ), 1 );
|
||||
/* log NULL with explicit param type without StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( NULL, \PDO::PARAM_STR ) );
|
||||
asrt( count( $debugger->grep('NULL') ), 1 );
|
||||
asrt( count( $debugger->grep('\'NULL\'') ), 0 );
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( NULL, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('NULL') ), 1 );
|
||||
asrt( count( $debugger->grep('\'NULL\'') ), 0 );
|
||||
/* log implicit INT param with StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->log(' Hello ? ', array( 123 ) );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 1 );
|
||||
/* log implicit STR param with StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->log(' Hello ? ', array( 'abc' ) );
|
||||
asrt( count( $debugger->grep('\'abc\'') ), 1 );
|
||||
/* log NULL param with StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->log(' Hello ? ', array( NULL ) );
|
||||
asrt( count( $debugger->grep('\'NULL\'') ), 1 );
|
||||
/* log explicit INT param with StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->log(' Hello ? ', array( 123, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 1 );
|
||||
/* log explicit STR param with StringOnly */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->log(' Hello ? ', array( 'abc', \PDO::PARAM_STR ) );
|
||||
asrt( count( $debugger->grep('\'abc\'') ), 1 );
|
||||
/* log NULL with explicit param type with StringOnly - remains just NULL */
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( NULL, \PDO::PARAM_STR ) );
|
||||
asrt( count( $debugger->grep('NULL') ), 1 );
|
||||
asrt( count( $debugger->grep('\'NULL\'') ), 0 );
|
||||
$debugger->clear();
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->log(' Hello ? ', array( NULL, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('NULL') ), 1 );
|
||||
asrt( count( $debugger->grep('\'NULL\'') ), 0 );
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
/* Does stringonly mode switch along with Database mode ? */
|
||||
$database->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->clear();
|
||||
$debugger->log(' Hello ? ', array( 123, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 1 );
|
||||
$database->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->clear();
|
||||
$debugger->log(' Hello ? ', array( 123, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 0 );
|
||||
asrt( count( $debugger->grep('123') ), 1 );
|
||||
$database->setUseStringOnlyBinding( TRUE );
|
||||
$debugger->clear();
|
||||
$debugger->log(' Hello ? ', array( 123, \PDO::PARAM_INT ) );
|
||||
asrt( count( $debugger->grep('\'123\'') ), 1 );
|
||||
$database->setUseStringOnlyBinding( FALSE );
|
||||
$debugger->setUseStringOnlyBinding( FALSE );
|
||||
}
|
||||
|
||||
/**
|
||||
* Can we manually set a logger and enable logging?
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCanSetLogger()
|
||||
{
|
||||
R::nuke();
|
||||
R::store( R::dispense( 'bean' ) );
|
||||
$logger = new RDefault;
|
||||
$logger->setMode( RDefault::C_LOGGER_ARRAY );
|
||||
$database = R::getDatabaseAdapter()->getDatabase();
|
||||
$database->setLogger( $logger );
|
||||
asrt( $database->getLogger(), $logger );
|
||||
$database->setEnableLogging( FALSE );
|
||||
$logs = $logger->getLogs();
|
||||
asrt( is_array( $logs ), TRUE );
|
||||
asrt( count( $logs ), 0 );
|
||||
$database->setEnableLogging( TRUE );
|
||||
$logs = $logger->getLogs();
|
||||
asrt( is_array( $logs ), TRUE );
|
||||
asrt( count( $logs ), 0 );
|
||||
R::findOne( 'bean' ); //writes 3 log entries
|
||||
$logs = $logger->getLogs();
|
||||
asrt( is_array( $logs ), TRUE );
|
||||
asrt( count( $logs ), 3 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Test query counter.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testQueryCount()
|
||||
{
|
||||
R::nuke();
|
||||
R::store( R::dispense( 'bean' ) );
|
||||
R::resetQueryCount();
|
||||
asrt( R::getQueryCount(), 0 );
|
||||
R::findOne( 'bean' );
|
||||
asrt( R::getQueryCount(), 1 );
|
||||
R::resetQueryCount();
|
||||
asrt( R::getQueryCount(), 0 );
|
||||
R::findOne( 'bean' );
|
||||
R::findOne( 'bean' );
|
||||
R::findOne( 'bean' );
|
||||
asrt( R::getQueryCount(), 0 );
|
||||
R::store( R::dispense( 'bean2' ) );
|
||||
R::resetQueryCount();
|
||||
R::findOne( 'bean' );
|
||||
R::findOne( 'bean2' );
|
||||
asrt( R::getQueryCount(), 2 );
|
||||
R::resetQueryCount();
|
||||
R::findOne( 'bean', ' id < 100' );
|
||||
R::findOne( 'bean', ' id < 101' );
|
||||
R::findOne( 'bean', ' id < 102' );
|
||||
R::findOne( 'bean', ' id < 103' );
|
||||
asrt( R::getQueryCount(), 4 );
|
||||
R::findOne( 'bean', ' id < 100' );
|
||||
R::findOne( 'bean', ' id < 101' );
|
||||
R::findOne( 'bean', ' id < 102' );
|
||||
R::findOne( 'bean', ' id < 103' );
|
||||
asrt( R::getQueryCount(), 4 );
|
||||
R::findOne( 'bean', ' id < 104' );
|
||||
asrt( R::getQueryCount(), 5 );
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user