Files
PdoWrapper/tests/DbTest.php
2023-10-30 09:34:16 +01:00

169 lines
4.1 KiB
PHP

<?php
use Kletellier\PdoWrapper\Db;
use Kletellier\PdoWrapper\EventDispatcher;
use Kletellier\PdoWrapper\Model;
use Kletellier\PdoWrapper\QueryBuilder;
test("create db",function () {
$dir = getcwd();
$db = Db::init($dir,["default","contwo"]);
$ret = $db->executeRawQuery("CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT, col1 VARCHAR, date1 DATETIME);");
expect($ret)->toBe(true);
$db2 = Db::getInstance("contwo");
$ret = $db2->executeRawQuery("CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT, col1 VARCHAR, date1 DATETIME);");
expect($ret)->toBe(true);
});
test("insert row",function () {
$row = new Model();
$row->setTable("test");
$row->col1 = "test";
$row->date1 = new \DateTime();
$ret = $row->save();
$row2 = new Model();
$row2->setTable("test");
$row2->col1 = "test2";
$row2->date1 = new \DateTime();
$ret2 = $row2->save();
expect($ret)->toBe(true);
expect($ret2)->toBe(true);
});
test("querybuilder", function() {
$qb = new QueryBuilder("test");
$row = $qb->find(1);
expect($row)->toBeObject();
expect($row->col1)->toBe("test");
expect($row->id)->toBe(1);
$qb->reset();
$rows = $qb->where("id",1)->columns("*")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(1);
$qb->reset();
$rows = $qb->where("id",">",2)->columns("*")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(0);
$qb->reset();
$rows = $qb->whereRaw("id = 1")->columns("*")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(1);
$qb->reset();
$rows = $qb->whereRaw("id = 1")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(1);
});
test("order by", function(){
$qb = new QueryBuilder("test");
$rows = $qb->orderBy("id","DESC")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(2);
expect($rows[0]->col1)->toBe("test2");
});
test("group by", function(){
$qb = new QueryBuilder("test");
$rows = $qb->columns("COUNT(*) as Nb")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(1);
expect($rows[0]->Nb)->toBe(2);
$qb->reset();
$rows = $qb->columns("COUNT(*) as Nb")->groupBy("id")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(2);
expect($rows[0]->Nb)->toBe(1);
});
test("update row", function() {
$qb = new QueryBuilder("test","id");
$row = $qb->find(1);
$row->col1 = "testupdate";
$res = $row->save();
expect($res)->toBe(true);
$qb->reset();
$rows = $qb->where("id",1)->columns("*")->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(1);
expect($rows[0]->col1)->toBe("testupdate");
});
test("event", function() {
$ret = null;
EventDispatcher::on("on.query",function($event,$query) use (&$ret) {
$ret = $query;
});
$qb = new QueryBuilder("test");
$qb->find(1);
expect($ret)->toBeObject();
});
test("where array", function() {
$row3 = new Model();
$row3->setTable("test");
$row3->col1 = "test3";
$row3->date1 = new \DateTime();
$ret3 = $row3->save();
$qb = new QueryBuilder("test");
$all = $qb->get();
expect(count($all))->toBe(3);
$qb->reset();
$between = $qb->whereBetween("id",2,3)->get();
expect(count($between))->toBe(2);
expect($between[0]->id)->toBe(2);
$qb->reset();
$in = $qb->whereIn("id",[2,3])->get();
expect(count($in))->toBe(2);
expect($in[0]->id)->toBe(2);
});
test("second connection", function() {
$row = new Model();
$row->setConnection("contwo");
$row->setTable("test");
$row->col1 = "test";
$row->date1 = new \DateTime();
$ret = $row->save();
$row2 = new Model();
$row2->setConnection("contwo");
$row2->setTable("test");
$row2->col1 = "test2";
$row2->date1 = new \DateTime();
$ret2 = $row2->save();
expect($ret)->toBe(true);
expect($ret2)->toBe(true);
$qb = new QueryBuilder("test","id","contwo");
$rows = $qb->get();
expect($rows)->toBeArray();
expect(count($rows))->toBe(2);
});