BigDb.php
<?php
namespace Tlf\BigDb\Test;
class BigDb extends \Tlf\Tester {
public function prepare(){
require_once($this->file('test/input/BigDbApp/ArticleDb.php'));
require_once($this->file('test/input/BigDbApp/orm/Article.php'));
require_once($this->file('test/input/BigDbApp/orm/Author.php'));
require_once($this->file('test/input/BigDbApp/orm/Tag.php'));
}
public function testQueryWithBind(){
$pdo = $this->getPdo();
$db = new \Tlf\BigDb\Test\ArticlesDb($pdo);
$db->recompile_sql();
$db->migrate(0,1);
$articles = $db->query('article', 'get_where', ['status'=>'public']);
$rows = [];
foreach ($articles as $a){
$rows[] = ['id'=>$a->id, 'title'=>$a->title];
}
$this->test("Binding to SELECT works");
$this->compare_arrays(
[
['id'=>1, 'title'=>'One'],
['id'=>2, 'title'=>'Two'],
['id'=>3, 'title'=>'Three'],
],
$rows
);
$rowCount = $db->exec('article.insert_with_status', ['status'=>'pumpkin']);
$this->test("Binding to INSERT works");
$this->is_int($rowCount);
$dirty_rows = $db->select('article', ['title'=>'Status']);
$rows = [];
foreach ($dirty_rows as $a){
$a = (object)$a;
$rows[] = ['id'=>$a->id, 'title'=>$a->title, 'status'=>$a->status];
}
$this->compare_arrays(
[
['id'=>5, 'title'=>'Status', 'status'=>'pumpkin'],
],
$rows
);
}
public function testQueryArticles(){
$pdo = $this->getPdo();
$db = new \Tlf\BigDb\Test\ArticlesDb($pdo);
$db->recompile_sql();
$db->migrate(0,1);
$articles = $db->query('article', 'get_public');
$rows = [];
foreach ($articles as $a){
$rows[] = ['id'=>$a->id, 'title'=>$a->title];
}
$this->test("Use stored query to get public articles");
$this->compare_arrays(
[ ['id'=>1, 'title'=>'One'],
['id'=>2, 'title'=>'Two'],
['id'=>3, 'title'=>'Three'],
],
$rows
);
$private_articles = $db->query('article', 'get_private');
$rows = [];
foreach ($private_articles as $a){
$rows[] = ['id'=>$a->id, 'title'=>$a->title];
}
$this->test("Use stored query to get private articles");
$this->compare_arrays(
[
['id'=>4, 'title'=>'Four, Private'],
],
$rows
);
}
public function testMain(){
$pdo = $this->getPdo();
$db = new \Tlf\BigDb\Test\ArticlesDb($pdo);
$db->recompile_sql();
$db->migrate(0,1);
$articles = $db->get('article');
$rows = [];
foreach ($articles as $a){
$rows[] = ['id'=>$a->id, 'title'=>$a->title];
}
$this->compare_arrays(
[ ['id'=>1, 'title'=>'One'],
['id'=>2, 'title'=>'Two'],
['id'=>3, 'title'=>'Three'],
['id'=>4, 'title'=>'Four, Private'],
],
$rows
);
}
}