mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2025-10-15 01:14:24 -05:00
Begin Refactor
This commit is contained in:
103
vendor/gabordemooij/redbean/testing/RedUNIT/Base/Namedparams.php
vendored
Normal file
103
vendor/gabordemooij/redbean/testing/RedUNIT/Base/Namedparams.php
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace RedUNIT\Base;
|
||||
|
||||
use RedUNIT\Base as Base;
|
||||
use RedBeanPHP\Facade as R;
|
||||
|
||||
/**
|
||||
* Namedparams
|
||||
*
|
||||
* Tests whether we can use named parameters in queries and
|
||||
* SQL snippets.
|
||||
*
|
||||
* @file RedUNIT/Base/Namedparams.php
|
||||
* @desc Test whether you can use named parameters in SQL snippets.
|
||||
* @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 Namedparams extends Base
|
||||
{
|
||||
/**
|
||||
* Test usage of named parameters in SQL snippets.
|
||||
* Issue #299 on Github.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testNamedParamsInSnippets()
|
||||
{
|
||||
testpack( 'Test whether we can use named parameters in SQL snippets.' );
|
||||
R::nuke();
|
||||
$book = R::dispense( 'book' );
|
||||
$page = R::dispense( 'page' );
|
||||
$book->title = 'book';
|
||||
$book->sharedPage[] = $page;
|
||||
R::store($book);
|
||||
//should not give error like: Uncaught [HY093] - SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters
|
||||
$books = $page->withCondition(' title = :title ', array( ':title' => 'book' ) )->sharedBook;
|
||||
asrt( count( $books ), 1 );
|
||||
//should not give error...
|
||||
$books = $page->withCondition( ' title = :title ', array( ':title' => 'book' ) )->sharedBook;
|
||||
asrt( count( $books ), 1 );
|
||||
R::nuke();
|
||||
$book = R::dispense( 'book' );
|
||||
$page = R::dispense( 'page' );
|
||||
$book->title = 'book';
|
||||
$book->comment = 'comment';
|
||||
$page->title = 'page';
|
||||
$book->ownPage[] = $page;
|
||||
R::store( $book );
|
||||
//should also not give error..
|
||||
$count = $book->countOwn( 'page' );
|
||||
asrt( $count, 1 );
|
||||
$book = $book->fresh();
|
||||
//should also not give error..
|
||||
$count = $book->withCondition( ' title = ? ', array( 'page' ) )->countOwn( 'page' );
|
||||
asrt( $count, 1 );
|
||||
$book = $book->fresh();
|
||||
//should also not give error..
|
||||
$count = $book->withCondition( ' title = :title ', array( ':title' => 'page' ) )->countOwn( 'page' );
|
||||
asrt( $count, 1 );
|
||||
$book = $book->fresh();
|
||||
$pages = $book->withCondition( ' title = :title ', array( ':title' => 'page' ) )->ownPage;
|
||||
asrt( count( $pages ), 1 );
|
||||
//test with duplicate slots...
|
||||
$page = reset( $pages );
|
||||
$page2 = R::dispense( 'page' );
|
||||
$page2->ownPage[] = $page;
|
||||
R::store( $page2 );
|
||||
$page2 = $page2->fresh();
|
||||
$pages = $page2->withCondition( ' title = :title ', array( ':title' => 'page' ) )->ownPage;
|
||||
asrt( count( $pages ), 1 );
|
||||
//test with find()
|
||||
$books = R::getRedBean()->find( 'book',
|
||||
array(
|
||||
'title' => array('book')),
|
||||
' AND title = :title ', array(':title'=>'book'));
|
||||
asrt( count( $books ), 1 );
|
||||
$books = R::getRedBean()->find( 'book',
|
||||
array(
|
||||
'title' => array('book', 'book2'),
|
||||
'comment' => array('comment', 'comment2')),
|
||||
' AND title = :title ', array(':title'=>'book'));
|
||||
asrt( count( $books ), 1 );
|
||||
//just check numeric works as well...
|
||||
$books = R::getRedBean()->find( 'book',
|
||||
array(
|
||||
'title' => array('book', 'book2'),
|
||||
'comment' => array('comment', 'comment2')),
|
||||
' AND title = ? ', array('book'));
|
||||
asrt( count( $books ), 1 );
|
||||
//just extra check to verify glue works
|
||||
$books = R::getRedBean()->find( 'book',
|
||||
array(
|
||||
'title' => array('book', 'book2'),
|
||||
'comment' => array('comment', 'comment2')),
|
||||
' ORDER BY id ');
|
||||
asrt( count( $books ), 1 );
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user